From 8b8f499f54e2a27dfd3f83c7255817422edc5b3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Torres=20Dom=C3=ADnguez?= <45337127+ntorresd@users.noreply.github.com> Date: Wed, 22 Mar 2023 18:59:47 -0400 Subject: [PATCH] Merge dev to main (#37) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Documentation of the visualisation and modelling modules * automatic documentation of the visualisation and modeling modules * minor changes to the documentation. Typos and minor bugs corrected. * feat: define a preliminar version of the minimal dataset needed to use the library, now stored in data/data.RDS (data/data_bu.RDS is backup of the old dataset). The prepare_data() function in seroprevalence_data process the dataset creating 5 columns needed for the analysis (age_mean_f, sample_size, prev_obs, prev_obs_lower and prev_obs_upper). This function is tested in test/test_minimal_data and implemented in test_individual_models. * fix: remove unused functions from all modules in preparation for a compiltation test. Remove the corresponding documentation files. Remove the folder R/stantmodels (it's redundant with inst/extdata/stanmodels). Update dependencies in DESCRIPTION (epitrix and cowplot removed). * fix: prepare data_test for compilation of the package * Dev compilation test nicolas (#10) * minor changes in how the summary is shown * change summary message * minor change in extract_summary_model * create template of vignette * delete temporary files * testing vignette * vignette's test * adding workflows sca and r-cmd-check * adding workflows sca and r-cmd-check (#11) * Static code review with lintr in package modules * changing descriotion * adding info into run-model function * adding a script for model comparison * adding a script for model comparison * adding a script for model comparison * adding a script for model comparison * adding a script for model comparison * adding a script for model comparison * adding a script for model comparison * returning logo * adding a script for model comparison * adding a script for model comparison * changing README.Rmd file * changing README.Rmd file * changing README.Rmd file * changing README.Rmd file * adding plots to the readme file * adding plots to the readme file * adding function for plotting raw seroprevalence data * adding the packages name standart * adding data reference for dplyr * update function documentation * Static code analysis for package modules * Static code analysis for the modeling module * Clean test/test_comparison.R. Add a warning for first compilation of the models. Minor sintaxis changes. Change slightly the name of the visualization module. * fix: Calculate the binomial confidence interval from the raw seroprevalence data in function plot_seroprev. The function is tested in test_plot_functions.R. Add compilation line to test_individual models.R. * Compilation test in test_plot_functions.R * minor changes before merging with dev * feat: Add function prepare_bin_data to seroprevalence_data module. This function prepares the data to plot the binomial confidence intervals and allows to remove redundant code in the visualization and modelling modules. * minor changes before merging with dev * fix: corrects the bin size in plot_seroprev(). Minor syntax changes. * doc: Add the corresponding documentation for plot_seroprev() to README.Rmd and README.md including the example image file man/figures/plot_seroprev_example.png * Dev docu mg (#16) * Added examples in core functions documentation * Example of the functions in the documentation * updating links of R-CMD check and Codecov test * Dev doc nicolas (#18) * doc: Update documentation for run_model, save_or_load_model and fit_model. The name of some functions and parameters were changed for the sake of clarity (make_yexpo -> get_exposure_years, save_or_read_model -> save_or_load_model, yexpo -> exposure_years, ). The order of functions definitions were in the modeling module were changed; now they appear in hierarchical order starting from run_model, since this is the most important function in the module. * refac: fit_model_log function removed. Now the function fit_model has an exception that implements the logarithmic model as the removed function used to. fit_model documentation updated. Minor changes in the name of the objects returned by the functions. * doc: modelling module documentation updated. get_posterior_summary function removed (unused). * updating package version and contributors * Dev doc nicolas (#20) * doc: Update documentation for run_model, save_or_load_model and fit_model. The name of some functions and parameters were changed for the sake of clarity (make_yexpo -> get_exposure_years, save_or_read_model -> save_or_load_model, yexpo -> exposure_years, ). The order of functions definitions were in the modeling module were changed; now they appear in hierarchical order starting from run_model, since this is the most important function in the module. * refac: fit_model_log function removed. Now the function fit_model has an exception that implements the logarithmic model as the removed function used to. fit_model documentation updated. Minor changes in the name of the objects returned by the functions. * doc: modelling module documentation updated. get_posterior_summary function removed (unused). * doc: minor changes to the modelling module. Quotation marks added for string variables in the documentation and some minor errors fixed. * Dev docker tests (#22) * 1st version of Dockerfile * Addedd auto dep install for docker container * Refactor docker folder * Changed process to obtain path of stan and RDS files to make it compatible with testhat * First version of tests * Factored testing functions * config.yml now only stores the base path of stan models * Added automated test tasks for vscode * Added more tests * misc changes to vscode tasks * Misc improvements to containers * small fixes to container * misc docker refactor * moved docker scripts to an R file (tested only on Linux) * Temporary change to test github actions on this branch * added testthat to deps * Added devtools to deps * removed erroneous code in unit test * moving config.yml to inst * same * temp changes to github actions files for testing * doc: Update documentation for run_model, save_or_load_model and fit_model. The name of some functions and parameters were changed for the sake of clarity (make_yexpo -> get_exposure_years, save_or_read_model -> save_or_load_model, yexpo -> exposure_years, ). The order of functions definitions were in the modeling module were changed; now they appear in hierarchical order starting from run_model, since this is the most important function in the module. * Added R CMD Check to Docker * refac: fit_model_log function removed. Now the function fit_model has an exception that implements the logarithmic model as the removed function used to. fit_model documentation updated. Minor changes in the name of the objects returned by the functions. * Added more files to rbuildignore * more testing of github actions * misc fixes * testing windows * adding BH dep * Added linking deps for rstan * added suggest deps for rstan * doc: modelling module documentation updated. get_posterior_summary function removed (unused). * Add LinkingTo field (#19) * Add LinkingTo field * Add roxygen comments from rstantools::use_rstan() * temporarily removed some deps * temp remove of this branch from yaml * added vscode configs * Fixes linking errors in R CMD CHeck * Fixed examples * Fixed tests for latest changes in function and var names * added missing deps --------- Co-authored-by: Nicolas Torres Co-authored-by: Hugo Gruson * Now most examples run without errors. Those that not are temporarily enclosed in \dontrun * Documentation of the seroprevalence_data and visualisation modules (#24) Co-authored-by: Nicolás Torres Domínguez <45337127+ntorresd@users.noreply.github.com> * Added test functions for plots * doc: Update author's information in DESCRIPTION. * Added myself to contributors * Removed test/ folder * Added a TODO * More automatic tests * Update .gitignore Added dataframes actual test folder * Fixed save_or_load_model to avoid DLL Bug * same * dontrun some examples * same * misc changes * Some corrections to the documentation * R CMD Check now seems to be working without errors (hopefully :) * Some fixes to module documentation * R CMD Check works without errors (locally) * doc: review and correct visualization module documentation. * doc: minor changes to seroprevalence_data module documentation. * Add function to generate comparative plot of the models (#29) * test: Add plot tests for each model to test_plot_functions. * fix: Change GridExtra dependencie for cowplot (visualization module). Add plots for the 3 models to test_plot_functions. * feat: Add function plot_models_list to the visualization module. This function plots a grid arrange by means of cowplot::plot_grid. A change that is still needed is to add proper default values for n_row and n_col or an exception for the case when they're passed as NULL. An example of the use of this function can be found at the end of test_plot_functions and the corresponding result can be visualized in plot-arrange-models. * Minor changes to individual_models .svg files. * Testing all platforms in github actions * testing coverage * added missing BH dep to make it work on windows * added more missing deps * doc: minor change to fit_model function documentation. * add back the data folder to use mydata object when importing the library. * doc: generate documentation with devtools::document(). * updated RMD Check tasks for vscode and docker to make them more similar to github actions' * Added some deps to avoid warnings in R CMD Check * Updated man pages with roxygen2 * Added dep to TBB to hopefully fix compilation problems in windows * Upgraded rstan to v2.26.11. Added required TBB dep * Updated SVGs and CSVs to match results from rstan v2.26.11 * Added mc-stan as extra repo to support rstan 2.26.11 * Misc fixes * Rename plot_models_list to plot_seroprev_models_grid. * doc: add documentation for plot_seroprev_models_grid function. * Added more docker-related funcionality * Added script to clean SVGs and CSVs when there rstan needs to be updated and tests fail * misc changes * Dev webrd (#32) * test epidemics * changes to vignette * testing epidemics * testing site * improved vignette * improved vignette * improved vignette * improved vignette with contributions * improved vignette with contributions * improved vignette with refernces * improved vignette with references * improved vignette with use cases * improved vignette with use cases * improved vignette with use cases * improved vignette with use cases * improved vignette with use cases * improved vignette with use cases * improved vignette with use cases * improved vignette with use cases * improved vignette with use cases * use cases * use cases * update preloaded package datasets. mydata and serodata contain a copy of the same dataset for the time being. * add additional changes to add multiple datasets to the package. * doc: add datasets documentation files. * use cases * adding veev panama * adding chik 2015 * adding chik 2015 * removing unnecesary data * correcting chik data for nicaragua * correcting chagas data for Colombia * correcting chagas data for Colombia * doc: add mydata and serodata documentation and .R files. * doc: add documentation files for the additional incorporated datasets chagas2012, chik2015 and veev2012. * doc: add documentation files for the additional incorporated datasets chagas2012, chik2015 and veev2012. --------- Co-authored-by: Zulma Cucunubá Co-authored-by: Zulma M Cucunubá * dependencie rstan (>= 2.26.11) changed to rstan (>= 2.21.1). 2.26.11 was generating an error in the installation of the package. * Back to rstan (>= 2.26.11), * Adding multiplatform tests * test: run all tests for the new test dataset. * update plot_functions test figures. * doc: minor change to plot_seroprev_models_grid documentation. * style: Update the name of the functions to specify they refer to seroprevalence models (seroprev sufix). Update the documentation correspondingly. * style: mydata changed to serodata. The current dataset is chagas2012.RDS, but this will be changed to a simulated dataset in the future. * update tdata_test dataset. The dataset now corresponds to chagas2012. This will be changed by a simulated dataset in the future. * removed unused code * Temporarily skipping tests on windows and mac, until we find an efficient way to test in those platforms without worrying about reproducibility * branch change for testing * updated testing snapshots * misch changes * added install deps task for vscode * Added TODOs * Added missing deps * Added missing testthat snapthots * Created new function `expect_similar_dataframes` to test dataframes using snapshots. It is compatible with column_comparation_functions * Increased default tolerance to deal with rstan shenanigans * testing ci * Skipping these tests on CI * Misc changes * Temporary changes while we improve tests * fix: solve minor typo in the name of function prepare_seroprev_data. * Dev zulma vignette (#34) * vignette draft * vignette draft * vignette draft * testing vignette * testing vignette * updating vignette * updating vignette * remove doc of .gitignore --------- Co-authored-by: zmcucunuba Co-authored-by: GeraldineGomez <46997659+GeraldineGomez@users.noreply.github.com> * Dev webrd (#35) * test epidemics * changes to vignette * testing epidemics * testing site * improved vignette * improved vignette * improved vignette * improved vignette with contributions * improved vignette with contributions * improved vignette with refernces * improved vignette with references * improved vignette with use cases * improved vignette with use cases * improved vignette with use cases * improved vignette with use cases * improved vignette with use cases * improved vignette with use cases * improved vignette with use cases * improved vignette with use cases * improved vignette with use cases * use cases * use cases * update preloaded package datasets. mydata and serodata contain a copy of the same dataset for the time being. * add additional changes to add multiple datasets to the package. * doc: add datasets documentation files. * use cases * adding veev panama * adding chik 2015 * adding chik 2015 * removing unnecesary data * correcting chik data for nicaragua * correcting chagas data for Colombia * correcting chagas data for Colombia * doc: add mydata and serodata documentation and .R files. * doc: add documentation files for the additional incorporated datasets chagas2012, chik2015 and veev2012. * doc: add documentation files for the additional incorporated datasets chagas2012, chik2015 and veev2012. * changing rstan version from 2.26.11 (non existen) to > 2.21.1 * simulated fake data * refac: test_sim_data is refactorized. I cleaned the code and added a function to plot the simulated datasets obtained for each foi example. * Save selected simulated data for scenarios A,B and D to tests/sim_data. I took all the grouped datasets for n=5. * chik-seroinference-simulations --------- Co-authored-by: Zulma Cucunubá Co-authored-by: Zulma M Cucunubá * fix: function get_exposure_years was returning ages that were not consistent with the survey time and the minimal birth_year in the dataset. I changed the name of the function to get_exposure_ages for consistency with the output. * fix: description typo. * change the name of get_exposure_years to get_exposure_ages (for lack of a better name). Update mydata to serodata. Reran all tests (slight changes in the tests results). * fix: updating functions and variables names in the vignettes files. This was causing the R-CMD github checks to fail. * Removed dev from actions scripts * Updated badges in README.Rmd. Updated README.md with latest changes from README.Rmd * fix: add default value for seroprev_data to the prepare_seroprev_data function. * Update prepare_seroprev_data documentation. * doc: minor corrections to simulated_data.Rmd. * webpage publication * fixed bug "recompiling to avoid crashing R session" * Update use_cases.Rmd * Add simulated data generation (#36) * Add conditional to prepare_seroprev_data. In some cases, like when datasets are being simulated, columns age_mean_f and birt_year need to be added prior to the data preparation in order to compute the exposure matrix. * refac: modification of get_exposure_matrix. Now it does not depend on get_exposure_ages explicitely, this was a redundant dependency. * testing changes in extract_seroprev_model_summary. * feat: add functions get_sim_counts, generate_sim_data and generate_sim_data_grouped to module seroprevalence_data. This functions can be used to generate simulated datasets like is shown in test_simdata_caseA.R * add results obtained by running the test test_simdata_caseA.R * delete redundant or unnecessary tests and their corresponding results. * remove old simulated data. * Add simulated data test script (tests/testthat/test_simdata_cases.R) and results for a constant foi (case A) and for a stepwise decreasing foi (case B). * doc: add documentation for the data simulation functions. * Add title identifying the specific case of each simulation for the test test_simdata_cases.R. Update the corresponding figures. * Save simulated data into testthat/exdata/ for cases A and B. They are stored automatically on running test_simdata_cases. * remove unused man files. --------- Co-authored-by: megamezl Co-authored-by: tracelac <110865079+tracelac@users.noreply.github.com> Co-authored-by: zmcucunuba Co-authored-by: GeraldineGomez <46997659+GeraldineGomez@users.noreply.github.com> Co-authored-by: Miguel Enrique Gámez López <79583759+megamezl@users.noreply.github.com> Co-authored-by: Jaime Pavlich-Mariscal Co-authored-by: Hugo Gruson Co-authored-by: JAIME ANDRÉS PAVLICH MARISCAL Co-authored-by: Zulma Cucunubá --- .Rbuildignore | 14 + .github/.gitignore | 1 + .github/CONTRIBUTING.md | 40 + .github/ISSUE_TEMPLATE/bug_report.md | 26 + .github/ISSUE_TEMPLATE/feature_request.md | 17 + .../pull_request_template.md | 25 + .github/workflows/R-CMD-check.yaml | 51 ++ .github/workflows/pkgdown.yaml | 46 + .github/workflows/test-coverage.yaml | 32 + .gitignore | 12 +- .lintr | 4 + .vscode/settings.json | 3 + .vscode/tasks.json | 43 + DESCRIPTION | 62 +- LICENSE | 21 + NAMESPACE | 28 +- R/chagas2012.R | 15 + R/chik2015.R | 15 + R/model_comparison.R | 97 ++- R/modelling.R | 786 +++++++++--------- R/serodata.R | 15 + R/serofoi_package.R | 6 + R/seroprevalence_data.R | 259 +++++- R/test_vignettes.R | 4 + R/veev2012.R | 15 + R/visualisation.R | 248 ------ R/visualization.R | 417 ++++++++++ README.Rmd | 196 ++++- README.md | 249 +++++- _pkgdown.yml | 4 + config.yml | 10 - data/chagas2012.RDS | Bin 0 -> 646 bytes data/chagas2012.RData | Bin 0 -> 666 bytes data/chik2015.RDS | Bin 0 -> 1102 bytes data/chik2015.RData | Bin 0 -> 1119 bytes data/data.RDS | Bin 468 -> 0 bytes data/fake_data_1569526695.RDS | Bin 0 -> 5621 bytes data/mydata.RData | Bin 0 -> 662 bytes data/serodata.RData | Bin 0 -> 663 bytes data/veev2012.RDS | Bin 0 -> 395 bytes data/veev2012.RData | Bin 0 -> 411 bytes doc/serofoi.R | 12 + doc/serofoi.Rmd | 24 + doc/serofoi.html | 365 ++++++++ inst/config.yml | 2 + inst/extdata/config.yml | 10 - man/chagas2012.Rd | 19 + man/chik2015.Rd | 19 + man/extract_seroprev_model_summary.Rd | 39 + man/extract_summary_model.Rd | 19 - man/figures/README-data_test-1.png | Bin 0 -> 19013 bytes man/figures/README-ex-1.png | Bin 0 -> 18369 bytes man/figures/README-model_comp-1.png | Bin 0 -> 87255 bytes man/figures/README-plot_model-1.png | Bin 0 -> 104455 bytes man/figures/README-plot_seroprev_model-1.png | Bin 0 -> 75178 bytes man/figures/plot_foi_example.png | Bin 0 -> 20967 bytes man/figures/plot_model_example.png | Bin 0 -> 34616 bytes man/figures/plot_rhats_example.png | Bin 0 -> 23723 bytes man/figures/plot_seroprev_example.png | Bin 0 -> 16962 bytes man/figures/plot_seroprev_fitted_example.png | Bin 0 -> 36441 bytes man/figures/serofoi-logo.png | Bin 0 -> 55436 bytes man/fit_model.Rd | 40 - man/fit_model_log.Rd | 40 - man/fit_seroprev_model.Rd | 70 ++ man/generate_sim_data.Rd | 37 + man/get_comparison_table.Rd | 38 + man/get_exposure_ages.Rd | 23 + man/get_exposure_matrix.Rd | 16 +- man/get_posterior_summary.Rd | 17 - man/get_prev_expanded.Rd | 19 +- man/get_sim_counts.Rd | 29 + man/get_table_rhats.Rd | 9 +- man/group_sim_data.Rd | 44 + man/make_yexpo.Rd | 17 - man/plot_foi.Rd | 25 +- man/plot_info_table.Rd | 20 +- man/plot_model.Rd | 23 - man/plot_rhats.Rd | 26 +- man/plot_seroprev.Rd | 43 +- man/plot_seroprev_fitted.Rd | 30 + man/plot_seroprev_model.Rd | 35 + man/plot_seroprev_models_grid.Rd | 34 + man/prepare_bin_data.Rd | 43 + man/prepare_seroprev_data.Rd | 51 ++ man/run_model.Rd | 35 - man/run_seroprev_model.Rd | 72 ++ man/save_or_load_model.Rd | 27 + man/save_or_read_model.Rd | 16 - man/serodata.Rd | 19 + man/serofoi-package.Rd | 22 +- man/veev2012.Rd | 19 + references.bib | 30 + test/test_individual_models.R | 48 -- test/test_vignette.R | 14 + test/testing_vignette.R | 16 + tests/docker/.bashrc | 1 + tests/docker/Dockerfile | 13 + tests/docker/check.sh | 2 + tests/docker/docker_scripts.R | 33 + tests/docker/install_deps.sh | 3 + tests/docker/run_tests.sh | 2 + tests/testepidemics.R | 2 + tests/testthat.R | 4 + .../testthat/_snaps/comparison/comp_table.csv | 4 + tests/testthat/clean_expected_files.R | 14 + .../extdata/case_A_sim_data_grouped.csv | 11 + .../extdata/case_A_sim_data_no_grouped.csv | 51 ++ .../extdata/case_B_sim_data_grouped.csv | 11 + .../extdata/case_B_sim_data_no_grouped.csv | 51 ++ tests/testthat/extdata/data.RDS | Bin 0 -> 646 bytes tests/testthat/extdata/data.RData | Bin 0 -> 660 bytes tests/testthat/extdata/data_test.R | 17 + tests/testthat/test_comparison.R | 63 ++ tests/testthat/test_individual_models.R | 58 ++ tests/testthat/test_plot_functions.R | 68 ++ tests/testthat/test_simdata_cases.R | 130 +++ tests/testthat/testing_utils.R | 69 ++ vignettes/references.bib | 60 ++ vignettes/serofoi.Rmd | 24 + vignettes/simulated_data.Rmd | 239 ++++++ .../figure-html/model_comp_cha-1.png | Bin 0 -> 68916 bytes vignettes/tmp.txt | 0 vignettes/use_cases.Rmd | 235 ++++++ 123 files changed, 4438 insertions(+), 1044 deletions(-) create mode 100644 .github/.gitignore create mode 100644 .github/CONTRIBUTING.md create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md create mode 100644 .github/PULL_REQUEST_TEMPLATE/pull_request_template.md create mode 100644 .github/workflows/R-CMD-check.yaml create mode 100644 .github/workflows/pkgdown.yaml create mode 100644 .github/workflows/test-coverage.yaml create mode 100644 .lintr create mode 100644 .vscode/settings.json create mode 100644 .vscode/tasks.json create mode 100644 LICENSE create mode 100644 R/chagas2012.R create mode 100644 R/chik2015.R create mode 100644 R/serodata.R create mode 100644 R/test_vignettes.R create mode 100644 R/veev2012.R delete mode 100644 R/visualisation.R create mode 100644 R/visualization.R create mode 100644 _pkgdown.yml delete mode 100644 config.yml create mode 100644 data/chagas2012.RDS create mode 100644 data/chagas2012.RData create mode 100644 data/chik2015.RDS create mode 100644 data/chik2015.RData delete mode 100644 data/data.RDS create mode 100644 data/fake_data_1569526695.RDS create mode 100644 data/mydata.RData create mode 100644 data/serodata.RData create mode 100644 data/veev2012.RDS create mode 100644 data/veev2012.RData create mode 100644 doc/serofoi.R create mode 100644 doc/serofoi.Rmd create mode 100644 doc/serofoi.html create mode 100644 inst/config.yml delete mode 100644 inst/extdata/config.yml create mode 100644 man/chagas2012.Rd create mode 100644 man/chik2015.Rd create mode 100644 man/extract_seroprev_model_summary.Rd delete mode 100644 man/extract_summary_model.Rd create mode 100644 man/figures/README-data_test-1.png create mode 100644 man/figures/README-ex-1.png create mode 100644 man/figures/README-model_comp-1.png create mode 100644 man/figures/README-plot_model-1.png create mode 100644 man/figures/README-plot_seroprev_model-1.png create mode 100644 man/figures/plot_foi_example.png create mode 100644 man/figures/plot_model_example.png create mode 100644 man/figures/plot_rhats_example.png create mode 100644 man/figures/plot_seroprev_example.png create mode 100644 man/figures/plot_seroprev_fitted_example.png create mode 100644 man/figures/serofoi-logo.png delete mode 100644 man/fit_model.Rd delete mode 100644 man/fit_model_log.Rd create mode 100644 man/fit_seroprev_model.Rd create mode 100644 man/generate_sim_data.Rd create mode 100644 man/get_comparison_table.Rd create mode 100644 man/get_exposure_ages.Rd delete mode 100644 man/get_posterior_summary.Rd create mode 100644 man/get_sim_counts.Rd create mode 100644 man/group_sim_data.Rd delete mode 100644 man/make_yexpo.Rd delete mode 100644 man/plot_model.Rd create mode 100644 man/plot_seroprev_fitted.Rd create mode 100644 man/plot_seroprev_model.Rd create mode 100644 man/plot_seroprev_models_grid.Rd create mode 100644 man/prepare_bin_data.Rd create mode 100644 man/prepare_seroprev_data.Rd delete mode 100644 man/run_model.Rd create mode 100644 man/run_seroprev_model.Rd create mode 100644 man/save_or_load_model.Rd delete mode 100644 man/save_or_read_model.Rd create mode 100644 man/serodata.Rd create mode 100644 man/veev2012.Rd create mode 100644 references.bib delete mode 100644 test/test_individual_models.R create mode 100644 test/test_vignette.R create mode 100644 test/testing_vignette.R create mode 100644 tests/docker/.bashrc create mode 100644 tests/docker/Dockerfile create mode 100755 tests/docker/check.sh create mode 100644 tests/docker/docker_scripts.R create mode 100755 tests/docker/install_deps.sh create mode 100755 tests/docker/run_tests.sh create mode 100644 tests/testepidemics.R create mode 100644 tests/testthat.R create mode 100644 tests/testthat/_snaps/comparison/comp_table.csv create mode 100644 tests/testthat/clean_expected_files.R create mode 100644 tests/testthat/extdata/case_A_sim_data_grouped.csv create mode 100644 tests/testthat/extdata/case_A_sim_data_no_grouped.csv create mode 100644 tests/testthat/extdata/case_B_sim_data_grouped.csv create mode 100644 tests/testthat/extdata/case_B_sim_data_no_grouped.csv create mode 100644 tests/testthat/extdata/data.RDS create mode 100644 tests/testthat/extdata/data.RData create mode 100644 tests/testthat/extdata/data_test.R create mode 100644 tests/testthat/test_comparison.R create mode 100644 tests/testthat/test_individual_models.R create mode 100644 tests/testthat/test_plot_functions.R create mode 100644 tests/testthat/test_simdata_cases.R create mode 100644 tests/testthat/testing_utils.R create mode 100644 vignettes/references.bib create mode 100644 vignettes/serofoi.Rmd create mode 100644 vignettes/simulated_data.Rmd create mode 100644 vignettes/simulated_data_files/figure-html/model_comp_cha-1.png delete mode 100644 vignettes/tmp.txt create mode 100644 vignettes/use_cases.Rmd diff --git a/.Rbuildignore b/.Rbuildignore index 91114bf2..158350c7 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -1,2 +1,16 @@ ^.*\.Rproj$ ^\.Rproj\.user$ +^.*\.sh +^.vscode$ +^LICENSE\.md$ +^\.github$ +^codecov\.yml$ +^README\.Rmd$ +^_pkgdown\.yml$ +^docs$ +^pkgdown$ +^CODE_OF_CONDUCT\.md$ +^doc$ +^Meta$ +^.lintr$ +^.*/tests/docker/.*$ diff --git a/.github/.gitignore b/.github/.gitignore new file mode 100644 index 00000000..2d19fc76 --- /dev/null +++ b/.github/.gitignore @@ -0,0 +1 @@ +*.html diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md new file mode 100644 index 00000000..2e5cdb42 --- /dev/null +++ b/.github/CONTRIBUTING.md @@ -0,0 +1,40 @@ +# Contributing to serofoi + +This outlines how to propose a change to serofoi. + +## Making changes + +If you want to make a change, it's a good idea to first file an issue and make sure someone from the team agrees that it’s needed. +If you’ve found a bug, please file an issue that illustrates the bug with a minimal +[reprex](https://www.tidyverse.org/help/#reprex) (this will also help you write a unit test, if needed). See [bug report template](../.github/ISSUE_TEMPLATE/bug_report.md). If you have a feature request see [feature request](../.github/ISSUE_TEMPLATE/feature_request.md). + +### Pull request process + +See [pull request template](../.github/PULL_REQUEST_TEMPLATE/pull_request_template.md) + +* Fork the package and clone onto your computer. If you haven't done this before, we recommend using `usethis::create_from_github("epiverse-trace/serofoi", fork = TRUE)`. + +* Install all development dependencies with `devtools::install_dev_deps()`, and then make sure the package passes R CMD check by running `devtools::check()`. + If R CMD check doesn't pass cleanly, it's a good idea to ask for help before continuing. +* Create a Git branch for your pull request (PR). We recommend using `usethis::pr_init("brief-description-of-change")`. + +* Make your changes, commit to git, and then create a PR by running `usethis::pr_push()`, and following the prompts in your browser. + The title of your PR should briefly describe the change. + The body of your PR should contain `Fixes #issue-number`. + +* For user-facing changes, add a bullet to the top of `NEWS.md` (i.e. just below the first header). Follow the style described in . + +### Code style + +* New code should follow the tidyverse [style guide](https://style.tidyverse.org). + You can use the [styler](https://CRAN.R-project.org/package=styler) package to apply these styles, but please don't restyle code that has nothing to do with your PR. + +* We use [roxygen2](https://cran.r-project.org/package=roxygen2), with [Markdown syntax](https://cran.r-project.org/web/packages/roxygen2/vignettes/rd-formatting.html), for documentation. + +* We use [testthat](https://cran.r-project.org/package=testthat) for unit tests. + Contributions with test cases included are easier to accept. + +## Code of Conduct + +Please note that the serofoi project is released with a +[Contributor Code of Conduct](https://github.com/epiverse-trace/.github/blob/main/CODE_OF_CONDUCT.md). By contributing to this project you agree to abide by its terms. diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 00000000..1050d1d9 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,26 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: '' +assignees: '' + +--- + +Please place an "x" in all the boxes that apply +--------------------------------------------- + + - [ ] I have the most recent version of linelist and R + - [ ] I have found a bug + - [ ] I have a [reproducible example](http://reprex.tidyverse.org/articles/reprex-dos-and-donts.html) + - [ ] I want to request a new feature + +-------- + +Please include a brief description of the problem with a code example: + +```r +# insert reprex here +``` + +--------- diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 00000000..df81be2b --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,17 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: '' +assignees: '' + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Additional context** +Add any other context or screenshots about the feature request here. diff --git a/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md b/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md new file mode 100644 index 00000000..45e9f48b --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md @@ -0,0 +1,25 @@ +* **Please check if the PR fulfills these requirements** + +- [ ] I have read the CONTRIBUTING guidelines +- [ ] The commit message follows our guidelines +- [ ] Tests for the changes have been added (for bug fixes / features) +- [ ] Docs have been added / updated (for bug fixes / features) + + +* **What kind of change does this PR introduce?** (Bug fix, feature, docs update, ...) + + + +* **What is the current behavior?** (You can also link to an open issue here) + + + +* **What is the new behavior (if this is a feature change)?** + + + +* **Does this PR introduce a breaking change?** (What changes might users need to make in their application due to this PR?) + + + +* **Other information**: diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml new file mode 100644 index 00000000..fbfc2e01 --- /dev/null +++ b/.github/workflows/R-CMD-check.yaml @@ -0,0 +1,51 @@ +# Workflow derived from https://github.com/r-lib/actions/tree/v2/examples +# Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help +on: + push: + branches: [main, master] + pull_request: + branches: [main, master] + +name: R-CMD-check + +jobs: + R-CMD-check: + runs-on: ${{ matrix.config.os }} + + name: ${{ matrix.config.os }} (${{ matrix.config.r }}) + + strategy: + fail-fast: false + matrix: + config: + # - {os: macos-latest, r: 'release'} + # - {os: windows-latest, r: 'release'} + # - {os: ubuntu-latest, r: 'devel', http-user-agent: 'release'} + - {os: ubuntu-latest, r: 'release'} + # - {os: ubuntu-latest, r: 'oldrel-1'} + + env: + GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} + R_KEEP_PKG_SOURCE: yes + + steps: + - uses: actions/checkout@v3 + + - uses: r-lib/actions/setup-pandoc@v2 + + - uses: r-lib/actions/setup-r@v2 + with: + r-version: ${{ matrix.config.r }} + http-user-agent: ${{ matrix.config.http-user-agent }} + use-public-rspm: true + extra-repositories: https://mc-stan.org/r-packages/ + + - uses: r-lib/actions/setup-r-dependencies@v2 + with: + extra-packages: any::rcmdcheck + needs: check + + - uses: r-lib/actions/check-r-package@v2 + with: + upload-snapshots: true + error-on: '"error"' diff --git a/.github/workflows/pkgdown.yaml b/.github/workflows/pkgdown.yaml new file mode 100644 index 00000000..087f0b05 --- /dev/null +++ b/.github/workflows/pkgdown.yaml @@ -0,0 +1,46 @@ +# Workflow derived from https://github.com/r-lib/actions/tree/v2/examples +# Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help +on: + push: + branches: [main, master] + pull_request: + branches: [main, master] + release: + types: [published] + workflow_dispatch: + +name: pkgdown + +jobs: + pkgdown: + runs-on: ubuntu-latest + # Only restrict concurrency for non-PR jobs + concurrency: + group: pkgdown-${{ github.event_name != 'pull_request' || github.run_id }} + env: + GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} + steps: + - uses: actions/checkout@v3 + + - uses: r-lib/actions/setup-pandoc@v2 + + - uses: r-lib/actions/setup-r@v2 + with: + use-public-rspm: true + + - uses: r-lib/actions/setup-r-dependencies@v2 + with: + extra-packages: any::pkgdown, local::. + needs: website + + - name: Build site + run: pkgdown::build_site_github_pages(new_process = FALSE, install = FALSE) + shell: Rscript {0} + + - name: Deploy to GitHub pages 🚀 + if: github.event_name != 'pull_request' + uses: JamesIves/github-pages-deploy-action@v4.4.1 + with: + clean: false + branch: gh-pages + folder: docs diff --git a/.github/workflows/test-coverage.yaml b/.github/workflows/test-coverage.yaml new file mode 100644 index 00000000..b0db8768 --- /dev/null +++ b/.github/workflows/test-coverage.yaml @@ -0,0 +1,32 @@ +# Workflow derived from https://github.com/r-lib/actions/tree/v2/examples +# Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help +on: + push: + branches: [main, master] + pull_request: + branches: [main, master] + +name: test-coverage + +jobs: + test-coverage: + runs-on: ubuntu-latest + env: + GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} + + steps: + - uses: actions/checkout@v2 + + - uses: r-lib/actions/setup-r@v2 + with: + use-public-rspm: true + extra-repositories: https://mc-stan.org/r-packages/ + + - uses: r-lib/actions/setup-r-dependencies@v2 + with: + extra-packages: any::covr + needs: coverage + + - name: Test coverage + run: covr::codecov(quiet = FALSE) + shell: Rscript {0} diff --git a/.gitignore b/.gitignore index ba3114cc..aa3ed4e1 100644 --- a/.gitignore +++ b/.gitignore @@ -44,4 +44,14 @@ vignettes/*.pdf .DS_Store # .RDS Stan compilation files -inst/extdata/stanmodels/*.RDS \ No newline at end of file +inst/extdata/stanmodels/*.RDS +inst/extdata/stanmodels/*.rds +inst/doc +docs +/Meta/ +_snaps/ +!tests/testthat/_snaps +tests/testthat/Rplots.pdf +t, +tests/testthat/extdata/plots/actual/*.png +tests/testthat/extdata/dataframes/actual/*.csv \ No newline at end of file diff --git a/.lintr b/.lintr new file mode 100644 index 00000000..a1b0fdc3 --- /dev/null +++ b/.lintr @@ -0,0 +1,4 @@ +linters: with_defaults( + line_length_linter=line_length_linter(120), + object_usage_linter=NULL, + commented_code_linter=NULL) diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..4950e189 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "scm.diffDecorationsIgnoreTrimWhitespace": "true" +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 00000000..09f44efb --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,43 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "type": "R", + "code": [ + "devtools::install_deps(upgrade=TRUE)" + ], + "problemMatcher": [], + "group": { + "kind": "none", + "isDefault": true + }, + "label": "R: upgrade deps" + }, + { + "type": "R", + "code": [ + "devtools::test_active_file(\"${file}\")" + ], + "problemMatcher": [ + "$testthat" + ], + "group": { + "kind": "test", + "isDefault": true + }, + "label": "R: Test Active File" + }, + { + "type": "R", + "code": [ + "devtools::check(manual=FALSE, cran = TRUE, error_on=c('error'))" + ], + "problemMatcher": [], + "group": { + "kind": "test", + "isDefault": true + }, + "label": "R Package: Check Strict" + } + ] +} \ No newline at end of file diff --git a/DESCRIPTION b/DESCRIPTION index b4191615..58fdf6f4 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,26 +1,72 @@ Package: serofoi Type: Package -Title: Estimates the Force-of-Infection of a given pathogen from population based sero-prevalence studies. +Title: Estimates the Force-of-Infection of a given pathogen from population based sero-prevalence studies Version: 0.1.0 -Author: Zulma M. Cucunubá, Miguel Gamez and Nicolás Torres -Maintainer: The package maintainer -Description: Provides functions for estimate the Force-of-Infection of a given pathogen from population based sero-prevalence studies on a bayesian framework. +Authors@R: + c( + person( + given = "Zulma M.", + family = "Cucunubá", + role = c("aut", "cre"), + email = "zulma.cucunuba@javeriana.edu.co", + comment = c(ORCID = "https://orcid.org/0000-0002-8165-3198") + ), + person( + given = "Nicolás", + family = "Torres", + role = c("aut") + ), + person( + given = "Ben", + family = "Lambert", + role = c("aut") + ), + person( + given = "Pierre", + family = "Nouvellet", + role = c("aut") + ) + ) +Contributor: Miguel Gámez, Geraldine Gómez, Jaime A. Pavlich-Mariscal +Maintainer: The package maintainer +Description: R package to estimate time-varying Force-of-Infection of a given pathogen from population based sero-prevalence studies using a bayesian framework. License: MIT + file LICENSE Encoding: UTF-8 LazyData: true -RoxygenNote: 7.2.2 +RoxygenNote: 7.2.3 +Depends: + R (>= 3.5.0) Imports: config, - rstan, + rstan (>= 2.21.1), + StanHeaders, tidyverse, reshape2, bayesplot, loo, - gridExtra, + cowplot, Hmisc, dplyr, - gsubfn + gsubfn, + usethis, + testthat (>= 3.0.0), + vdiffr (>= 1.0.0), + devtools, + methods, + Rcpp, + ggplot2, + BH, + RcppEigen, + RcppParallel, + pracma, + purrr Suggests: knitr, rmarkdown VignetteBuilder: knitr +URL: https://trace-lac.github.io/serofoi/ +Additional_repositories: + https://mc-stan.org/r-packages/ +Config/testthat/edition: 3 +Remotes: + tidyverse/purrr diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..c1893295 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 TRACE-LAC + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/NAMESPACE b/NAMESPACE index 63942dfe..1c975746 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -1,19 +1,31 @@ # Generated by roxygen2: do not edit by hand -export(extract_summary_model) -export(fit_model) -export(fit_model_log) +export(extract_seroprev_model_summary) +export(fit_seroprev_model) +export(generate_sim_data) +export(get_comparison_table) +export(get_exposure_ages) export(get_exposure_matrix) -export(get_posterior_summary) export(get_prev_expanded) +export(get_sim_counts) export(get_table_rhats) -export(make_yexpo) +export(group_sim_data) export(plot_foi) export(plot_info_table) -export(plot_model) export(plot_rhats) export(plot_seroprev) -export(prepare_data) -export(run_model) +export(plot_seroprev_fitted) +export(plot_seroprev_model) +export(plot_seroprev_models_grid) +export(prepare_bin_data) +export(prepare_seroprev_data) +export(run_seroprev_model) +export(save_or_load_model) +import(Rcpp) import(dplyr) +import(methods) importFrom(dplyr,"%>%") +importFrom(graphics,text) +importFrom(rstan,sampling) +importFrom(stats,quantile) +importFrom(utils,read.table) diff --git a/R/chagas2012.R b/R/chagas2012.R new file mode 100644 index 00000000..e58bc111 --- /dev/null +++ b/R/chagas2012.R @@ -0,0 +1,15 @@ +#' Seroprevalence data on serofoi +#' +#' Data from a serological surveys +#' +#' @docType data +#' +#' @usage chagas2012 +#' +#' @format An object of class \code{"cross"}; see \code{\link[qtl]{read.cross}}. +#' +#' @keywords datasets +#' +#' @examples +#' chagas2012 +"chagas2012" \ No newline at end of file diff --git a/R/chik2015.R b/R/chik2015.R new file mode 100644 index 00000000..e72f7357 --- /dev/null +++ b/R/chik2015.R @@ -0,0 +1,15 @@ +#' Seroprevalence data on serofoi +#' +#' Data from a serological surveys +#' +#' @docType data +#' +#' @usage chik2015 +#' +#' @format An object of class \code{"cross"}; see \code{\link[qtl]{read.cross}}. +#' +#' @keywords datasets +#' +#' @examples +#' chik2015 +"chik2015" \ No newline at end of file diff --git a/R/model_comparison.R b/R/model_comparison.R index 0dcfb81d..0e62231b 100644 --- a/R/model_comparison.R +++ b/R/model_comparison.R @@ -1,18 +1,105 @@ #' Get Table Rhats #' -#' Función que hace la tabla de los rhats #' Function that makes the rhats table #' @param model_object model_object #' @return rhats table +#' @examples +#' \dontrun{ +#' seroprev_data <- prepare_seroprev_data(seroprev_data = serodata, alpha = 0.05) +#' model_object <- run_seroprev_model( +#' seroprev_data = seroprev_data, seroprev_model_name = "constant_foi_bi") +#' get_table_rhats (model_object) +#' } #' @export get_table_rhats <- function(model_object) { - rhats <- bayesplot::rhat(model_object$fit, "foi") if (any(is.nan(rhats))) { - rhats[which(is.nan(rhats))] <- 0} - model_rhats <- data.frame(year = model_object$real_yexpo, rhat = rhats) - model_rhats$rhat[model_rhats$rhat == 0] <- NA # This is because I'm not estimating these foi values + rhats[which(is.nan(rhats))] <- 0 + } + model_rhats <- data.frame(year = model_object$exposure_years, rhat = rhats) + model_rhats$rhat[model_rhats$rhat == 0] <- NA return(model_rhats) } + +#' Get Model Table Comparison +#' Provides a table with statistics for comparison between models and selection +#' @param model_objects_list model_objects to compare +#' @return comparison table +#' @examples +#' \dontrun{ +#' data_test <- prepare_seroprev_data(serodata) +#' model_0 <- run_seroprev_model(seroprev_data = data_test, +#' seroprev_model_name = "constant_foi_bi", +#' n_iters = 1000) +#' +#' model_1 <- run_seroprev_model(seroprev_data = data_test, +#' seroprev_model_name = "continuous_foi_normal_bi", +#' n_iters = 1000) +#' +#' model_2 <- run_seroprev_model(seroprev_data = data_test, +#' seroprev_model_name = "continuous_foi_normal_log", +#' n_iters = 1000) +#' comp_table <- get_comparison_table(model_objects_list = c(m0 = model_0, +#' m1 = model_1, +#' m2 = model_2)) +#' } +#' @export +get_comparison_table <- function(model_objects_list) { + + + dif_m0_m1 <- loo::loo_compare(model_objects_list$m0.loo_fit, + model_objects_list$m1.loo_fit) + + dif_m0_m2 <- loo::loo_compare(model_objects_list$m0.loo_fit, + model_objects_list$m2.loo_fit) + + # Aquí pendiente revisar desde la función summary_model + # No estoy segura que este parámetro venga bien desde allá ni tampoco que esté bien acá + + # model_comp$better <- NA + # model_comp$better[model_comp$difference > 0] <- 'Yes' + # model_comp$better[model_comp$difference <= 0] <-'No' + # model_comp$better[model_comp$model == 'constant_foi_bi'] <- "-" + + + model_objects_list$m0.model_summary$difference <- 0 + model_objects_list$m0.model_summary$diff_se <- 1 + + model_objects_list$m1.model_summary$difference <- dif_m0_m1[1] + model_objects_list$m1.model_summary$diff_se <- dif_m0_m1[2] + + model_objects_list$m2.model_summary$difference <- dif_m0_m2[1] + model_objects_list$m2.model_summary$diff_se <- dif_m0_m2[2] + + model_comp <- rbind(model_objects_list$m0.model_summary, + model_objects_list$m1.model_summary, + model_objects_list$m2.model_summary) + + model_comp$converged[model_comp$elpd == -1.000e+10] <- 'No' # + ds_one <- dplyr::filter(model_comp, converged == 'Yes') + print(paste0('number of converged models = ', NROW(ds_one))) + + # Ordering the best model based on elpd values + elps_order <- rev(sort(ds_one$elpd)) + best <- dplyr::filter(model_comp, elpd %in% elps_order) %>% dplyr::arrange(-.data$elpd)# This is to make sure I keep only three + best_model1 <- as.character(best$model[1]) + best_model2 <- as.character(best$model[2]) + best_model3 <- as.character(best$model[3]) + + model_comp$best_elpd <- NA + model_comp$best_elpd[model_comp$model == best_model1] <- 1 + model_comp$best_elpd[model_comp$model == best_model2] <- 2 + model_comp$best_elpd[model_comp$model == best_model3] <- 3 + model_comp <- model_comp %>% dplyr::arrange(.data$best_elpd) + + # Estimating p-values to check the difference between the models m0 and other models is actually important + model_comp <- model_comp %>% dplyr::mutate(pvalue = 1 - stats::pnorm(difference/diff_se,0,1)) + model_comp$pvalue[is.nan(model_comp$pvalue)] <- 1 + model_comp$pvalue <- model_comp$pvalue * stats::runif(NROW(model_comp), min = 1, max = 1.0001)# I make this just to ensure I get different values + model_comp$pvalue[model_comp$model == 'constant_foi_bi'] <- 0 + model_comp$pvalue <- round(model_comp$pvalue, 6) + + return(model_comp) +} diff --git a/R/modelling.R b/R/modelling.R index cb24d80e..a0c5bea4 100644 --- a/R/modelling.R +++ b/R/modelling.R @@ -1,459 +1,463 @@ -#' Get Exposure Matrix +# TODO For some reason, the examples cannot access the serodata variable +#' Run the specified stan model for the force-of-infection #' -#' Function that generates the exposure matrix -#' @param model_data refers to the model data that has been selected -#' @param yexpo what the make yexpo function returns -#' @return exposure_output +#' @param seroprev_data A data frame containing the data from a seroprevalence survey. +#' This data frame must contain the following columns: +#' \tabular{ll}{ +#' \code{survey} \tab survey Label of the current survey \cr \tab \cr +#' \code{total} \tab Number of samples for each age group\cr \tab \cr +#' \code{counts} \tab Number of positive samples for each age group\cr \tab \cr +#' \code{age_min} \tab age_min \cr \tab \cr +#' \code{age_max} \tab age_max \cr \tab \cr +#' \code{year_init} \tab year_init \cr \tab \cr +#' \code{year_end} \tab year_end \cr \tab \cr +#' \code{tsur} \tab Year in which the survey took place \cr \tab \cr +#' \code{country} \tab The country where the survey took place \cr \tab \cr +#' \code{test} \tab The type of test taken \cr \tab \cr +#' \code{antibody} \tab antibody \cr \tab \cr +#' \code{age_mean_f} \tab Floor value of the average between age_min and age_max \cr \tab \cr +#' \code{sample_size} \tab The size of the sample \cr \tab \cr +#' \code{birth_year} \tab The year in which the individuals of each age group were bornt \cr \tab \cr +#' \code{prev_obs} \tab Observed prevalence \cr \tab \cr +#' \code{prev_obs_lower} \tab Lower limit of the confidence interval for the observed prevalence \cr \tab \cr +#' \code{prev_obs_upper} \tab Upper limit of the confidence interval for the observed prevalence \cr \tab \cr +#' } +#' The last six colums can be added to \code{seroprev_data} by means of the function \code{\link{prepare_seroprev_data}}. +#' @param seroprev_model_name Name of the selected model. Current version provides three options: +#' \describe{ +#' \item{\code{"constant_foi_bi"}}{Runs a constant model} +#' \item{\code{"continuous_foi_normal_bi"}}{Runs a normal model} +#' \item{\code{"continuous_foi_normal_log"}}{Runs a normal logarithmic model} +#' } +#' @param n_iters Number of interations for eah chain including the warmup. \code{iter} in \link[rstan]{sampling}. +#' @param n_thin Positive integer specifying the period for saving samples. \code{thin} in \link[rstan]{sampling}. +#' @param delta Real number between 0 and 1 that represents the target average acceptance probability. +#' Increasing the value of \code{delta} will result in a smaller step size and fewer divergences. +#' For further details refer to the \code{control} parameter in \link[rstan]{sampling} or \href{https://mc-stan.org/rstanarm/reference/adapt_delta.html}{here}. +#' @param m_treed Maximum tree depth for the binary tree used in the NUTS stan sampler. For further details refer to the \code{control} parameter in \link[rstan]{sampling}. +#' @param decades Number of decades covered by the survey data. +#' @return \code{model_object}. An object containing relevant information about the implementation of the model. For further details refer to \link{fit_seroprev_model}. +#' @examples +#' \dontrun{ +#' seroprev_data <- prepare_seroprev_data(serodata) +#' run_seroprev_model (seroprev_data, +#' seroprev_model_name = "constant_foi_bi") +#' } #' @export -get_exposure_matrix <- function(model_data, - yexpo) { - age_class <- model_data$age_mean_f - ly <- length(yexpo) - exposure <- matrix(0,nrow = length(age_class), ncol = ly) - for (k in 1:length(age_class)) exposure[k,(ly - age_class[k] + 1):ly] <- 1 - exposure_output <- exposure - return(exposure_output) - +run_seroprev_model <- function(seroprev_data, + seroprev_model_name = "constant_foi_bi", + n_iters = 1000, + n_thin = 2, + delta = 0.90, + m_treed = 10, + decades = 0) { + survey <- unique(seroprev_data$survey) + if (length(survey) > 1) warning("You have more than 1 surveys or survey codes") + model_object <- fit_seroprev_model(seroprev_data = seroprev_data, + seroprev_model_name = seroprev_model_name, + n_iters = n_iters, + n_thin = n_thin, + delta = delta, + m_treed = m_treed, + decades = decades); print(paste0("serofoi model ", + seroprev_model_name, + " finished running ------")) + print(t(model_object$model_summary)) + return(model_object) } -#' Get Prevalence Expanded +#' Save or load model #' -#' Function that generates the expanded prevalence -#' @param model_data refers to the model data that has been selected -#' @param foi force of infection -#' @return prev_final +#' This function determines whether the corresponding .RDS file of the selected model exists or not. +#' In case the .RDS file exists, it is read and returned; otherwise, the object model is created through the +#' \link[rstan]{stan_model} function, saved as an .RDS file and returned as the output of the function. +#' @param seroprev_model_name Name of the selected model. Current version provides three options: +#' \describe{ +#' \item{\code{"constant_foi_bi"}}{Runs a constant model} +#' \item{\code{"continuous_foi_normal_bi"}}{Runs a normal model} +#' \item{\code{"continuous_foi_normal_log"}}{Runs a normal logarithmic model} +#' } +#' @return \code{model}. The rstan model object corresponding to the selected model. +#' @examples +#' save_or_load_model(seroprev_model_name="constant_foi_bi") #' @export -get_prev_expanded <- function(foi, - model_data) { - - ndata <- data.frame(age = 1:80) - dim_foi <- dim(foi)[2] - if (dim_foi < 80) { - oldest_year <- 80 - dim_foi + 1 - foin <- matrix(NA, nrow = dim(foi)[1], 80) - foin[, oldest_year:80] <- foi - foin[, 1:(oldest_year - 1) ] <- rowMeans(foi[,1:5]) - } else { - foin <- foi} - - foi_expanded <- foin - - age_class <- 1:NCOL(foi_expanded) - ly <- NCOL(foi_expanded) - exposure <- matrix(0, nrow = length(age_class), ncol = ly) - for (k in 1:length(age_class)) exposure[k,(ly - age_class[k] + 1):ly] <- 1 - exposure_expanded <- exposure - - iterf <- NROW(foi_expanded) - age_max <- NROW(exposure_expanded) - PrevPn <- matrix(NA, nrow = iterf, ncol = age_max) - for (i in 1:iterf) { - PrevPn[i,] <- 1 - exp( -exposure_expanded %*% foi_expanded[i,]) - } - - lower <- apply(PrevPn, 2, function(x) quantile(x, 0.1)) - upper <- apply(PrevPn, 2, function(x) quantile(x, 0.9)) - medianv <- apply(PrevPn, 2, function(x) quantile(x, 0.5)) - - predicted_prev <- data.frame(age = 1:80, - predicted_prev = medianv, - predicted_prev_lower = lower, - predicted_prev_upper = upper) - - observed_prev <- model_data %>% - dplyr::select(age_mean_f, prev_obs, prev_obs_lower, prev_obs_upper, total, counts) %>% - dplyr::rename(age = age_mean_f, sample_by_age = total, positives = counts) - - prev_expanded <- base::merge(predicted_prev, observed_prev, by = "age", all.x = TRUE) %>% dplyr::mutate(survey = model_data$survey[1]) - - # I added this here for those cases when binned is prefered for plotting - if (model_data$age_max[1] - model_data$age_min[1] < 3) { - model_data$cut_ages <- cut(as.numeric(model_data$age_mean_f), seq(1,101, by = 5), include.lowest = TRUE) - xx <- model_data %>% dplyr::group_by(.data$cut_ages) %>% dplyr::summarise(bin_size = sum(.data$total), bin_pos = sum(.data$counts)) - labs <- read.table(text = gsub("[^.0-9]", " ", levels(xx$cut_ages)), col.names = c("lower", "upper")) %>% - dplyr::mutate(lev = levels(xx$cut_ages), midAge = round((lower + upper)/2)) %>% dplyr::select(.data$midAge, .data$lev) - xx$midAge <- labs$midAge[labs$lev %in% xx$cut_ages] - conf <- data.frame(Hmisc::binconf(xx$bin_pos, xx$bin_size,method = "exact")) - xx <- cbind(xx, conf) %>% dplyr::rename(age = .data$midAge, p_obs_bin = .data$PointEst, - p_obs_bin_l = .data$Lower,p_obs_bin_u = .data$Upper) - - prev_final <- base::merge(prev_expanded, xx, by = "age", all.x = TRUE) - - } else { - - prev_final <- prev_expanded %>% dplyr::mutate(cut_ages = "original", bin_size = .data$sample_by_age, - bin_pos = .data$positives, p_obs_bin = .data$prev_obs, - p_obs_bin_l = .data$prev_obs_lower, p_obs_bin_u = .data$prev_obs_upper) - +save_or_load_model <- function(seroprev_model_name = "constant_foi_bi") { + base_path <- config::get("stan_models_base_path", + file = system.file("config.yml", package = "serofoi", mustWork = TRUE)) + rds_path <- system.file(base_path, paste(seroprev_model_name, ".rds", sep = ""), package = getPackageName()) + if (!file.exists(rds_path)) { + message(sprintf("\nNo rds file found for model %s. Compiling stan model...", seroprev_model_name)) } + stan_path <- system.file(base_path, paste(seroprev_model_name, ".stan", sep = ""), package = getPackageName()) - return(prev_final) - -} + model <- rstan::stan_model(stan_path, auto_write = TRUE) -#' Make yexpo -#' -#' Function that generates Yexpo -#' @param model_data refers to the model data that has been selected -#' @return yexpo -#' @export -make_yexpo <- function(model_data) { - yexpo <- (seq_along(min(model_data$birth_year):model_data$tsur[1])) + return(model) } -#' Get Posterior Summary -#' -#' Function that gets a posterior summary -#' @param model_objects model_objects_chain -#' @return model_object -#' @export -get_posterior_summary <- function(model_objects_chain) { - model_object <- sapply(model_objects_chain, - function(i) c(quantile(i, c(0.5, 0.025, 0.975)))) - row.names(model_object) <- c("Median", "Lower", "Upper") - return(model_object) -} #' Fit Model #' -#' Function that fits the model to the data -#' @param model_data refers to the model data that has been selected -#' @param model refers to model selected -#' @param model_name name of the model selected -#' @param n_iters number of iterations. Each model has a default number. -#' @param n_thin Each model has a default number. -#' @param delta This value comes by default but it can be changed -#' @param m_treed This value comes by default but it can be changed -#' @param decades The decades covered by the survey data -#' @return model_object +#' Function that fits the selected model to the data +#' @param seroprev_data A data frame containing the data from a seroprevalence survey. For further details refer to \link{run_seroprev_model}. +#' @param seroprev_model_name Name of the selected model. Current version provides three options: +#' \describe{ +#' \item{\code{"constant_foi_bi"}}{Runs a constant model} +#' \item{\code{"continuous_foi_normal_bi"}}{Runs a normal model} +#' \item{\code{"continuous_foi_normal_log"}}{Runs a normal logarithmic model} +#' } +#' @param n_iters Number of interations for eah chain including the warmup. \code{iter} in \link[rstan]{sampling}. +#' @param n_thin Positive integer specifying the period for saving samples. \code{thin} in \link[rstan]{sampling}. +#' @param delta Real number between 0 and 1 that represents the target average acceptance probability. +#' Increasing the value of \code{delta} will result in a smaller step size and fewer divergences. +#' For further details refer to the \code{control} parameter in \link[rstan]{sampling} or \href{https://mc-stan.org/rstanarm/reference/adapt_delta.html}{here}. +#' @param m_treed Maximum tree depth for the binary tree used in the NUTS stan sampler. For further details refer to the \code{control} parameter in \link[rstan]{sampling}. +#' @param decades Number of decades covered by the survey data. +#' @return \code{model_object}. An object containing relevant information about the implementation of the model. It contains the following: +#' \tabular{ll}{ +#' \code{fit} \tab \code{stanfit} object returned by the function \link[rstan]{sampling} \cr \tab \cr +#' \code{seroprev_data} \tab A data frame containing the data from a seroprevalence survey. For further details refer to \link{run_seroprev_model}.\cr \tab \cr +#' \code{stan_data} \tab List containing \code{Nobs}, \code{Npos}, \code{Ntotal}, \code{Age}, \code{Ymax}, \code{AgeExpoMatrix} and \code{NDecades}. +#' This object is used as an input for the \link[rstan]{sampling} function \cr \tab \cr +#' \code{exposure_years} \tab Integer atomic vector containing the actual exposure years (1946, ..., 2007 e.g.) \cr \tab \cr +#' \code{exposure_ages} \tab Integer atomic vector containing the numeration of the exposure ages. \cr \tab \cr +#' \code{n_iters} \tab Number of interations for eah chain including the warmup. \cr \tab \cr +#' \code{n_thin} \tab Positive integer specifying the period for saving samples. \cr \tab \cr +#' \code{n_warmup} \tab Number of warm up iterations. Set by default as n_iters/2. \cr \tab \cr +#' \code{seroprev_model_name} \tab The name of the model\cr \tab \cr +#' \code{delta} \tab Real number between 0 and 1 that represents the target average acceptance probability. \cr \tab \cr +#' \code{m_treed} \tab Maximum tree depth for the binary tree used in the NUTS stan sampler. \cr \tab \cr +#' \code{loo_fit} \tab Efficient approximate leave-one-out cross-validation. Refer to \link[loo]{loo} for further details. \cr \tab \cr +#' \code{foi_cent_est} \tab A data fram e containing \code{year} (corresponding to \code{exposure_years}), \code{lower}, \code{upper}, and \code{medianv} \cr \tab \cr +#' \code{foi_post_s} \tab Sample n rows from a table. Refer to \link[dplyr]{sample_n} for further details. \cr \tab \cr +#' \code{model_summary} \tab A data fram containing the summary of the model. Refer to \link{extract_seroprev_model_summary} for further details. \cr \tab \cr +#' } + +#' @examples +#' \dontrun{ +#' seroprev_data <- prepare_seroprev_data(serodata) +#' fit_seroprev_model (seroprev_data, +#' seroprev_model_name = "constant_foi_bi") +#' } +#' #' @export -fit_model <- function(model, - model_data, - model_name, - n_iters = n_iters, - n_thin = n_thin, - delta = delta, - m_treed = m_treed, - decades = decades){ - - # add a warning to the warming process because there are exceptions where a minimal amount of iterations need to be run - n_warmup = floor(n_iters/2) - - yexpo <- make_yexpo(model_data) - yexpo <- yexpo[-length(yexpo)] - real_yexpo <- (min(model_data$birth_year):model_data$tsur[1])[-1] - exposure_matrix <- get_exposure_matrix(model_data, yexpo) - Nobs <- nrow(model_data) +fit_seroprev_model <- function(seroprev_data, + seroprev_model_name, + n_iters = 1000, + n_thin = 2, + delta = 0.90, + m_treed = 10, + decades = 0) { + # add a warning because there are exceptions where a minimal amount of iterations need to be run + model <- save_or_load_model(seroprev_model_name) + exposure_ages <- get_exposure_ages(seroprev_data) + exposure_years <- (min(seroprev_data$birth_year):seroprev_data$tsur[1])[-1] + exposure_matrix <- get_exposure_matrix(seroprev_data) + Nobs <- nrow(seroprev_data) stan_data <- list( - Nobs = Nobs, - Npos = model_data$counts, - Ntotal = model_data$total, - Age = model_data$age_mean_f, - Ymax = max(yexpo), + Nobs = Nobs, + Npos = seroprev_data$counts, + Ntotal = seroprev_data$total, + Age = seroprev_data$age_mean_f, + Ymax = max(exposure_ages), AgeExpoMatrix = exposure_matrix, - NDecades = decades) + NDecades = decades + ) + + n_warmup <- floor(n_iters / 2) + + if (seroprev_model_name == "continuous_foi_normal_log") { + f_init <- function() { + list(log_foi = rep(-3, length(exposure_ages))) + } + lower_quantile = 0.1 + upper_quantile = 0.9 + medianv_quantile = 0.5 + } - f_init <- function(){ - list(foi = rep(0.01, length(yexpo))) + else { + f_init <- function() { + list(foi = rep(0.01, length(exposure_ages))) } + lower_quantile = 0.05 + upper_quantile = 0.95 + medianv_quantile = 0.5 - fit <- rstan::sampling(model, - data = stan_data , - iter = n_iters, - chains = 4, - init = f_init, - warmup = n_warmup, - verbose = FALSE, - refresh = 0, - control = list(adapt_delta = delta, - max_treedepth = m_treed), - seed = "12345", - thin = n_thin + } + + fit <- rstan::sampling( + model, + data = stan_data, + iter = n_iters, + chains = 4, + init = f_init, + warmup = n_warmup, + verbose = FALSE, + refresh = 0, + control = list(adapt_delta = delta, + max_treedepth = m_treed), + seed = "12345", + thin = n_thin, + chain_id = 0 # https://github.com/stan-dev/rstan/issues/761#issuecomment-647029649 ) - if (class(fit@sim$samples) != "NULL") { + if (class(fit@sim$samples) != "NULL") { loo_fit <- loo::loo(fit, save_psis = TRUE, "logLikelihood") foi <- rstan::extract(fit, "foi", inc_warmup = FALSE)[[1]] - + # foi <- rstan::extract(fit, "foi", inc_warmup = TRUE, permuted=FALSE)[[1]] # generates central estimations - foi_cent_est <- data.frame(year = real_yexpo, - lower = apply(foi, 2, function(x) quantile(x, 0.05)), - upper = apply(foi, 2, function(x) quantile(x, 0.95)), - medianv = apply(foi, 2, function(x) quantile(x, 0.5))) + foi_cent_est <- data.frame( + year = exposure_years, + lower = apply(foi, 2, function(x) quantile(x, lower_quantile)), + + upper = apply(foi, 2, function(x) quantile(x, upper_quantile)), + + medianv = apply(foi, 2, function(x) quantile(x, medianv_quantile)) + ) # generates a sample of iterations - if (n_iters >= 2000){ + if (n_iters >= 2000) { foi_post_s <- dplyr::sample_n(as.data.frame(foi), size = 1000) - colnames(foi_post_s) <- real_yexpo - } - else{ + colnames(foi_post_s) <- exposure_years + } else { foi_post_s <- as.data.frame(foi) - colnames(foi_post_s) <- real_yexpo + colnames(foi_post_s) <- exposure_years } - model_object <- list(fit = fit, - model_data = model_data, - stan_data = stan_data, - real_yexpo = real_yexpo, - yexpo = yexpo, - n_iters = n_iters, - n_thin = n_thin, - n_warmup = n_warmup, - model = model_name, - delta = delta, - m_treed = m_treed, - loo_fit = loo_fit, - foi_cent_est = foi_cent_est, - foi_post_s = foi_post_s) - model_object$model_summary <- extract_summary_model(model_object) + model_object <- list( + fit = fit, + seroprev_data = seroprev_data, + stan_data = stan_data, + exposure_years = exposure_years, + exposure_ages = exposure_ages, + n_iters = n_iters, + n_thin = n_thin, + n_warmup = n_warmup, + seroprev_model_name = seroprev_model_name, + delta = delta, + m_treed = m_treed, + loo_fit = loo_fit, + foi_cent_est = foi_cent_est, + foi_post_s = foi_post_s + ) + model_object$model_summary <- + extract_seroprev_model_summary(model_object) } else { loo_fit <- c(-1e10, 0) - model_object <- list(fit = "no model", - model_data = model_data, - stan_data = stan_data, - real_yexpo = real_yexpo, - yexpo = yexpo, - n_iters = n_iters, - n_thin = n_thin, - n_warmup = n_warmup, - model = model_name, - delta = delta, - m_treed = m_treed, - loo_fit = loo_fit, - model_summary = NA) + model_object <- list( + fit = "no model", + seroprev_data = seroprev_data, + stan_data = stan_data, + exposure_years = exposure_years, + exposure_ages = exposure_ages, + n_iters = n_iters, + n_thin = n_thin, + n_warmup = n_warmup, + model = seroprev_model_name, + delta = delta, + m_treed = m_treed, + loo_fit = loo_fit, + model_summary = NA + ) } return(model_object) - } -#' Fit Model Log + +#' Get exposure years #' -#' Function that fits the logarithmic model to the data -#' @param model_data model_data -#' @param model refers to model selected -#' @param model_name name of the model selected -#' @param n_iters number of iterations. This value comes by default but it can be changed -#' @param n_thinThis value comes by default but it can be changed -#' @param delta This value comes by default but it can be changed -#' @param m_treed This value comes by default but it can be changed -#' @param decades The decades covered by the survey data -#' @return model_object +#' Function that generates an atomic vector with the exposition years in seroprev_data. The exposition years to the disease for each individual corresponds to the time from birth to the moment of the survey. +#' @param seroprev_data A data frame containing the data from a seroprevalence survey. This data frame must contain the year of birth for each individual (birth_year) and the time of the survey (tsur). birth_year can be constructed by means of the \link{prepare_seroprev_data} function. +#' @return \code{exposure_ages}. An atomic vector with the numeration of the exposition years in seroprev_data +#' @examples +#' \dontrun{ +#' seroprev_data <- prepare_seroprev_data(seroprev_data = serodata, alpha = 0.05) +#' exposure_ages <- get_exposure_ages(seroprev_data) +#' } #' @export -fit_model_log <- function(model, - model_data, - model_name, - n_iters = 3000, - n_thin = 2, - delta = 0.90, - m_treed = 10, - decades = 0){ - - yexpo <- make_yexpo(model_data) - yexpo <- yexpo[-length(yexpo)] - real_yexpo <- (min(model_data$birth_year):model_data$tsur[1])[-1] - exposure_matrix <- get_exposure_matrix(model_data, yexpo) - Nobs <- nrow(model_data) - - stan_data <- list( - Nobs = nrow(model_data), - Npos = model_data$counts, - Ntotal = model_data$total, - Age = model_data$age_mean_f, - Ymax = max(yexpo), - AgeExpoMatrix = exposure_matrix, - NDecades = decades) +get_exposure_ages <- function(seroprev_data) { + # TODO Verify if this change is correct + return(seq_along(min(seroprev_data$birth_year):(seroprev_data$tsur[1] - 1))) +} - n_warmup = floor(n_iters/2) - f_init <- function(){ - list(log_foi = rep(-3, length(yexpo))) - } - - fit <- rstan::sampling(model, - data = stan_data , - iter = n_iters, - chains = 4, - init = f_init, - warmup = n_warmup, - verbose = FALSE, - refresh = 0, - control = list(adapt_delta = delta, - max_treedepth = m_treed), - seed = "12345", - thin = n_thin - ) +#' Get Exposure Matrix +#' +#' Function that generates the exposure matrix for a seroprevalence survey. +#' @param seroprev_data A data frame containing the data from a seroprevalence survey. This data frame must contain the year of birth for each individual (birth_year) and the time of the survey (tsur). birth_year can be constructed by means of the \link{prepare_seroprev_data} function. +#' @return \code{exposure_output}. An atomic matrix containing the expositions for each entry of \code{seroprev_data} by year. +#' @examples +#' \dontrun{ +#' seroprev_data <- prepare_seroprev_data(seroprev_data = serodata, alpha = 0.05) +#' exposure_matrix <- get_exposure_matrix(seroprev_data = seroprev_data) +#' } +#' @export +get_exposure_matrix <- function(seroprev_data) { + age_class <- seroprev_data$age_mean_f + exposure_ages <- get_exposure_ages(seroprev_data) + ly <- length(exposure_ages) + exposure <- matrix(0, nrow = length(age_class), ncol = ly) + for (k in 1:length(age_class)) + exposure[k, (ly - age_class[k] + 1):ly] <- 1 + exposure_output <- exposure + return(exposure_output) +} - if (class(fit@sim$samples) != "NULL") { - loo_fit <- loo::loo(fit, save_psis = TRUE, "logLikelihood") - foi <- rstan::extract(fit, "foi", inc_warmup = FALSE)[[1]] +#' Extract Model Summary +#' +#' Function to generate a summary of a model. +#' @param model_object \code{model_object}. An object containing relevant information about the implementation of the model. Refer to \link{fit_seroprev_model} for further details. +#' @return \code{model_summary}. Object with a summary of \code{model_object} containing the following: +#' \tabular{ll}{ +#' \code{seroprev_model_name} \tab Name of the selected model. For further details refer to \link{save_or_load_model}. \cr \tab \cr +#' \code{data_set} \tab Seroprevalence survey label.\cr \tab \cr +#' \code{country} \tab Name of the country were the survey was conducted in. \cr \tab \cr +#' \code{year} \tab Year in which the survey was conducted. \cr \tab \cr +#' \code{test} \tab Type of test of the survey. \cr \tab \cr +#' \code{antibody} \tab Antibody \cr \tab \cr +#' \code{n_sample} \tab Total number of samples in the survey. \cr \tab \cr +#' \code{n_agec} \tab Number of age groups considered. \cr \tab \cr +#' \code{n_iter} \tab Number of interations for eah chain including the warmup. \cr \tab \cr +#' \code{elpd} \tab elpd \cr \tab \cr +#' \code{se} \tab se \cr \tab \cr +#' \code{converged} \tab convergence \cr \tab \cr +#' } +#' @examples +#' \dontrun{ +#' seroprev_data <- prepare_seroprev_data(serodata) +#' model_object <- run_seroprev_model(seroprev_data = seroprev_data, +#' seroprev_model_name = "constant_foi_bi") +#' extract_seroprev_model_summary (model_object) +#' } +#' @export +extract_seroprev_model_summary <- function(model_object) { + seroprev_model_name <- model_object$seroprev_model_name + seroprev_data <- model_object$seroprev_data + #------- Loo estimates - foi_cent_est <- data.frame(year = real_yexpo, - lower = apply(foi, 2, function(x) quantile(x, 0.1)), - upper = apply(foi, 2, function(x) quantile(x, 0.9)), - medianv = apply(foi, 2, function(x) quantile(x, 0.5))) - - foi_post_s <- dplyr::sample_n(as.data.frame(foi), size = 1000) - colnames(foi_post_s) <- real_yexpo - - - model_object <- list(fit = fit, - model_data = model_data, - stan_data = stan_data, - real_yexpo = real_yexpo, - yexpo = yexpo, - n_iters = n_iters, - n_thin = n_thin, - n_warmup = n_warmup, - model = model_name, - delta = delta, - m_treed = m_treed, - loo_fit = loo_fit, - foi_cent_est = foi_cent_est, - foi_post_s = foi_post_s) - - model_object$model_summary <- extract_summary_model(model_object) + loo_fit <- model_object$loo_fit + if (sum(is.na(loo_fit)) < 1) { + lll <- as.numeric((round(loo_fit$estimates[1, ], 2))) } else { - - loo_fit <- c(-1e10, 0) - model_object <- list(fit = "no model", - stan_data = stan_data, - real_yexpo = real_yexpo, - yexpo = yexpo, - n_iters = n_iters, - n_thin = n_thin, - n_warmup = n_warmup, - model = model_name, - delta = delta, - m_treed = m_treed, - loo_fit = loo_fit) - model_object$model_summary <- extract_summary_model(model_object) + lll <- c(-1e10, 0) } + model_summary <- data.frame( + seroprev_model_name = seroprev_model_name, + dataset = seroprev_data$survey[1], + country = seroprev_data$country[1], + year = seroprev_data$tsur[1], + test = seroprev_data$test[1], + antibody = seroprev_data$antibody[1], + n_sample = sum(seroprev_data$total), + n_agec = length(seroprev_data$age_mean_f), + n_iter = model_object$n_iters, + elpd = lll[1], + se = lll[2], + converged = NA + ) - return(model_object) + rhats <- get_table_rhats(model_object) + if (any(rhats$rhat > 1.1) == FALSE) { + model_summary$converged <- "Yes" + } + return(model_summary) } -#' Save or read model -#' Function that saves the .RDS file of the model -#' @param model_name name of the model selected -save_or_read_model <- function(model_name="constant_foi_bi") { - rds_path <- config::get(model_name)$rds_path - stan_path <- config::get(model_name)$stan_path - - if (!file.exists(rds_path)){ - model <- rstan::stan_model(stan_path) - saveRDS(model, rds_path) - } - else{ - model <- readRDS(rds_path) +#' Get Prevalence Expanded +#' +#' Function that generates the expanded prevalence +#' @param seroprev_data A data frame containing the data from a seroprevalence survey. For further details refer to \link{run_seroprev_model}. +#' @param foi Object containing the information of the force of infection. It is obtained from \code{rstan::extract(model_object$fit, "foi", inc_warmup = FALSE)[[1]]}. +#' @return \code{prev_final}. The expanded prevalence data. This is used for plotting purposes in the \code{visualization} module. +#' @examples +#' \dontrun{ +#' seroprev_data <- prepare_seroprev_data(serodata) +#' model_object <- run_seroprev_model(seroprev_data = seroprev_data, +#' seroprev_model_name = "constant_foi_bi") +#' foi <- rstan::extract(model_object$fit, "foi", inc_warmup = FALSE)[[1]] +#' get_prev_expanded <- function(foi, seroprev_data) +#' } +#' @export +get_prev_expanded <- function(foi, + seroprev_data) { + dim_foi <- dim(foi)[2] + if (dim_foi < 80) { + oldest_year <- 80 - dim_foi + 1 + foin <- matrix(NA, nrow = dim(foi)[1], 80) + foin[, oldest_year:80] <- foi + foin[, 1:(oldest_year - 1)] <- rowMeans(foi[, 1:5]) + } else { + foin <- foi } - return(model) -} + foi_expanded <- foin -#' Run model -#' Function that runs the specified model -#' @param model_data model_data -#' @param survey survey -#' @param model refers to model selected -#' @param model_name name of the model selected -#' @param n_iters number of iterations. Each model has a value by default. -#' @return model_object of model -#' @export -run_model <- function(model_data, - model_name="constant_foi_bi", - n_iters=1000, - n_thin = 2, - delta = 0.90, - m_treed = 10, - decades = 0) { + age_class <- 1:NCOL(foi_expanded) + ly <- NCOL(foi_expanded) + exposure <- matrix(0, nrow = length(age_class), ncol = ly) + for (k in 1:length(age_class)) + exposure[k, (ly - age_class[k] + 1):ly] <- 1 + exposure_expanded <- exposure - model_data <- model_data %>% dplyr::arrange(.data$age_mean_f) %>% dplyr::mutate(birth_year = .data$tsur - .data$age_mean_f) - survey <- unique(model_data$survey) - if (length(survey)>1) warning("You have more than 1 surveys or survey codes") - - if (model_name == "constant_foi_bi"){ - model_0 <- save_or_read_model(model_name = model_name) - model_object <- fit_model(model = model_0, - model_data = model_data, - model_name = model_name, - n_iters = n_iters, - n_thin = n_thin, - delta = delta, - m_treed = m_treed, - decades = decades); print(paste0(survey, "finished ------ model_0")) - } - if (model_name == "continuous_foi_normal_bi"){ - model_1 <- save_or_read_model(model_name = model_name) - model_object <- fit_model(model = model_1, - model_data = model_data, - model_name = model_name, - n_iters = n_iters, - n_thin = n_thin, - delta = delta, - m_treed = m_treed, - decades = decades); print(paste0(survey, "finished ------ model_1")) - } - if (model_name == "continuous_foi_normal_log"){ - model_2 <- save_or_read_model(model_name = model_name) - model_object <- fit_model_log(model = model_2, - model_data = model_data, - model_name = model_name, - n_iters = n_iters, - n_thin = n_thin, - delta = delta, - m_treed = m_treed, - decades = decades); print(paste0(survey, "finished ------ model_2")) + iterf <- NROW(foi_expanded) + age_max <- NROW(exposure_expanded) + prev_pn <- matrix(NA, nrow = iterf, ncol = age_max) + for (i in 1:iterf) { + prev_pn[i, ] <- 1 - exp(-exposure_expanded %*% foi_expanded[i, ]) } - print(model_object$model_summary) - return(model_object) -} -#' Extract Summary Model -#' -#' Function that summarizes the models -#' @param model_object what the run model function returns -#' @param model_data refers to data of the model -#' @return summary of the models -#' @export -extract_summary_model <- function(model_object) { + lower <- apply(prev_pn, 2, function(x) quantile(x, 0.1)) - model_name <- model_object$model - #------- Loo estimates + upper <- apply(prev_pn, 2, function(x) quantile(x, 0.9)) - loo_fit <- model_object$loo_fit - if (sum(is.na(loo_fit)) < 1) - { - lll <- as.numeric((round(loo_fit$estimates[1,],2)))} else - { - lll <- c(-1e10, 0) - } + medianv <- apply(prev_pn, 2, function(x) quantile(x, 0.5)) - model_data <- model_object$model_data - summary_model <- data.frame(model = model_object$model, - dataset = model_data$survey[1], - country = model_data$country[1], - year = model_data$tsur[1], - test = model_data$test[1], - antibody = model_data$antibody[1], - n_sample = sum(model_data$total), - n_agec = length(model_data$age_mean_f), - n_iter = model_object$n_iters, - performance = "_____", - elpd = lll[1], - se = lll[2], - converged = NA + predicted_prev <- data.frame( + age = 1:80, + predicted_prev = medianv, + predicted_prev_lower = lower, + predicted_prev_upper = upper ) - rhats <- get_table_rhats(model_object) - if (any(rhats$rhat > 1.1 ) == FALSE) { - summary_model$converged = "Yes" } + observed_prev <- seroprev_data %>% + dplyr::select(age_mean_f, + prev_obs, + prev_obs_lower, + prev_obs_upper, + total, + counts) %>% + dplyr::rename(age = age_mean_f, + sample_by_age = total, + positives = counts) + + prev_expanded <- + base::merge(predicted_prev, + observed_prev, + by = "age", + all.x = TRUE) %>% dplyr::mutate(survey = seroprev_data$survey[1]) + + # I added this here for those cases when binned is prefered for plotting + if (seroprev_data$age_max[1] - seroprev_data$age_min[1] < 3) { + xx <- prepare_bin_data(seroprev_data) + prev_final <- + base::merge(prev_expanded, xx, by = "age", all.x = TRUE) + } else { + prev_final <- prev_expanded %>% dplyr::mutate( + cut_ages = "original", + bin_size = .data$sample_by_age, + bin_pos = .data$positives, + p_obs_bin = .data$prev_obs, + p_obs_bin_l = .data$prev_obs_lower, + p_obs_bin_u = .data$prev_obs_upper + ) + } - return(summary_model) + return(prev_final) } diff --git a/R/serodata.R b/R/serodata.R new file mode 100644 index 00000000..1404ed4f --- /dev/null +++ b/R/serodata.R @@ -0,0 +1,15 @@ +#' Seroprevalence data on serofoi +#' +#' Data from a serological surveys +#' +#' @docType data +#' +#' @usage serodata +#' +#' @format An object of class \code{"cross"}; see \code{\link[qtl]{read.cross}}. +#' +#' @keywords datasets +#' +#' @examples +#' serodata +"serodata" \ No newline at end of file diff --git a/R/serofoi_package.R b/R/serofoi_package.R index 31764ab2..de07169d 100644 --- a/R/serofoi_package.R +++ b/R/serofoi_package.R @@ -4,5 +4,11 @@ ## usethis namespace: start #' @import dplyr #' @importFrom dplyr %>% +#' @import Rcpp +#' @import methods +#' @importFrom graphics text +#' @importFrom utils read.table +#' @importFrom rstan sampling +#' @importFrom stats quantile ## usethis namespace: end NULL diff --git a/R/seroprevalence_data.R b/R/seroprevalence_data.R index 39bdb582..e3299a4b 100644 --- a/R/seroprevalence_data.R +++ b/R/seroprevalence_data.R @@ -1,20 +1,249 @@ #' Prepare data #' #' Function that prepares the data for modelling -#' @param model_data dataset to be processed -#' @param alpha probability of a type I error (Hmisc::binconf) -#' @return model_data with additional columns necessary for the analysis +#' @param seroprev_data A data frame containing the data from a seroprevalence survey. +#' This data frame must contain the following columns: +#' \tabular{ll}{ +#' \code{survey} \tab survey Label of the current survey \cr \tab \cr +#' \code{total} \tab Number of samples for each age group\cr \tab \cr +#' \code{counts} \tab Number of positive samples for each age group\cr \tab \cr +#' \code{age_min} \tab age_min \cr \tab \cr +#' \code{age_max} \tab age_max \cr \tab \cr +#' \code{year_init} \tab year_init \cr \tab \cr +#' \code{year_end} \tab year_end \cr \tab \cr +#' \code{tsur} \tab Year in which the survey took place \cr \tab \cr +#' \code{country} \tab The country where the survey took place \cr \tab \cr +#' \code{test} \tab The type of test taken \cr \tab \cr +#' \code{antibody} \tab antibody \cr \tab \cr +#' } +#' @param alpha probability of a type I error. For further details refer to \link{Hmisc::binconf}. +#' @return seroprev_data with additional columns necessary for the analysis. These columns are: +#' \tabular{ll}{ +#' \code{age_mean_f} \tab Floor value of the average between age_min and age_max \cr \tab \cr +#' \code{sample_size} \tab The size of the sample \cr \tab \cr +#' \code{birth_year} \tab The year in which the individuals of each age group were bornt \cr \tab \cr +#' \code{prev_obs} \tab Observed prevalence \cr \tab \cr +#' \code{prev_obs_lower} \tab Lower limit of the confidence interval for the observed prevalence \cr \tab \cr +#' \code{prev_obs_upper} \tab Upper limit of the confidence interval for the observed prevalence \cr \tab \cr +#' } +#' @examples +#'\dontrun{ +#' data_test <- readRDS("data/data.RDS") +#' data_test <- prepare_seroprev_data(seroprev_data, alpha) +#' } #' @export -prepare_data <- function(model_data, - alpha = 0.05) { - model_data <- model_data %>% - dplyr::mutate(age_mean_f = floor((age_min+age_max)/2), sample_size = sum(total)) %>% - cbind(Hmisc::binconf(model_data$counts, - model_data$total, - alpha = alpha, - method="exact", - return.df = TRUE)) %>% - dplyr::rename(prev_obs = PointEst, prev_obs_lower = Lower, prev_obs_upper = Upper) - - return(model_data) +prepare_seroprev_data <- function(seroprev_data = serodata, + alpha = 0.05, + add_age_mean_f = TRUE) { + if(add_age_mean_f){ + seroprev_data <- seroprev_data %>% + dplyr::mutate(age_mean_f = floor((age_min + age_max) / 2), sample_size = sum(total)) %>% + dplyr::mutate(birth_year = .data$tsur - .data$age_mean_f) + } + seroprev_data <- seroprev_data %>% + cbind( + Hmisc::binconf( + seroprev_data$counts, + seroprev_data$total, + alpha = alpha, + method = "exact", + return.df = TRUE + ) + ) %>% + dplyr::rename( + prev_obs = PointEst, + prev_obs_lower = Lower, + prev_obs_upper = Upper + ) %>% + dplyr::arrange(.data$age_mean_f) + + return(seroprev_data) +} + + +#' Prepare data to plot binomial confidence intervals +#' +#' Function that prepares the data for modelling +#' @param seroprev_data A data frame containing the data from a seroprevalence survey. For more information see the function \link{run_seroprev_model}. +#' This data frame must contain the following columns: +#' \tabular{ll}{ +#' \code{survey} \tab survey Label of the current survey \cr \tab \cr +#' \code{total} \tab Number of samples for each age group\cr \tab \cr +#' \code{counts} \tab Number of positive samples for each age group\cr \tab \cr +#' \code{age_min} \tab age_min \cr \tab \cr +#' \code{age_max} \tab age_max \cr \tab \cr +#' \code{year_init} \tab year_init \cr \tab \cr +#' \code{year_end} \tab year_end \cr \tab \cr +#' \code{tsur} \tab Year in which the survey took place \cr \tab \cr +#' \code{country} \tab The country where the survey took place \cr \tab \cr +#' \code{test} \tab The type of test taken \cr \tab \cr +#' \code{antibody} \tab antibody \cr \tab \cr +#' \code{age_mean_f} \tab Floor value of the average between age_min and age_max \cr \tab \cr +#' \code{sample_size} \tab The size of the sample \cr \tab \cr +#' \code{birth_year} \tab The year in which the individuals of each age group were bornt \cr \tab \cr +#' \code{prev_obs} \tab Observed prevalence \cr \tab \cr +#' \code{prev_obs_lower} \tab Lower limit of the confidence interval for the observed prevalence \cr \tab \cr +#' \code{prev_obs_upper} \tab Upper limit of the confidence interval for the observed prevalence \cr \tab \cr +#' } +#' The last six colums can be added to \code{seroprev_data} by means of the function \code{\link{prepare_seroprev_data}}. +#' @return data set with the binomial confidence intervals +#' @examples +#'\dontrun{ +#' prepare_bin_data (seroprev_data) +#' } +#' @export +prepare_bin_data <- function(seroprev_data) { + seroprev_data$cut_ages <- + cut(as.numeric(seroprev_data$age_mean_f), + seq(1, 101, by = 5), + include.lowest = TRUE) + xx <- seroprev_data %>% + dplyr::group_by(.data$cut_ages) %>% + dplyr::summarise(bin_size = sum(.data$total), + bin_pos = sum(.data$counts)) + labs <- + read.table( + text = gsub("[^.0-9]", " ", levels(xx$cut_ages)), + col.names = c("lower", "upper") + ) %>% + dplyr::mutate(lev = levels(xx$cut_ages), mid_age = round((lower + upper) / 2)) %>% + dplyr::select(.data$mid_age, .data$lev) + xx$mid_age <- labs$mid_age[labs$lev %in% xx$cut_ages] + conf <- + data.frame(Hmisc::binconf(xx$bin_pos, xx$bin_size, method = "exact")) + xx <- cbind(xx, conf) %>% dplyr::rename( + age = .data$mid_age, + p_obs_bin = .data$PointEst, + p_obs_bin_l = .data$Lower, + p_obs_bin_u = .data$Upper + ) + return(xx) +} + +# TODO: Complete the documentation of get_sim_counts +#' Function that randomly generates a sample of counts for a simulated dataset +#' +#' @param sim_data A dataframe object containing the following columns: +#' \tabular{ll}{ +#' \code{birth_year} \tab List of years in which the subjects were borned \cr \tab \cr +#' \code{tsur} \tab Year of the survey\cr \tab \cr +#' \code{country} \tab Default to 'none'.\cr \tab \cr +#' \code{survey} \tab Survey label \cr \tab \cr +#' \code{age_mean_f} \tab Age \cr \tab \cr +#' } +#' @return A simulated list of counts following a binomial distribution in accordance with a given force of infection and age class sizes. +#' @examples +#'\dontrun{ +#' +#' } +#' @export +get_sim_counts <- function(sim_data, foi, size_age_class, seed = 1234){ + exposure_ages <- get_exposure_ages(sim_data) + exposure_matrix <- get_exposure_matrix(sim_data) + + set.seed(seed = seed) + sim_probabilities <- purrr::map_dbl(exposure_ages, ~1-exp(-dot(exposure_matrix[., ], foi))) + sim_counts <- purrr::map_int(sim_probabilities, ~rbinom(1, size_age_class, .)) + + return(sim_counts) +} + +# TODO: Complete the documentation of generate_sim_data +#' Function that generates simulated data from a given Force-of-Infection +#' +#' @param foi Numeric atomic vector corresponding to the desired Force-of-Infection +#' @return Dataframe object containing the simulated data generated from \code{foi} +#' @examples +#'\dontrun{ +#' size_age_class = 5 +#' foi <- rep(0.02, 50) +#' sim_data <- generate_sim_data(foi = foi, +#' size_age_class = size_age_class, +#' tsur = 2050, +#' birth_year_min = 2000, +#' survey_label = 'sim_constant_foi') +#' } +#' @export +generate_sim_data <- function(foi, + size_age_class, + tsur, + birth_year_min, + survey_label, + test = "fake", + antibody = "IgG", + seed = 1234 + ){ + sim_data <- data.frame(birth_year = c(birth_year_min:(tsur - 1))) %>% + mutate(tsur = tsur, + country = 'None', + test = test, + antibody = antibody, + survey = survey_label, + age_mean_f = tsur - birth_year) + sim_data <- sim_data %>% + mutate(counts = get_sim_counts(sim_data, foi, size_age_class, seed = seed), + total = size_age_class) %>% + prepare_seroprev_data(add_age_mean_f = FALSE) + + return(sim_data) +} + +# TODO: Complete the documentation of group_sim_data +#' Function that generates grouped simulated data from a given Force-of-Infection +#' +#' @param sim_data Dataframe with the structure of the output of \code{\linl{generate_sim_data}}. +#' @return Dataframe object containing grouped simulated data generated from \code{foi} +#' @examples +#'\dontrun{ +#' size_age_class = 5 +#' foi <- rep(0.02, 50) +#' sim_data <- generate_sim_data(foi = foi, +#' size_age_class = size_age_class, +#' tsur = 2050, +#' birth_year_min = 2000, +#' survey_label = 'sim_constant_foi') +#' sim_data_grouped <- group_sim_data(sim_data = sim_data, +#' foi = foi, +#' size_age_class = size_age_class, +#' tsur = 2050, +#' birth_year_min = 2000, +#' survey_label = 'sim_constant_foi_grouped') +#' } +#' @export +group_sim_data <- function(sim_data, + foi, + size_age_class, + tsur, + birth_year_min, + survey_label, + test = "fake", + antibody = "IgG", + seed = 1234) { + + sim_data <- sim_data %>% mutate(age_group = 'NA', age = age_mean_f) %>% arrange(age) + sim_data$age_group[sim_data$age > 0 & sim_data$age < 5] <- '01-04' + sim_data$age_group[sim_data$age > 4 & sim_data$age < 10] <- '05-09' + sim_data$age_group[sim_data$age > 9 & sim_data$age < 15] <- '10-14' + sim_data$age_group[sim_data$age > 14 & sim_data$age < 20] <- '15-19' + sim_data$age_group[sim_data$age > 19 & sim_data$age < 25] <- '20-24' + sim_data$age_group[sim_data$age > 24 & sim_data$age < 30] <- '25-29' + sim_data$age_group[sim_data$age > 29 & sim_data$age < 35] <- '30-34' + sim_data$age_group[sim_data$age > 34 & sim_data$age < 40] <- '35-39' + sim_data$age_group[sim_data$age > 39 & sim_data$age < 45] <- '40-44' + sim_data$age_group[sim_data$age > 44 & sim_data$age < 51] <- '45-50' + + + sim_data_grouped <- sim_data %>% group_by(age_group) %>% + dplyr::summarise(total = sum(total), counts = sum(counts)) %>% + mutate(tsur = sim_data$tsur[1], + country = "None", + survey = survey_label, + test = test, + antibody = antibody) %>% + mutate(age_min = as.numeric(substr(age_group, 1, 2)), + age_max = as.numeric(substr(age_group, 4, 5))) %>% + prepare_seroprev_data() + + return(sim_data_grouped) + } diff --git a/R/test_vignettes.R b/R/test_vignettes.R new file mode 100644 index 00000000..a8deac9e --- /dev/null +++ b/R/test_vignettes.R @@ -0,0 +1,4 @@ +#library(remotes) + +#remotes::install_github("TRACE-LAC/serofoi", ref = "dev") +#library(serofoi) diff --git a/R/veev2012.R b/R/veev2012.R new file mode 100644 index 00000000..a19088c0 --- /dev/null +++ b/R/veev2012.R @@ -0,0 +1,15 @@ +#' Seroprevalence data on serofoi +#' +#' Data from a serological surveys +#' +#' @docType data +#' +#' @usage veev2012 +#' +#' @format An object of class \code{"cross"}; see \code{\link[qtl]{read.cross}}. +#' +#' @keywords datasets +#' +#' @examples +#' veev2012 +"veev2012" \ No newline at end of file diff --git a/R/visualisation.R b/R/visualisation.R deleted file mode 100644 index 853f2037..00000000 --- a/R/visualisation.R +++ /dev/null @@ -1,248 +0,0 @@ -#' Generate sero-positivity plot -#' -#' Function that generates the sero positivity plot -#' @param model_object Object that the run_model function returns with the results of the fit -#' @param model Refers to the model selected -#' @param xlabel Label of axis x -#' @param ylabel Label of axis y -#' @return The sero-positivity plot -#' @export -plot_seroprev <- function(model_object, - size_text = 25) { - - if (is.character(model_object$fit) == FALSE) { - if (class(model_object$fit@sim$samples) != "NULL" ) { - - foi <- rstan::extract(model_object$fit, "foi", inc_warmup = FALSE)[[1]] - prev_expanded <- get_prev_expanded(foi, model_data = model_object$model_data) - - prev_plot <- - ggplot2::ggplot(prev_expanded) + - ggplot2::geom_ribbon(ggplot2::aes(x = age, ymin = predicted_prev_lower, ymax = predicted_prev_upper), fill = "#c994c7") + - ggplot2::geom_line(ggplot2::aes(x = age, y = predicted_prev), colour = "#7a0177") + - ggplot2::geom_errorbar(ggplot2::aes(age, ymin = p_obs_bin_l, ymax = p_obs_bin_u), width = 0.1) + - ggplot2::geom_point(ggplot2::aes(age, p_obs_bin, size = bin_size), fill = "#7a0177", colour = "black", shape = 21) + - ggplot2::theme_bw(size_text) + - ggplot2::coord_cartesian(xlim = c(0, 60), ylim = c(0,1)) + - ggplot2::theme(legend.position = "none") + - ggplot2::ylab("Sero-positivity") + ggplot2::xlab("Age") - - } } else - - { - print("model did not run") - print_warning <- "errors" - df <- data.frame() - - prev_plot <- ggplot2::ggplot(df) + ggplot2::geom_point() + ggplot2::xlim(0, 10) + ggplot2::ylim(0, 10) + - ggplot2::annotate("text", x = 4, y = 5, label = print_warning) + - ggplot2::theme_bw(25) + - ggplot2::theme(axis.text.x = ggplot2::element_blank(), axis.text.y = ggplot2::element_blank()) + - ggplot2::ylab(" ") + ggplot2::xlab(" ") - ggplot2::theme(plot.title = ggplot2::element_text(size = 10)) - - } - - return(prev_plot) - -} - -#' Generate Force-of-Infection Plot -#' -#' Function that generates the force of infection plot -#' @param model_object Object that the run_model function returns with the results of the fit -#' @param model Refers to model selected -#' @param xlabel Label of axis x -#' @param ylabel Label of axis y -#' @return Force of infection plot -#' @export -plot_foi <- function(model_object, - lambda_sim = NA, - max_lambda = NA, - size_text = 25) { - - if (is.character(model_object$fit) == FALSE) { - if (class(model_object$fit@sim$samples) != "NULL" ) { - - foi <- rstan::extract(model_object$fit, - "foi", - inc_warmup = FALSE)[[1]] - - #-------- This bit is to get the actual length of the foi data - foi_data <- model_object$foi_cent_est - - if (!is.na(lambda_sim)) { - lambda_mod_length <- NROW(foi_data) - lambda_sim_length <- length(lambda_sim) - - if (lambda_mod_length < lambda_sim_length) { - remove_x_values <- lambda_sim_length - lambda_mod_length - lambda_sim <- lambda_sim[-c(1:remove_x_values)] - } - - foi_data$simulated <- lambda_sim - - } - - #-------- - foi_data$medianv[1] <- NA - foi_data$lower[1] <- NA - foi_data$upper[1] <- NA - - foi_plot <- - ggplot2::ggplot(foi_data) + - ggplot2::geom_ribbon(ggplot2::aes(x = year, ymin = lower, ymax = upper), fill = "#41b6c4", alpha = 0.5) + - ggplot2::geom_line(ggplot2::aes(x = year, y = medianv), colour = "#253494", size = size_text/8) + - ggplot2::theme_bw(size_text) + - ggplot2::coord_cartesian(ylim = c(0, max_lambda)) + - ggplot2::ylab("Force-of-Infection") + ggplot2::xlab("Year") - } - - } else - - { - print("model did not run") - print_warning <- "errors" - df <- data.frame() - - foi_plot <- ggplot2::ggplot(df) + ggplot2::geom_point() + ggplot2::xlim(0, 10) + ggplot2::ylim(0, 10) + - ggplot2::annotate("text", x = 4, y = 5, label = print_warning) + - ggplot2::theme_bw(25) + - ggplot2::theme(axis.text.x = ggplot2::element_blank(), axis.text.y = ggplot2::element_blank()) + - ggplot2::ylab(" ") + ggplot2::xlab(" ") - ggplot2::theme(plot.title = ggplot2::element_text(size = 10)) - - } - - return(foi_plot) - -} - -#' Generate Rhats-Convergence Plot -#' -#' Function that generates the convergence graph of a model -#' @param model_object Object that the run_model function returns with the results of the fit -#' @param model Refers to model selected -#' @param xlabel Label of axis x -#' @param ylabel Label of axis y -#' @return The rhats-convergence plot of the selected model -#' @export -plot_rhats <- function(model_object, - size_text = 25) { - - if (is.character(model_object$fit) == FALSE) { - if (class(model_object$fit@sim$samples) != "NULL" ) { - - rhats <- get_table_rhats(model_object) - - rhats_plot <- ggplot2::ggplot(rhats, ggplot2::aes(year, rhat)) + - ggplot2::geom_line(colour = "purple") + - ggplot2::geom_point() + - ggplot2::coord_cartesian(ylim = c(0.7, 2)) + - ggplot2::geom_hline(yintercept = 1.1, colour = "blue", size = size_text/12) + - ggplot2::theme_bw(size_text) + - ggplot2::ylab("Convergence (R^)") - - } } else - - { - print("model did not run") - print_warning <- "errors" - df <- data.frame() - - rhats_plot <- ggplot2::ggplot(df) + ggplot2::geom_point() + ggplot2::xlim(0, 10) + ggplot2::ylim(0, 10) + - ggplot2::annotate("text", x = 4, y = 5, label = print_warning) + - ggplot2::theme_bw(25) + - ggplot2::theme(axis.text.x = ggplot2::element_blank(), axis.text.y = ggplot2::element_blank()) + - ggplot2::ylab(" ") + ggplot2::xlab(" ") - ggplot2::theme(plot.title = ggplot2::element_text(size = 10)) - - } - - return(rhats_plot) - -} - - -#' Generate a vertical arrange of plots summarizing the results of the model implementation -#' -#' Function that generates the combined graph -#' @param model_object Object that the run_model function returns with the results of the fit -#' @param model Refers to model selected -#' @param xlabel Label of axis x -#' @param ylabel Label of axis y -#' @return The combined plots -#' @export -plot_model <- function(model_object, - lambda_sim = NA, - max_lambda = NA, - size_text = 25) { - - if (is.character(model_object$fit) == FALSE) { - if (class(model_object$fit@sim$samples) != "NULL" ) { - prev_plot <- plot_seroprev(model_object = model_object, - size_text = size_text) - - foi_plot <- plot_foi(model_object = model_object, - lambda_sim = lambda_sim, - max_lambda = max_lambda, - size_text = size_text) - - rhats_plot <- plot_rhats(model_object = model_object, - size_text = size_text) - - summary_plot <- plot_info_table(t(model_object$model_summary), size_text = size_text) - - plot_arrange <- gridExtra::grid.arrange(summary_plot, - prev_plot, - foi_plot, - rhats_plot, nrow = 4, - heights = c(1.5, 1, 1, 1)) - - } } else - - { - print("model did not run") - print_warning <- "errors" - df <- data.frame() - - g0 <- ggplot2::ggplot(df) + ggplot2::geom_point() + ggplot2::xlim(0, 10) + ggplot2::ylim(0, 10) + - ggplot2::annotate("text", x = 4, y = 5, label = print_warning) + - ggplot2::theme_bw(25) + - ggplot2::theme(axis.text.x = ggplot2::element_blank(), axis.text.y = ggplot2::element_blank()) + - ggplot2::ylab(" ") + ggplot2::xlab(" ") - g1 <- g0 - g0 <- g0 + ggplot2::labs(subtitle = model_object$model) + - ggplot2::theme(plot.title = ggplot2::element_text(size = 10)) - - plot_arrange <- gridExtra::grid.arrange(g0, g1, g1, g1, g1, nrow = 5) - - } - - return(plot_arrange) - -} - - -#' Plot Info Table -#' -#' Function that generates the information table -#' @param model_data refers to data of the each model -#' @param info the information that will be contained in the table -#' @param size_text text size -#' @return The previous expanded graphic -#' @export -plot_info_table <- function(info, size_text){ - - dato <- data.frame( - y = NROW(info):1, - text = paste0(rownames(info), ": ",info[,1]) - ) - p <- ggplot2::ggplot(dato, ggplot2::aes(x = 1, y = y)) + - ggplot2::scale_y_continuous(limits = c(0, NROW(info) + 1), breaks = NULL) + - # scale_x_continuous(breaks=NULL) + - ggplot2::theme_void() + - ggplot2::geom_text(ggplot2::aes(label = text), size = size_text/2.5, fontface = "bold") - - return(p) -} diff --git a/R/visualization.R b/R/visualization.R new file mode 100644 index 00000000..ffac5a0c --- /dev/null +++ b/R/visualization.R @@ -0,0 +1,417 @@ +#' Generate sero-positivity plot from raw data +#' +#' Function that generates the sero positivity plot from raw data +#' @param seroprev_data A data frame containing the data from a seroprevalence survey. +#' This data frame must contain the following columns: +#' \tabular{ll}{ +#' \code{survey} \tab survey Label of the current survey \cr \tab \cr +#' \code{total} \tab Number of samples for each age group\cr \tab \cr +#' \code{counts} \tab Number of positive samples for each age group\cr \tab \cr +#' \code{age_min} \tab age_min \cr \tab \cr +#' \code{age_max} \tab age_max \cr \tab \cr +#' \code{year_init} \tab year_init \cr \tab \cr +#' \code{year_end} \tab year_end \cr \tab \cr +#' \code{tsur} \tab Year in which the survey took place \cr \tab \cr +#' \code{country} \tab The country where the survey took place \cr \tab \cr +#' \code{test} \tab The type of test taken \cr \tab \cr +#' \code{antibody} \tab antibody \cr \tab \cr +#' } +#' @param size_text Text size use in the theme of the graph returned by the function. +#' @return A ggplot object containing the seropositivity-vs-age graph of the raw data of a given seroprevalence survey with its corresponging binomial confidence interval. +#' @examples +#' \dontrun{ +#' data_test <- prepare_seroprev_data(serodata) +#' model_object <- run_seroprev_model( +#' seroprev_data = data_test, +#' seroprev_model_name = "constant_foi_bi", +#' n_iters = 1000 +#') +#' plot_seroprev(model_object, size_text = 15) +#' } +#' @export +plot_seroprev <- function(seroprev_data, + size_text = 6) { + xx <- prepare_bin_data(seroprev_data) + seroprev_plot <- + ggplot2::ggplot(data = xx) + + ggplot2::geom_errorbar(ggplot2::aes(age, ymin = p_obs_bin_l, ymax = p_obs_bin_u), width = 0.1) + + ggplot2::geom_point(ggplot2::aes(age, p_obs_bin, size = xx$bin_size), fill = "#7a0177", colour = "black", shape = 21) + + ggplot2::theme_bw(size_text) + + ggplot2::coord_cartesian(xlim = c(0, 60), ylim = c(0,1)) + + ggplot2::theme(legend.position = "none") + + ggplot2::ylab("Sero-positivity") + ggplot2::xlab("Age") + + return(seroprev_plot) + +} + +#' Generate sero-positivity plot with fitted model +#' +#' Function that generates the seropositivity graph with fitted model. Age is located on the x axis and seropositivity on the y axis with its corresponding confidence interval. +#' @param model_object Object containing the results of fitting a model by means of \link{run_seroprev_model}. +#' @param size_text Text size of the graph returned by the function. +#' @return A ggplot object containing the seropositivity-vs-age graph including the data, the fitted model and their corresponding confindence intervals. +#' @examples +#' \dontrun{ +#' data_test <- prepare_seroprev_data(serodata) +#' model_object <- run_seroprev_model( +#' seroprev_data = data_test, +#' seroprev_model_name = "constant_foi_bi", +#' n_iters = 1000 +#') +#' plot_seroprev_fitted(model_object, size_text = 15) +#' } +#' @export +plot_seroprev_fitted <- function(model_object, + size_text = 6) { + + if (is.character(model_object$fit) == FALSE) { + if (class(model_object$fit@sim$samples) != "NULL" ) { + + foi <- rstan::extract(model_object$fit, "foi", inc_warmup = FALSE)[[1]] + prev_expanded <- get_prev_expanded(foi, seroprev_data = model_object$seroprev_data) + prev_plot <- + ggplot2::ggplot(prev_expanded) + + ggplot2::geom_ribbon( + ggplot2::aes( + x = age, + ymin = predicted_prev_lower, + ymax = predicted_prev_upper + ), + fill = "#c994c7" + ) + + ggplot2::geom_line(ggplot2::aes(x = age, y = predicted_prev), colour = "#7a0177") + + ggplot2::geom_errorbar(ggplot2::aes(age, ymin = p_obs_bin_l, ymax = p_obs_bin_u), + width = 0.1) + + ggplot2::geom_point( + ggplot2::aes(age, p_obs_bin, size = bin_size), + fill = "#7a0177", + colour = "black", + shape = 21 + ) + + ggplot2::theme_bw(size_text) + + ggplot2::coord_cartesian(xlim = c(0, 60), ylim = c(0, 1)) + + ggplot2::theme(legend.position = "none") + + ggplot2::ylab("Sero-positivity") + + ggplot2::xlab("Age") + } + } else { + print("model did not run") + print_warning <- "errors" + df <- data.frame() + + prev_plot <- ggplot2::ggplot(df) + + ggplot2::geom_point() + + ggplot2::xlim(0, 10) + + ggplot2::ylim(0, 10) + + ggplot2::annotate("text", + x = 4, + y = 5, + label = print_warning) + + ggplot2::theme_bw(25) + + ggplot2::theme( + axis.text.x = ggplot2::element_blank(), + axis.text.y = ggplot2::element_blank() + ) + + ggplot2::ylab(" ") + + ggplot2::xlab(" ") + ggplot2::theme(plot.title = ggplot2::element_text(size = 10)) + } + + return(prev_plot) +} + +#' Generate Force-of-Infection Plot +#' +#' Function that generates the Force-of-Infection plot. The x axis corresponds to the decades covered by the survey the y axis to the Force-of-Infection. +#' @param model_object Object containing the results of fitting a model by means of \link{run_seroprev_model}. +#' @param size_text Text size use in the theme of the graph returned by the function. +#' @return A ggplot2 object containing the Force-of-infection-vs-time including the corresponding confidence interval. +#' @examples +#' \dontrun{ +#' data_test <- prepare_seroprev_data(serodata) +#' model_object <- run_seroprev_model( +#' seroprev_data = data_test, +#' seroprev_model_name = "constant_foi_bi", +#' n_iters = 1000 +#' ) +#' plot_foi(model_object, size_text = 15) +#' } +#' @export +plot_foi <- function(model_object, + lambda_sim = NA, + max_lambda = NA, + size_text = 25) { + if (is.character(model_object$fit) == FALSE) { + if (class(model_object$fit@sim$samples) != "NULL") { + foi <- rstan::extract(model_object$fit, + "foi", + inc_warmup = FALSE)[[1]] + + #-------- This bit is to get the actual length of the foi data + foi_data <- model_object$foi_cent_est + + if (!is.na(lambda_sim)) { + lambda_mod_length <- NROW(foi_data) + lambda_sim_length <- length(lambda_sim) + + if (lambda_mod_length < lambda_sim_length) { + remove_x_values <- lambda_sim_length - lambda_mod_length + lambda_sim <- lambda_sim[-c(1:remove_x_values)] + } + + foi_data$simulated <- lambda_sim + } + + #-------- + foi_data$medianv[1] <- NA + foi_data$lower[1] <- NA + foi_data$upper[1] <- NA + + foi_plot <- + ggplot2::ggplot(foi_data) + + ggplot2::geom_ribbon( + ggplot2::aes( + x = year, + ymin = lower, + ymax = upper + ), + fill = "#41b6c4", + alpha = 0.5 + ) + + ggplot2::geom_line(ggplot2::aes(x = year, y = medianv), + colour = "#253494", + size = size_text / 8) + + ggplot2::theme_bw(size_text) + + ggplot2::coord_cartesian(ylim = c(0, max_lambda)) + + ggplot2::ylab("Force-of-Infection") + + ggplot2::xlab("Year") + } + } else { + print("model did not run") + print_warning <- "errors" + df <- data.frame() + + foi_plot <- ggplot2::ggplot(df) + + ggplot2::geom_point() + + ggplot2::xlim(0, 10) + + ggplot2::ylim(0, 10) + + ggplot2::annotate("text", + x = 4, + y = 5, + label = print_warning) + + ggplot2::theme_bw(25) + + ggplot2::theme( + axis.text.x = ggplot2::element_blank(), + axis.text.y = ggplot2::element_blank() + ) + + ggplot2::ylab(" ") + + ggplot2::xlab(" ") + ggplot2::theme(plot.title = ggplot2::element_text(size = 10)) + } + + return(foi_plot) +} + +#' Generate Rhats-Convergence Plot +#' +#' Function that generates the convergence graph of a model. The x axis corresponds to the decades covered by the survey and the y axis to the value of the rhats. +#' All rhats must be smaller than 1 to ensure convergence. +#' @param model_object Object containing the results of fitting a model by means of \link{run_seroprev_model}. +#' @param size_text Text size use in the theme of the graph returned by the function. +#' @return The rhats-convergence plot of the selected model. +#' @examples +#' \dontrun{ +#' data_test <- prepare_seroprev_data(serodata) +#' model_object <- run_seroprev_model( +#' seroprev_data = data_test, +#' seroprev_model_name = "constant_foi_bi", +#' n_iters = 1000 +#') +#' plot_rhats(model_object, size_text = 15) +#' } +#' @export +plot_rhats <- function(model_object, + size_text = 25) { + if (is.character(model_object$fit) == FALSE) { + if (class(model_object$fit@sim$samples) != "NULL") { + rhats <- get_table_rhats(model_object) + + rhats_plot <- + ggplot2::ggplot(rhats, ggplot2::aes(year, rhat)) + + ggplot2::geom_line(colour = "purple") + + ggplot2::geom_point() + + ggplot2::coord_cartesian(ylim = c(0.7, 2)) + + ggplot2::geom_hline(yintercept = 1.1, + colour = "blue", + size = size_text / 12) + + ggplot2::theme_bw(size_text) + + ggplot2::ylab("Convergence (R^)") + } + } else { + print("model did not run") + print_warning <- "errors" + df <- data.frame() + + rhats_plot <- ggplot2::ggplot(df) + + ggplot2::geom_point() + + ggplot2::xlim(0, 10) + + ggplot2::ylim(0, 10) + + ggplot2::annotate("text", + x = 4, + y = 5, + label = print_warning) + + ggplot2::theme_bw(25) + + ggplot2::theme( + axis.text.x = ggplot2::element_blank(), + axis.text.y = ggplot2::element_blank() + ) + + ggplot2::ylab(" ") + + ggplot2::xlab(" ") + ggplot2::theme(plot.title = ggplot2::element_text(size = 10)) + } + + return(rhats_plot) +} + + +#' Generate a vertical arrange of plots summarizing the results of the model implementation +#' +#' Function that generates the combined plots summarizing the results of the model implementation +#' @param model_object Object containing the results of fitting a model by means of \link{run_seroprev_model}. +#' @param size_text Text size use in the theme of the graph returned by the function. +#' @return A ggplot object with a vertical arrange containing the seropositivity, force of infection, and convergence plots. +#' @examples +#' \dontrun{ +#' data_test <- prepare_seroprev_data(serodata) +#' model_object <- run_seroprev_model( +#' seroprev_data = data_test, +#' seroprev_model_name = "constant_foi_bi", +#' n_iters = 1000 +#') +#' plot_seroprev_model(model_object, size_text = 15) +#' } +#' @export +plot_seroprev_model <- function(model_object, + lambda_sim = NA, + max_lambda = NA, + size_text = 25) { + if (is.character(model_object$fit) == FALSE) { + if (class(model_object$fit@sim$samples) != "NULL") { + prev_plot <- plot_seroprev_fitted(model_object = model_object, + size_text = size_text) + + foi_plot <- plot_foi( + model_object = model_object, + lambda_sim = lambda_sim, + max_lambda = max_lambda, + size_text = size_text + ) + + rhats_plot <- plot_rhats(model_object = model_object, + size_text = size_text) + + summary_table <- t( + dplyr::select(model_object$model_summary, + c('seroprev_model_name', 'dataset', 'elpd', 'se', 'converged'))) + summary_plot <- + plot_info_table(summary_table, size_text = size_text) + + plot_arrange <- cowplot::plot_grid( + summary_plot, + prev_plot, + foi_plot, + rhats_plot, + ncol = 1, + nrow = 4, + rel_heights = c(0.5, 1, 1, 1) + ) + } + } else { + print("model did not run") + print_warning <- "errors" + df <- data.frame() + + g0 <- ggplot2::ggplot(df) + + ggplot2::geom_point() + + ggplot2::xlim(0, 10) + + ggplot2::ylim(0, 10) + + ggplot2::annotate("text", + x = 4, + y = 5, + label = print_warning) + + ggplot2::theme_bw(25) + + ggplot2::theme( + axis.text.x = ggplot2::element_blank(), + axis.text.y = ggplot2::element_blank() + ) + + ggplot2::ylab(" ") + + ggplot2::xlab(" ") + g1 <- g0 + g0 <- g0 + ggplot2::labs(subtitle = model_object$model) + + ggplot2::theme(plot.title = ggplot2::element_text(size = 10)) + + plot_arrange <- + cowplot::plot_grid(g0, g1, g1, g1, g1, ncol = 1, nrow = 5) + } + + return(plot_arrange) +} + + +#' Plot Info Table +#' +#' Function that generates the information table +#' @param info the information that will be contained in the table +#' @param size_text Text size of the graph returned by the function +#' @return p, a variable that will be used in the \link{visualisation} module +#' @examples +#' \dontrun{ +#' data_test <- prepare_seroprev_data(serodata) +#' model_object <- run_seroprev_model( +#' seroprev_data = data_test, +#' seroprev_model_name = "constant_foi_bi", +#' n_iters = 1000 +#') +#' info = t(model_object$model_summary) +#' plot_info_table (info, size_text = 15) +#' } +#' @export +plot_info_table <- function(info, size_text) { + dato <- data.frame(y = NROW(info):seq_len(1), + text = paste0(rownames(info), ": ", info[, 1])) + p <- ggplot2::ggplot(dato, ggplot2::aes(x = 1, y = y)) + + ggplot2::scale_y_continuous(limits = c(0, NROW(info) + 1), breaks = NULL) + + ggplot2::theme_void() + + ggplot2::geom_text(ggplot2::aes(label = text), + size = size_text / 2.5, + fontface = "bold") + + return(p) +} + + +#' Function that generates a plot showing the results for several models. +#' +#' @param ... The first n arguments of the function are taken as plots ti be arranged in a single plot. +#' This objects can be obtained by means of \link{run_seroprev_model}. +#' @param n_row Number of rows of the plot array. +#' @param n_col Number of columns of the plot array. +#' @return A ggplot object containing an array with the plots in \code{models_list}. +#' @examples +#' \dontrun{ +#' data_test <- prepare_seroprev_data(serodata) +#' model_object_constant <- run_seroprev_model(seroprev_data = data_test, +#' seroprev_model_name = "constant_foi_bi") +#' model_object_normalbi <- run_seroprev_model(seroprev_data = data_test, +#' seroprev_model_name = "continuous_foi_normal_bi") +#' model_object_normallog <- run_seroprev_model(seroprev_data = data_test, +#' seroprev_model_name = "continuous_foi_normal_log") +#' plot_seroprev_models_list(model_object_constant, model_object_normalbi, model_object_normallog, n_row = 1, n_col = 3) +#' } +#' @export +plot_seroprev_models_grid <- function(..., n_row = NULL, n_col = NULL) { + # TODO Distribute rows and columns according to the number of rows. + plot_seroprev_models <- cowplot::plot_grid(..., nrow = n_row, ncol = n_col) + return(plot_seroprev_models) +} \ No newline at end of file diff --git a/README.Rmd b/README.Rmd index 8b73605d..745c0010 100644 --- a/README.Rmd +++ b/README.Rmd @@ -1,5 +1,10 @@ --- output: github_document +editor_options: + markdown: + wrap: 72 +bibliography: references.bib +link-citations: true --- ```{r, include = FALSE} @@ -11,52 +16,199 @@ knitr::opts_chunk$set( ) ``` -## *serofoi* - -Estimates the _Force-of-Infection_ of a given pathogen from population based sero-prevalence studies on a bayesian framework. +## *serofoi*: force-of-infection from population based serosurveys with age-disagregated data -[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) -[![R-CMD-check](https://github.com/epiverse-trace/readepi/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/epiverse-trace/readepi/actions/workflows/R-CMD-check.yaml) -[![Codecov test coverage](https://codecov.io/gh/epiverse-trace/readepi/branch/main/graph/badge.svg)](https://app.codecov.io/gh/epiverse-trace/readepi?branch=main) -[![lifecycle-concept](https://raw.githubusercontent.com/reconverse/reconverse.github.io/master/images/badge-concept.svg)](https://www.reconverse.org/lifecycle.html#concept) + +[![License: +MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) +[![R-CMD-check](https://github.com/TRACE-LAC/serofoi/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/TRACE-LAC/serofoi/actions/workflows/R-CMD-check.yaml) +[![Codecov test +coverage](https://codecov.io/gh/TRACE-LAC/serofoi/branch/dev/graph/badge.svg)](https://app.codecov.io/gh/TRACE-LAC/serofoi/tree/dev/R?displayType=list) +[![lifecycle-concept](https://raw.githubusercontent.com/reconverse/reconverse.github.io/master/images/badge-concept.svg)](https://www.reconverse.org/lifecycle.html#concept) + +***serofoi*** is an R package to estimates the *Force-of-Infection* of a +given pathogen from age-disaggregated population based sero-prevalence +studies, using a Bayesian framework. + +***serofoi*** implements methods outlined in [@cucunubá2017] and +[@carrera2020] + +***serofoi*** relies on +[`rstan`](https://mc-stan.org/users/interfaces/rstan) + +***serofoi*** is part of the [Epiverse +Initiative](https://data.org/initiatives/epiverse/). ## Installation + You can install the **development version** of `serofoi` from [GitHub](https://github.com/) with: ``` r # install.packages("remotes") -remotes::install_github("TRACE-LAC/serofoi") +# remotes::install_github("TRACE-LAC/serofoi") +library(serofoi) ``` ## Quick start -These examples illustrate some of the current functionalities: +```{r cleaning, include = FALSE, echo = TRUE} +library(serofoi) +rownames(serodata) <- NULL + +``` + +The package provides an example dataset of the observed serosurvey data, +`serodata`. This example is the basic entry for the package. + +```{r ex, include = TRUE} + +# Load example serodata data included with the package +data(serodata) +head(serodata, 5) + +``` + +The function `prepare_seroprev_data` will prepare the entry data for entering the +modelling functions. The seroprevalence *prepared data* can be +visualised with the `plot_seroprev` function. This function also plots +the binomial confidence interval of the observed data. + +```{r data_test, include = TRUE, fig.height=6, fig.width=6, message=FALSE} + +data_test <- prepare_seroprev_data(serodata) + +plot_seroprev(data_test, size_text = 15) + +``` + +#### Current version of the package runs ***three*** different FoI models + +The `run_seroprev_model` function allows specifying the Bayesian model from *R*, +while running in the back from `rstan`. The number of iterations, +thinning, and other parameters can be customised. + +::: {.alert .alert-primary} +NOTE: Running the *serofoi* models for the first time on your local +computer make take a few minutes while the *rstan* code is compiled +locally. Afterwards, no further local compilation is needed. +::: + +#### Model 1. Constant Force-of-Infection (endemic model) + +For the *endemic model* a small number of iterations is enough for +achieving convergence, as it only fits one parameter (the constant FoI) +from a binomial distribution. + +```{r model_1, include = TRUE, errors = FALSE, warning = FALSE, message = FALSE } +model_1 <- run_seroprev_model(seroprev_data = data_test, + seroprev_model_name = "constant_foi_bi", + n_iters = 500, + n_thin = 2) + +``` + +#### Model 2. Time-varying Force-of-Infection (epidemic model) + +For the *epidemic model,* a larger number of iterations is required for +achieving convergence, as it fits yearly FoI values from a binomial +distribution. The number of iterations required may depend on the number +of years, reflected by the difference between year of the serosurvey and +the maximum age-class sampled. + +```{r model_2, include = TRUE, errors = FALSE, warning = FALSE, message = FALSE } +model_2 <- run_seroprev_model(seroprev_data = data_test, + seroprev_model_name = "continuous_foi_normal_bi", + n_iters = 1500, + n_thin = 2) +``` + +#### Model 3. Time-varying Force-of-Infection (fast epidemic model) + +For the *fast* *epidemic model,* a larger number of iterations is +required for achieving convergence, compared to the previous models. -```{r example} -##library(serofoi) +```{r model_3, include = TRUE, errors = FALSE, warning = FALSE, message = FALSE } +model_3 <- run_seroprev_model(seroprev_data = data_test, + seroprev_model_name = "continuous_foi_normal_log", + n_iters = 1500, + n_thin = 2) +``` + +For each model, the plot_seroprev_model function generate a vertical arrange of +plots summarising the results of the model implementation plotting +functions. Crucially, it shows the (expected) log-predictive density +`elpd`, standard error `se`, and allows to check convergence based on +`R-hat` convergence diagnostics. +```{r plot_seroprev_model, include = FALSE, echo = TRUE, errors = FALSE, warning = FALSE, message = FALSE, fig.height=12, fig.width=6} + +plot_seroprev_model(model_2, size_text = 15) ``` -### Lifecycle -This package is currently a *concept*, as defined by the [RECON software -lifecycle](https://www.reconverse.org/lifecycle.html). This means that essential -features and mechanisms are still being developed, and the package is not ready -for use outside of the development team. +Also, the `plot_seroprev_models_grid` allows a visual a comparison of +the models based on the (expected) log-predictive density `elpd`, +standard error `se`, and allows to check convergence based on `R-hat` +convergence diagnostics. +```{r, model_comp, include=FALSE, echo=TRUE, warning=FALSE, message=FALSE, fig.height=12, message=FALSE} +p1 <- plot_seroprev_model(model_1, size_text = 15) +p2 <- plot_seroprev_model(model_2, size_text = 15) +p3 <- plot_seroprev_model(model_3, size_text = 15) + +plot_seroprev_models_grid(p1, p2, p3, n_row = 1, n_col = 3) +``` + +For more detailed information and examples, please check the [online +documentation](https://epiverse-trace.github.io/serofoi/articles) as +package vignettes under Get Started. ### Contributions -Contributions are welcome via [pull requests](https://github.com/TRACE-LAC/serofoi/pulls). Contributors to the project include: -- [Zulma M. Cucunubá](https://github.com/zmcucunuba) (author) -- [Miguel Gamez](https://github.com/megamezl) (author) +- [Zulma M. Cucunubá](https://github.com/zmcucunuba) (author, + maintainer) + +- [Nicolás Tórres](https://github.com/ntorresd) (author) -### Code of Conduct -Please note that the linelist project is released with a -[Contributor Code of Conduct](https://contributor-covenant.org/version/2/0/CODE_OF_CONDUCT.html). +- [Benjamin Lambert](https://ben-lambert.com/about/) (author) + +- [Pierre Nouvellet](https://github.com/pnouvellet) (author) + +- [Miguel Gamez](https://github.com/megamezl) (contributor) + +- [Geraldine Gómez](https://github.com/megamezl) (contributor) + +- [Jaime A. Pavlich-Mariscal](https://github.com/jpavlich) + (contributor) + +## Package vignettes + +More details on how to use ***serofoi*** can be found in the [online +documentation as package +vignettes](https://epiverse-trace.github.io/serofoi/), under "Get +Started". + +## Help + +To report a bug please open an +[issue](https://github.com/epiverse-trace/serofoi/issues/new/choose). + +## Contribute + +Contributions to ***serofoi*** are welcomed. Please follow the [package +contributing +guide](https://github.com/epiverse-trace/serofoi/blob/main/.github/CONTRIBUTING.md). + +## Code of conduct + +Please note that the ***serofoi*** project is released with a +[Contributor Code of +Conduct](https://github.com/epiverse-trace/.github/blob/main/CODE_OF_CONDUCT.md). By contributing to this project, you agree to abide by its terms. + +## References diff --git a/README.md b/README.md index 02089e84..14212826 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,30 @@ -## *serofoi* -Estimates the *Force-of-Infection* of a given pathogen from population -based sero-prevalence studies on a bayesian framework. +## *serofoi*: force-of-infection from population based serosurveys with age-disagregated data [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) -[![R-CMD-check](https://github.com/epiverse-trace/readepi/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/epiverse-trace/readepi/actions/workflows/R-CMD-check.yaml) +[![R-CMD-check](https://github.com/TRACE-LAC/serofoi/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/TRACE-LAC/serofoi/actions/workflows/R-CMD-check.yaml) [![Codecov test -coverage](https://codecov.io/gh/epiverse-trace/readepi/branch/main/graph/badge.svg)](https://app.codecov.io/gh/epiverse-trace/readepi?branch=main) +coverage](https://codecov.io/gh/TRACE-LAC/serofoi/branch/dev/graph/badge.svg)](https://app.codecov.io/gh/TRACE-LAC/serofoi/tree/dev/R?displayType=list) [![lifecycle-concept](https://raw.githubusercontent.com/reconverse/reconverse.github.io/master/images/badge-concept.svg)](https://www.reconverse.org/lifecycle.html#concept) + +***serofoi*** is an R package to estimates the *Force-of-Infection* of a +given pathogen from age-disaggregated population based sero-prevalence +studies, using a Bayesian framework. + +***serofoi*** implements methods outlined in (Cucunubá et al. +[2017](#ref-cucunubá2017)) and (Carrera et al. [2020](#ref-carrera2020)) + +***serofoi*** relies on +[`rstan`](https://mc-stan.org/users/interfaces/rstan) + +***serofoi*** is part of the [Epiverse +Initiative](https://data.org/initiatives/epiverse/). + ## Installation You can install the **development version** of `serofoi` from @@ -20,37 +32,228 @@ You can install the **development version** of `serofoi` from ``` r # install.packages("remotes") -remotes::install_github("TRACE-LAC/serofoi") +# remotes::install_github("TRACE-LAC/serofoi") +library(serofoi) ``` ## Quick start -These examples illustrate some of the current functionalities: +The package provides an example dataset of the observed serosurvey data, +`serodata`. This example is the basic entry for the package. + +``` r + +# Load example serodata data included with the package +data(serodata) +head(serodata, 5) +#> survey total counts age_min age_max year_init year_end tsur country test +#> 1 COL-035-93 34 0 1 1 2012 2012 2012 COL ELISA +#> 2 COL-035-93 25 0 2 2 2012 2012 2012 COL ELISA +#> 3 COL-035-93 35 1 3 3 2012 2012 2012 COL ELISA +#> 4 COL-035-93 29 0 4 4 2012 2012 2012 COL ELISA +#> 5 COL-035-93 36 0 5 5 2012 2012 2012 COL ELISA +#> antibody +#> 1 IgG anti-T.cruzi +#> 2 IgG anti-T.cruzi +#> 3 IgG anti-T.cruzi +#> 4 IgG anti-T.cruzi +#> 5 IgG anti-T.cruzi +``` + +The function `prepare_seroprev_data` will prepare the entry data for +entering the modelling functions. The seroprevalence *prepared data* can +be visualised with the `plot_seroprev` function. This function also +plots the binomial confidence interval of the observed data. ``` r -##library(serofoi) + +data_test <- prepare_seroprev_data(serodata) + +plot_seroprev(data_test, size_text = 15) ``` -### Lifecycle + -This package is currently a *concept*, as defined by the [RECON software -lifecycle](https://www.reconverse.org/lifecycle.html). This means that -essential features and mechanisms are still being developed, and the -package is not ready for use outside of the development team. +#### Current version of the package runs ***three*** different FoI models -### Contributions +The `run_seroprev_model` function allows specifying the Bayesian model +from *R*, while running in the back from `rstan`. The number of +iterations, thinning, and other parameters can be customised. + +
+ +NOTE: Running the *serofoi* models for the first time on your local +computer make take a few minutes while the *rstan* code is compiled +locally. Afterwards, no further local compilation is needed. + +
+ +#### Model 1. Constant Force-of-Infection (endemic model) + +For the *endemic model* a small number of iterations is enough for +achieving convergence, as it only fits one parameter (the constant FoI) +from a binomial distribution. + +``` r +model_1 <- run_seroprev_model(seroprev_data = data_test, + seroprev_model_name = "constant_foi_bi", + n_iters = 500, + n_thin = 2) +#> [1] "serofoi model constant_foi_bi finished running ------" +#> [,1] +#> seroprev_model_name "constant_foi_bi" +#> dataset "COL-035-93" +#> country "COL" +#> year "2012" +#> test "ELISA" +#> antibody "IgG anti-T.cruzi" +#> n_sample "747" +#> n_agec "72" +#> n_iter "500" +#> elpd "-92.88" +#> se "6.44" +#> converged "Yes" +``` + +#### Model 2. Time-varying Force-of-Infection (epidemic model) + +For the *epidemic model,* a larger number of iterations is required for +achieving convergence, as it fits yearly FoI values from a binomial +distribution. The number of iterations required may depend on the number +of years, reflected by the difference between year of the serosurvey and +the maximum age-class sampled. + +``` r +model_2 <- run_seroprev_model(seroprev_data = data_test, + seroprev_model_name = "continuous_foi_normal_bi", + n_iters = 1500, + n_thin = 2) +#> [1] "serofoi model continuous_foi_normal_bi finished running ------" +#> [,1] +#> seroprev_model_name "continuous_foi_normal_bi" +#> dataset "COL-035-93" +#> country "COL" +#> year "2012" +#> test "ELISA" +#> antibody "IgG anti-T.cruzi" +#> n_sample "747" +#> n_agec "72" +#> n_iter "1500" +#> elpd "-74.69" +#> se "5.83" +#> converged "Yes" +``` + +#### Model 3. Time-varying Force-of-Infection (fast epidemic model) + +For the *fast* *epidemic model,* a larger number of iterations is +required for achieving convergence, compared to the previous models. -Contributions are welcome via [pull -requests](https://github.com/TRACE-LAC/serofoi/pulls). +``` r +model_3 <- run_seroprev_model(seroprev_data = data_test, + seroprev_model_name = "continuous_foi_normal_log", + n_iters = 1500, + n_thin = 2) +#> [1] "serofoi model continuous_foi_normal_log finished running ------" +#> [,1] +#> seroprev_model_name "continuous_foi_normal_log" +#> dataset "COL-035-93" +#> country "COL" +#> year "2012" +#> test "ELISA" +#> antibody "IgG anti-T.cruzi" +#> n_sample "747" +#> n_agec "72" +#> n_iter "1500" +#> elpd "-72.22" +#> se "7.15" +#> converged "Yes" +``` + +For each model, the plot\_seroprev\_model function generate a vertical +arrange of plots summarising the results of the model implementation +plotting functions. Crucially, it shows the (expected) log-predictive +density `elpd`, standard error `se`, and allows to check convergence +based on `R-hat` convergence diagnostics. + +Also, the `plot_seroprev_models_grid` allows a visual a comparison of +the models based on the (expected) log-predictive density `elpd`, +standard error `se`, and allows to check convergence based on `R-hat` +convergence diagnostics. + +For more detailed information and examples, please check the [online +documentation](https://epiverse-trace.github.io/serofoi/articles) as +package vignettes under Get Started. + +### Contributions Contributors to the project include: -- [Zulma M. Cucunubá](https://github.com/zmcucunuba) (author) -- [Miguel Gamez](https://github.com/megamezl) (author) + - [Zulma M. Cucunubá](https://github.com/zmcucunuba) (author, + maintainer) + + - [Nicolás Tórres](https://github.com/ntorresd) (author) + + - [Benjamin Lambert](https://ben-lambert.com/about/) (author) + + - [Pierre Nouvellet](https://github.com/pnouvellet) (author) + + - [Miguel Gamez](https://github.com/megamezl) (contributor) + + - [Geraldine Gómez](https://github.com/megamezl) (contributor) + + - [Jaime A. Pavlich-Mariscal](https://github.com/jpavlich) + (contributor) + +## Package vignettes + +More details on how to use ***serofoi*** can be found in the [online +documentation as package +vignettes](https://epiverse-trace.github.io/serofoi/), under “Get +Started”. + +## Help + +To report a bug please open an +[issue](https://github.com/epiverse-trace/serofoi/issues/new/choose). + +## Contribute + +Contributions to ***serofoi*** are welcomed. Please follow the [package +contributing +guide](https://github.com/epiverse-trace/serofoi/blob/main/.github/CONTRIBUTING.md). + +## Code of conduct + +Please note that the ***serofoi*** project is released with a +[Contributor Code of +Conduct](https://github.com/epiverse-trace/.github/blob/main/CODE_OF_CONDUCT.md). +By contributing to this project, you agree to abide by its terms. + +## References + +
+ +
+ +Carrera, Jean-Paul, Zulma M. Cucunubá, Karen Neira, Ben Lambert, Yaneth +Pittí, Jesus Liscano, Jorge L. Garzón, et al. 2020. “Endemic and +Epidemic Human Alphavirus Infections in Eastern Panama: An Analysis of +Population-Based Cross-Sectional Surveys.” *The American Journal of +Tropical Medicine and Hygiene* 103 (6): 2429–37. +. + +
+ +
+ +Cucunubá, Zulma M, Pierre Nouvellet, Lesong Conteh, Mauricio Javier +Vera, Victor Manuel Angulo, Juan Carlos Dib, Gabriel Jaime Parra -Henao, +and María Gloria Basáñez. 2017. “Modelling Historical Changes in the +Force-of-Infection of Chagas Disease to Inform Control and Elimination +Programmes: Application in Colombia.” *BMJ Global Health* 2 (3): +e000345. . -### Code of Conduct +
-Please note that the linelist project is released with a [Contributor -Code of -Conduct](https://contributor-covenant.org/version/2/0/CODE_OF_CONDUCT.html). -By contributing to this project, you agree to abide by its terms. \ No newline at end of file +
diff --git a/_pkgdown.yml b/_pkgdown.yml new file mode 100644 index 00000000..89edf49d --- /dev/null +++ b/_pkgdown.yml @@ -0,0 +1,4 @@ +url: https://trace-lac.github.io/serofoi/ +template: + bootstrap: 5 + diff --git a/config.yml b/config.yml deleted file mode 100644 index b07d7b43..00000000 --- a/config.yml +++ /dev/null @@ -1,10 +0,0 @@ -default: - constant_foi_bi: - stan_path: "inst/extdata/stanmodels/constant_foi_bi.stan" - rds_path: "inst/extdata/stanmodels/ConstantUniformFOI.RDS" - continuous_foi_normal_bi: - stan_path: "inst/extdata/stanmodels/continuous_foi_normal_bi.stan" - rds_path: "inst/extdata/stanmodels/ContinuousNormalFOI.RDS" - continuous_foi_normal_log: - stan_path: "inst/extdata/stanmodels/continuous_foi_normal_log.stan" - rds_path: "inst/extdata/stanmodels/ContinuousNormalLogFOI_lowt.RDS" diff --git a/data/chagas2012.RDS b/data/chagas2012.RDS new file mode 100644 index 0000000000000000000000000000000000000000..885b27279b188af581ed75e0b499eed3bcf41be3 GIT binary patch literal 646 zcmV;10(t!(iwFP!000001MQgKZW2)t#!va9K%?12FTC)AG^Q~|2#T$(|GJbyOS>(_ z*2KGJ3u{BtE@oL&yy8uK4KIBppFliizuCBBHyGNBCe9|y?|k2!*>jf684}*-lu}8R zO3bNbS`StF-C@13qP;s>%NC`TsDDsDDS=Nw>POUfsLxQpTL!5wQvahq_X2zgQa_}=`UYGBP2wmZ z^;zo2)Q8uhtI$>G4d@N%8gvc14qb=dgx(^;Z$LMox1qP8cc6EmEocjR7kU?Z4|)%} z3EhO=hu$|q@_z(uA>Kl~g?J0`w}>AEaV2#Gjsi*@1)Q;t%x@n9Unrb`O6o{>1yoW; z!YiPP{vVpGHZ2*-P=+*&o{x0RY8+HVh!Al-MfAKHjg!s1?fTuqVX^HEzIMeIUwrY! z7ynxODwWXw9R0Yt_LkQf6vtI9Wk@kN}--(g_7>~!_ g`AfD>?LNIEnYoVb+r$T6>s8ec4X`xw_!@c(T%$Nx09V0v@Co<|%xUveJP$tB=34?Y zU>YoH^F0Nhfy>&sC5?|XE{BZM^JsipqwdrAgvZUFLG4pq?)&)eF%MMfaL%1*h0L8cnk3s;zx)ddvU>a1dcp% z9eJFyj*M>~J)g;(gM#abc?}d?N6c%W2>w4bT5dM@kstYy9)ss2UTxHmODtHhxS1k& zUeopNc1BumFME<}+k>w?_St8jefHVE(SGokEOAR-m=6B9EyBF*4D3(lkW$>fE6*v^ z?hh>2fm)DV^X#H$1*H4}nH-wZKI>UM7e-=gm{tcm=BkBg>~vy#=!Z#2AAKD=nJm+f`f{(IKmzX(eI_?y>f-+yIapZ)Ol6Iea(^Lu^I z`>nlxZ?BW~x>3ZtmZ9 ze&UhdAHQzw|8akMzk_WazTCYI_uKnkm%UG>&4*^X^zN&&=XKTtKNtXG36wcd`9S>u z17H>c%ZNy^(f}>dQOw0e4y!ED0mqmk2o*5W#Eb}qAjWKg42dN$d4L?I5}-Cj`sy*z zRKT3!l$^K>hz!yZ`&ec$z%b#*MEDAk0+WcSiS$){ph4&&4~ddUU9LjpSiC4GR-yo+ z3W(?^G30C`DvSyss~JW}U)Y0gXpo06Lu4Vt3CD1V1Qa4U0y4tVa$Gu|oP{ zh7)VV5VNpxiQN*j!KIIs$N+he5qu?slnKP7;xNV_HR6?q4%q{|0G5In5>ZX*7-SU_ zA6OAtlA<*d1F?jAJ}J=;i9@223ZbizXoyr$ISQZ{q~aD)CDx`a9W0Wnc$V~htfCiT z6}=q3y#l(akIkF%)JP?*3B*zbg*3x#DRt8UR-t{=SO*!gBqA~`Af^>IgHCC+6mw{B zT@8VK_!?gjVh{YS8FeZzLoFYRjn;fY&B^6j$ z<4}3S*MS*u;t{PQC}eDcOd#|uf^HULA7>JI$dn)=)tSbMGnP9ms9Vx^3~SC_FZ`59 zs~|G6f~hVP)>deosRc7x@PICO$`vJNV^WI}Emv5Sr5K@0E`0cwJc`Sl$O4pnJ6RtN zmK)u2J6Tx}pK6NPl=3dz!(PT zR6FDpBSD0i$4FT0OpellOzm#g`rrGLELA2UahR!GYKK0Nv%q~6Kn zdbXOJh(x9RC$R47zYHh!^0-+Y*VEJW&!sm{X5UTOv&H=9(^-Aftkbss1+xFK{qOGX z?(dD`{@tT=KEJA0_38DZ9r8H)TbZ@{i*5Fo?-w7M+pWuLzN)9&KV8n>&sNLs>C^gM z^Y&&k+j*>i*@k)B)Qh*1*<{rjKD#$Gv#aj;aMez<9eXdlxW%8EC5EjN{?q*G7Rzt0 Un?*CbY}WnpFH!wL<_r%208-*AuK)l5 literal 0 HcmV?d00001 diff --git a/data/chik2015.RData b/data/chik2015.RData new file mode 100644 index 0000000000000000000000000000000000000000..af87681d8274b8071192ba0e00956008ede85734 GIT binary patch literal 1119 zcmV-l1fcsLiwFP!000001Fe_OZrer>#u>|Q6C*7G^ab2od$18VEs&mSa`|t?U6ST5 zB}$iowdqu-ECG^|)<6$=gdTeDtMrlj07YENqQ1{EQ1s#h#UDq*Z)ay_mt^5ruMVq2 z$8mbj{@$L`J8024C~bKB+G#EA#S>@WdDfnvUi>uq`J0!g-?hG9wAatu<3)SycmIFx z74Fgc|F6u;)9=521gqnGcBk(+zqiL9?Qz^5*K5zU{Ve;i4%Rt4Kiiy7oy|Gf*x~1Q z_H=Xp;qUJHTW8l#cY5Zp&G}X5Cm!hi`P;_+ALqyS>uvM!8w518v?@!7-c}|0@XeAfT<5G0wTo<4KzecF&h$jTWN?EIK~j3FM)v~rbH-sAx85e zpI89nd&t{l3{;v(Uo{5m5|}ZZf&&*GkwIGG0Mqn_xJ|er5xznsz&Ic(B7Nlms1drz zd}2hTE@vS!OkU&^D^LJYdPH=Ts5sh)3ZopzYWe}v=l7xOYvjRC5t+|${4pE?0fitM z0U2aqVq#82)&mQNP$GRH!wD5)2wB*$z-kHE;E{`zL>}@G1@Mg+WE4XzlDv&EL<;dn znhxnbJO>tn=o3-R$TG+>B;K2kz%2S1eET_c6Bmm&;jWQHw8juiBovYqqb1Z$hM0wNQDfz$ z#Da*(lz^C$SPUwm)lkf$!BtrS2k_OdAcjN?tOdlh&)fWnh-&HpLuhU*IzipEl0-~i zbBEDsK;#f9T3KgEwJxZ@!fK1kYd#M2kOPls9YG;w6Qly6rvY@+5bHRNkcU(XB2t|y z%s6Ga)10~meaEn7?DgDDh_nhKBg>iUTw-py!k(HllQ}o&oV#3Ja5N@0FVJ$iL0R$< zy5!u2Z^5m&$cQXJ!KagP;b6GX4VRONav~HApH8NaVi~?w7!?rFlZMS@_zW=lF_Bh2 zZjC_+jb%6`#RdtHkqsHc5S?l&4lxo$h*>UaD=@I-E0yJLZ~GY7CW?q5tU}IghRCd? z7xK%A zIOHR=a*@7@Nv*h~s|0zdQq*D;Kw->naLniCxGn7N+wsB0v|e^E$9!eJsxMaaMN1!@ z-H(}rKuIL!e=i<<2+6n6Q9WBtjzuh!!6R6A^j`g7^^quF;;_G~f# zXWNQd&|S@Z)Mi*&$roMzFWL+ZniF~ z`Kq37|GJpJo2{1J)u;8_=FRnFwsTqkx()NDsTXf1v&pJ6JiRkCv&-&!f7K4Oz4uOd laf82_C2m_M{Kxs_4W{2*HH&6;(RBUs@n5_S-YYE+0079aCh-6O literal 0 HcmV?d00001 diff --git a/data/data.RDS b/data/data.RDS deleted file mode 100644 index 78f058b9dc48ec772cb237b917c261923f0e35ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 468 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 literal 0 HcmV?d00001 diff --git a/data/serodata.RData b/data/serodata.RData new file mode 100644 index 0000000000000000000000000000000000000000..1d653bfed1a6fad5cdef3cbb5a61e3f43eb5e465 GIT binary patch literal 663 zcmV;I0%-joiwFP!000001MQmIZW2)xhPNCPXfz~x;e{8ZF^w@oP^`9|I+R08OH1h? z>0L9z*pRe?nHf~P;!S)FFMTARK-@6@nmEf&Ftis%Jg)uds+dR)pJ zXOvQLm59YuJgFa5^60RhUs2l8;)Y77v}Ve+oPO8zOg;9l)(iU1>U$IMOr_P#7fZ|e z)si^kh$GH_>L_(*(ie@gnqI~#SRVO&3%w4$q&WBtTn1Ob$KV^Vz~-lT5q!kvTLg1p z7A&#(o`BE6C6>3y_>gfaB9D)w{468)DL>_N?PpjAR2Tcf`1@?$RM-#3v3TIq``lx` z3j4HQibsx1T|ADcP)CYgf5hjyE}MVZb)(jgibv_F?~g8nan?F~d{iE-JIm*F$;U_S zhv)t4erMIuUv)_9WI?J+Iwudn9LUc*od@bO)PJadP(LYxPeJNO)OV=QP``TtQeUM0 zM}6)U_!^{sNPYDkxCR=;kx%Ng)Q_nTuR~X$E6`QwDs&CH23?1)LvKKD65%(X8_-+O zThQCk+t5wuCiD*U4)iYcE_4gJ1-%EoXMp7Y@YzPZjd&aJHsbq;ANX-4bp(!lN*(!} zvyO~!AAMgaoP$d0NO%QQQb)oopbGy#G+t>nId%gT&q2mm`_QV%oeDTE>|62Ru-?1cZ^W1Xr$87=TO?TjYvW7Io>wD%Ig*yF# z?YU65%v0;+yl01``2{jPv`puuXZJi9si|SvUFd|T7oyzh#Lh4XS#FRv+5h`~cgXgh xcKV+SwEx@sj*axkcs%~jU$S#%y7ZD{W+uPhDSU8rzE-~`_irwoXRQDv008yuSj7MU literal 0 HcmV?d00001 diff --git a/data/veev2012.RDS b/data/veev2012.RDS new file mode 100644 index 0000000000000000000000000000000000000000..c021ca471de70ff163bf674fc55fc51b051a9d56 GIT binary patch literal 395 zcmV;60d)Q!iwFP!000001MQYwO9DX@hR3h+1H;IRF1+v}A|k~^qi%8+)R01gO1hIt zH(Ai#*d43A+ketetY45F-E%f(AR-W=P#B+m-#Ih;o?RHdO*6(~EFO)pSOP9t;^w+t zItFhGLA^&5%h& z?;vZ)BjmnPpO@>yJT$+nkm?IR%tQ6mR|UEEMV^A3C){7jtCf{LPmrfb-4EDA-A3I} za#MeGWCPixdSA-3>>S#;FYi}V*3&ww?@}Dh^YRe*zsyyhZ}a5X=iwTI!{EX z7o98p-wEYMuroRLpiDLkfvL#5b9A zk_Fw3-O<{&{U`mz`UP#Xdhf;zL&y52oZc9VpVD2YWPB&vx^ zqTSs#3nxSi6g(wHMvM)pr>|=5LQpSs8ja3UT(C&UdhoFI zEiyaweFgIhX6IOa15N90>DK1Eq|41~Gj+p~*AO+&8 zGqI=4MGLn$9bu_&O-$|pTcbnP8yluX=`+xT%c$KmOoQX^&rD$E0Cf_}ix0MFOR*#2zCrp1VO;^h1OtAO`ld;lLbsa47e F0084 + %\VignetteIndexEntry{serofoi} + %\VignetteEngine{knitr::rmarkdown} + %\VignetteEncoding{UTF-8} +--- + +```{r, include = FALSE} +knitr::opts_chunk$set( + collapse = TRUE, + comment = "#>" +) +``` + +```{r setup} +library(serofoi) +``` + +# Prepare the data for using serofoi +```{r} +data_test <- prepare_data(serodata) +``` diff --git a/doc/serofoi.html b/doc/serofoi.html new file mode 100644 index 00000000..e4798c74 --- /dev/null +++ b/doc/serofoi.html @@ -0,0 +1,365 @@ + + + + + + + + + + + + + + +serofoi + + + + + + + + + + + + + + + + + + + + + + + + + + +

serofoi

+ + + +
library(serofoi)
+
+

Prepare the data for using serofoi

+
data_test <- prepare_data(serodata)
+
+ + + + + + + + + + + diff --git a/inst/config.yml b/inst/config.yml new file mode 100644 index 00000000..9fc90915 --- /dev/null +++ b/inst/config.yml @@ -0,0 +1,2 @@ +default: + stan_models_base_path: "extdata/stanmodels" diff --git a/inst/extdata/config.yml b/inst/extdata/config.yml deleted file mode 100644 index bdbd0d4c..00000000 --- a/inst/extdata/config.yml +++ /dev/null @@ -1,10 +0,0 @@ -default: - constant_foi_bi: - stan_path: "stanmodels/constant_foi_bi.stan" - rds_path: "stanmodels/ConstantUniformFOI.RDS" - continuous_foi_normal_bi: - stan_path: "stanmodels/continuous_foi_normal_bi.stan" - rds_path: "stanmodels/ContinuousNormalFOI.RDS" - continuous_foi_normal_log: - stan_path: "stanmodels/continuous_foi_normal_log.stan" - rds_path: "stanmodels/ContinuousNormalLogFOI_lowt.RDS" diff --git a/man/chagas2012.Rd b/man/chagas2012.Rd new file mode 100644 index 00000000..39d0832a --- /dev/null +++ b/man/chagas2012.Rd @@ -0,0 +1,19 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/chagas2012.R +\docType{data} +\name{chagas2012} +\alias{chagas2012} +\title{Seroprevalence data on serofoi} +\format{ +An object of class \code{"cross"}; see \code{\link[qtl]{read.cross}}. +} +\usage{ +chagas2012 +} +\description{ +Data from a serological surveys +} +\examples{ +chagas2012 +} +\keyword{datasets} diff --git a/man/chik2015.Rd b/man/chik2015.Rd new file mode 100644 index 00000000..044418ba --- /dev/null +++ b/man/chik2015.Rd @@ -0,0 +1,19 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/chik2015.R +\docType{data} +\name{chik2015} +\alias{chik2015} +\title{Seroprevalence data on serofoi} +\format{ +An object of class \code{"cross"}; see \code{\link[qtl]{read.cross}}. +} +\usage{ +chik2015 +} +\description{ +Data from a serological surveys +} +\examples{ +chik2015 +} +\keyword{datasets} diff --git a/man/extract_seroprev_model_summary.Rd b/man/extract_seroprev_model_summary.Rd new file mode 100644 index 00000000..498b3b1f --- /dev/null +++ b/man/extract_seroprev_model_summary.Rd @@ -0,0 +1,39 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/modelling.R +\name{extract_seroprev_model_summary} +\alias{extract_seroprev_model_summary} +\title{Extract Model Summary} +\usage{ +extract_seroprev_model_summary(model_object) +} +\arguments{ +\item{model_object}{\code{model_object}. An object containing relevant information about the implementation of the model. Refer to \link{fit_seroprev_model} for further details.} +} +\value{ +\code{model_summary}. Object with a summary of \code{model_object} containing the following: +\tabular{ll}{ +\code{seroprev_model_name} \tab Name of the selected model. For further details refer to \link{save_or_load_model}. \cr \tab \cr +\code{data_set} \tab Seroprevalence survey label.\cr \tab \cr +\code{country} \tab Name of the country were the survey was conducted in. \cr \tab \cr +\code{year} \tab Year in which the survey was conducted. \cr \tab \cr +\code{test} \tab Type of test of the survey. \cr \tab \cr +\code{antibody} \tab Antibody \cr \tab \cr +\code{n_sample} \tab Total number of samples in the survey. \cr \tab \cr +\code{n_agec} \tab Number of age groups considered. \cr \tab \cr +\code{n_iter} \tab Number of interations for eah chain including the warmup. \cr \tab \cr +\code{elpd} \tab elpd \cr \tab \cr +\code{se} \tab se \cr \tab \cr +\code{converged} \tab convergence \cr \tab \cr +} +} +\description{ +Function to generate a summary of a model. +} +\examples{ +\dontrun{ +seroprev_data <- prepare_seroprev_data(serodata) +model_object <- run_seroprev_model(seroprev_data = seroprev_data, + seroprev_model_name = "constant_foi_bi") +extract_seroprev_model_summary (model_object) +} +} diff --git a/man/extract_summary_model.Rd b/man/extract_summary_model.Rd deleted file mode 100644 index d4dcb888..00000000 --- a/man/extract_summary_model.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/modelling.R -\name{extract_summary_model} -\alias{extract_summary_model} -\title{Extract Summary Model} -\usage{ -extract_summary_model(model_object) -} -\arguments{ -\item{model_object}{what the run model function returns} - -\item{model_data}{refers to data of the model} -} -\value{ -summary of the models -} -\description{ -Function that summarizes the models -} diff --git a/man/figures/README-data_test-1.png b/man/figures/README-data_test-1.png new file mode 100644 index 0000000000000000000000000000000000000000..6b3f80ae2637c130301a83a3e99feafe05286901 GIT binary patch literal 19013 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 BLLLAB literal 0 HcmV?d00001 diff --git a/man/figures/README-ex-1.png b/man/figures/README-ex-1.png new file mode 100644 index 0000000000000000000000000000000000000000..5ab8b89ab2eb74db060e26130bdc3bf2238b33ee GIT binary patch literal 18369 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

IlQ3r`*uZY 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 XUbHqZjMmUnYF1_Q?Q>5=T0m^{eRAI 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

}_w4>hA8os`o?g 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%0AgpGP@dcx&i@n7Wq2pKcKMyQ^0ml!vjvyFj zI#mU@4V%D~IXAIxLt?F*Q&|#JM5xb`>1-6@S1A4GFacKEU2(|pF<`tEG!)}xXQb?o z)Lqv)sGBKpY7v8Oa%pJHJtsxraCxaU0UO;}!!p;q*lJsw5Hjl2FDnI!eQy$O6`re= zHwF~CT6eH@Y7u}1V5NQf^>K28t)>V$h{gO7?D(OmS3k(h&A9RMG4VR%o)|!fG$92S zFC4UFhQ7nN!{a3|-G-$31=Zvu58xNTc8|Y@mV=>(YXy*`>Q{%>3rQ$u!~QJaT*(El zG^zG~^0=iiKlg{RE0ZVCBoE-d?;R+zMIt6un-1JX!(_Qb;_l-TnsWtVump{jVv-JV z%PIABRN?tIL($Dn6Y2%t{ZFCyzI$9bW7ATvWq?cwpNt)ngEgQ@!}GZofzm>1k0g#^ zk8O0~|GrM&_LZ;>-&7p8%kOoO8eo5n0(dLeo-xG-WSGnd#&9S%76r}{i|^M-3bbhc z`z$MxlQ_auy5i0GSwRbEr{|NWxyTG6k) z9c)`R&I6;M-z!i*sA80F-(fO~Zax%kFfk|@y&7NO3PsfF@2e;morHR^Lw2<&BDHe5 z4q`>X^t;Zd?^b-%Nn3$2r~FEXM#B+YV{cvt^MeZyzut#!`YyD=XM}^Tgy@i2u!7y1 zUxH*CzO>4+^;L?W1PKE)fJhUky`qHs(UgrRyr5|BqJ(u|)E8#{GjNX~SH`mE$8ioc zpm}UZ& z5i3O-HP&$efZ~<-mWJVBreYrz5Dce0Z+*LC}C<0;iw+#Cl?` z606wMjg;9a@47ZOp6on_};-UhPmzefVE(=wRqeLNQi87j7?o4e{CqaWw z2nt;IIXrKyA-_5svai^|2Jc=N~Wx&QvS6HXUPAez~e}1f~U<`(g zZh=jmK&J(PN zZJHo>D%PE2+ymR>A}Fg~Dps_5ROH5)Z=~Y*NRo{@U~Ejf7xplWD@~-hP!Juhp2?;L zA_ap(58KyIaB% zmWS`!|1DY)U*Hc;=B~A8LdRl@xn_&Z&CSW)G3hlz)OR@~D-VL=hQfnBky6hwn6S!9oCCS8zLzfj8_@*-dQ=j}t zqQmB(dGx2##cc+|w`~@5bR*_}kL;J~Sg!UbxX7jAFxa)oEn1Eleyxz{1}r|y7+DhF zOS6Nb4fEzC`Qs2ZA-7Y$T_{8@u~0z10p=QU*cSuJ`Zf&zFq^HpGu<1_sHy*rJR{M$xX0^tZd3~rb~f{2jKvQkq2i2@3qUzZIn4oGi*bTeStlPzI5GWL&yvQVYq9jpk*VkJcXL%-Hrf*% w1dJf8;6NK~9cdA|ED$kU=0F`8MshAx(^ujCt@ne#EAXF;grfLQQKR7h1Ilb4ng9R* literal 0 HcmV?d00001 diff --git a/man/figures/plot_rhats_example.png b/man/figures/plot_rhats_example.png new file mode 100644 index 0000000000000000000000000000000000000000..27ff5dcbb80d2b3019d5d6f68ea081cb0ee949e7 GIT binary patch literal 23723 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 literal 0 HcmV?d00001 diff --git a/man/figures/plot_seroprev_example.png b/man/figures/plot_seroprev_example.png new file mode 100644 index 0000000000000000000000000000000000000000..b2f4885eb02c53f19b2380e9d619cedb8e3a445d GIT binary patch literal 16962 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
    EKdkwp$4P=sslsmE?+WW+OLws1 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 h>H?lUeH#1Na7X|_0jEq#)GR0L!pP;03;8Mt)t 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 literal 0 HcmV?d00001 diff --git a/man/figures/serofoi-logo.png b/man/figures/serofoi-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..ce1a0f03009cdeb75bf0b39756095d6c49237400 GIT binary patch literal 55436 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⁣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 prepare_data(alpha=0.05) - -#----- Test each model -model_0_object <- run_model(model_data = data_test, - model_name = "constant_foi_bi", - n_iters = 1000) - -# model_1_object <- run_model(model_data = data_test, -# model_name = "continuous_foi_normal_bi", -# n_iters = 1000) -# -# model_2_object <- run_model(model_data = data_test, -# model_name = "continuous_foi_normal_log", -# n_iters = 1000) - -#----- Generate all plots for each model - -# model_0_plot <- plot_model(model_0_object, size_text = 6) -# model_1_plot <- plot_model(model_1_object, size_text = 6) -# model_2_plot <- plot_model(model_2_object, size_text = 6) - -#----- Generate each individual plot - -# plot_seroprev(model_0_object, size_text = 15) -# plot_foi(model_0_object, size_text = 15) -# plot_rhats(model_0_object, size_text = 15) - -# bayesplot::mcmc_trace(model_1_object$fit, pars="lambda0") - - -xxx <- "Zulma MILENA cucunuba 3455" -epitrix::clean_labels(xxx) - diff --git a/test/test_vignette.R b/test/test_vignette.R new file mode 100644 index 00000000..3a1d29f7 --- /dev/null +++ b/test/test_vignette.R @@ -0,0 +1,14 @@ +library(remotes) +remotes::install_github("TRACE-LAC/serofoi", + ref = "dev-zulma-vignette", + force = TRUE) +library(serofoi) + + +library(usethis) +# usethis::use_pkgdown() +# pkgdown::build_site() +# use_github_pages(branch = "dev-zulma-vignette", path = "/", cname = NA) + +library(roxygen2) +roxygen2::roxygenise() diff --git a/test/testing_vignette.R b/test/testing_vignette.R new file mode 100644 index 00000000..426415e4 --- /dev/null +++ b/test/testing_vignette.R @@ -0,0 +1,16 @@ +# TODO Convert to testthat. Move to `tests/` +library(remotes) +remotes::install_github("TRACE-LAC/serofoi", + ref = "dev", + force = TRUE) + + +library(serofoi) +library(usethis) +library(roxygen2) + +devtools::document() +usethis::use_pkgdown_github_pages() +pkgdown::build_site() +use_github_pages(branch = "dev", path = "/", cname = NA) + diff --git a/tests/docker/.bashrc b/tests/docker/.bashrc new file mode 100644 index 00000000..be8da80e --- /dev/null +++ b/tests/docker/.bashrc @@ -0,0 +1 @@ +export R_LIBS=/root/.R/site-library \ No newline at end of file diff --git a/tests/docker/Dockerfile b/tests/docker/Dockerfile new file mode 100644 index 00000000..b1370942 --- /dev/null +++ b/tests/docker/Dockerfile @@ -0,0 +1,13 @@ +FROM rocker/tidyverse:4.2.2 +VOLUME [ "/root/.R/site-library"] +ARG docker_folder="tests/docker" +WORKDIR /package +ADD . . +ADD ${docker_folder}/*.sh ./ +# ADD ${docker_folder}/install_deps.sh . + +WORKDIR /root +ADD ${docker_folder}/.bashrc . +# -i ensures that any command will source .bashrc https://stackoverflow.com/a/37286648 +# ENTRYPOINT ["/bin/bash", "-c", "-i"] +ENTRYPOINT ["/bin/bash", "-c"] \ No newline at end of file diff --git a/tests/docker/check.sh b/tests/docker/check.sh new file mode 100755 index 00000000..7034525d --- /dev/null +++ b/tests/docker/check.sh @@ -0,0 +1,2 @@ +#!/bin/bash +R --no-echo --no-restore -e 'devtools::check(manual=FALSE, cran = TRUE, error_on=c("error"))' \ No newline at end of file diff --git a/tests/docker/docker_scripts.R b/tests/docker/docker_scripts.R new file mode 100644 index 00000000..4af7954d --- /dev/null +++ b/tests/docker/docker_scripts.R @@ -0,0 +1,33 @@ +# Clear everything +system( + "docker container rm rtest-container; docker volume rm rtest-site-library; docker image rm -f rtest-image" +) +# Rebuild Docker image +system( + "docker container kill rtest-container; rm -f inst/extdata/stanmodels/*.rds; docker build -t rtest-image . -f tests/docker/Dockerfile" +) + +# Install R dependencies +system( + "docker container kill rtest-container ; docker container rm rtest-container ; docker run --name rtest-container --env R_LIBS=/root/.R/site-library -v rtest-site-library:/root/.R/site-library rtest-image 'cd /package && ./install_deps.sh'" +) + +# Run tests +system( + "docker container kill rtest-container ; docker container rm rtest-container ; docker container run --rm --name rtest-container --env R_LIBS=/root/.R/site-library -v rtest-site-library:/root/.R/site-library rtest-image 'cd /package && ./run_tests.sh'" +) + +# R CMD Check +system( + "docker container kill rtest-container ; docker container rm rtest-container ; docker container run --rm --name rtest-container --env R_LIBS=/root/.R/site-library -v rtest-site-library:/root/.R/site-library rtest-image 'cd /package && ./check.sh'" +) + +# Bash shell +system( + "docker container run -it --rm --env R_LIBS=/root/.R/site-library -v rtest-site-library:/root/.R/site-library rtest-image bash" +) + +# R Shell +system( + "docker container run -it --rm --env R_LIBS=/root/.R/site-library -v rtest-site-library:/root/.R/site-library rtest-image R" +) diff --git a/tests/docker/install_deps.sh b/tests/docker/install_deps.sh new file mode 100755 index 00000000..f7232f18 --- /dev/null +++ b/tests/docker/install_deps.sh @@ -0,0 +1,3 @@ +#!/bin/bash +Rscript -e 'install.packages("testthat", force=FALSE)' +Rscript -e 'devtools::install_deps(upgrade="always")' \ No newline at end of file diff --git a/tests/docker/run_tests.sh b/tests/docker/run_tests.sh new file mode 100755 index 00000000..602617e8 --- /dev/null +++ b/tests/docker/run_tests.sh @@ -0,0 +1,2 @@ +#!/bin/bash +R --no-echo --no-restore -e 'devtools::test()' \ No newline at end of file diff --git a/tests/testepidemics.R b/tests/testepidemics.R new file mode 100644 index 00000000..be7a80b2 --- /dev/null +++ b/tests/testepidemics.R @@ -0,0 +1,2 @@ +# TODO Convert to testthat + diff --git a/tests/testthat.R b/tests/testthat.R new file mode 100644 index 00000000..75afe8e5 --- /dev/null +++ b/tests/testthat.R @@ -0,0 +1,4 @@ +library(testthat) +library(serofoi) + +test_check("serofoi") \ No newline at end of file diff --git a/tests/testthat/_snaps/comparison/comp_table.csv b/tests/testthat/_snaps/comparison/comp_table.csv new file mode 100644 index 00000000..d70bd29d --- /dev/null +++ b/tests/testthat/_snaps/comparison/comp_table.csv @@ -0,0 +1,4 @@ +"","seroprev_model_name","dataset","country","year","test","antibody","n_sample","n_agec","n_iter","elpd","se","converged","difference","diff_se","best_elpd","pvalue" +"1","constant_foi_bi","COL-035-93","COL",2012,"ELISA","IgG anti-T.cruzi",747,72,1000,-92.75,6.4,"Yes",0,1,NA,0.500041 +"2","continuous_foi_normal_bi","COL-035-93","COL",2012,"ELISA","IgG anti-T.cruzi",747,72,1000,-74.46,5.88,"Yes",0,-18.2967809927967,NA,0.500009 +"3","continuous_foi_normal_log","COL-035-93","COL",2012,"ELISA","IgG anti-T.cruzi",747,72,1000,-71.93,7.11,"Yes",0,-20.8238925781359,NA,0.500029 diff --git a/tests/testthat/clean_expected_files.R b/tests/testthat/clean_expected_files.R new file mode 100644 index 00000000..5fdd7a6f --- /dev/null +++ b/tests/testthat/clean_expected_files.R @@ -0,0 +1,14 @@ +# This script removes the svg and csv files used in the automatic tests +# This is usually required when a new version of rstan is released +# Random number generation changes for each new version of +# Rstan, https://mc-stan.org/docs/2_18/reference-manual/reproducibility-chapter.html +# thus all files with expected results (both tables and graphs) become +# obsolete and need to be regenerated + +library(testthat) +paths <- c(testthat::test_path("_snaps", "*"), testthat::test_path("extdata", "dataframes", "expected", "*")) + +for (path in paths) { + cat("Deleting", path, "\n") + unlink(path, recursive = TRUE) +} diff --git a/tests/testthat/extdata/case_A_sim_data_grouped.csv b/tests/testthat/extdata/case_A_sim_data_grouped.csv new file mode 100644 index 00000000..863a63f2 --- /dev/null +++ b/tests/testthat/extdata/case_A_sim_data_grouped.csv @@ -0,0 +1,11 @@ +"age_group","total","counts","tsur","country","survey","test","antibody","age_min","age_max","age_mean_f","sample_size","birth_year","prev_obs","prev_obs_lower","prev_obs_upper" +"01-04",20,1,2050,"None","sim_foi","fake","IgG",1,4,2,250,2048,0.05,0.00126508949794981,0.248732762772028 +"05-09",25,2,2050,"None","sim_foi","fake","IgG",5,9,7,250,2043,0.08,0.00983959001879751,0.260305842105214 +"10-14",25,7,2050,"None","sim_foi","fake","IgG",10,14,12,250,2038,0.28,0.120716688504067,0.493876821806256 +"15-19",25,5,2050,"None","sim_foi","fake","IgG",15,19,17,250,2033,0.2,0.068311464012484,0.407037432278677 +"20-24",25,9,2050,"None","sim_foi","fake","IgG",20,24,22,250,2028,0.36,0.179716820583655,0.57479365044615 +"25-29",25,7,2050,"None","sim_foi","fake","IgG",25,29,27,250,2023,0.28,0.120716688504067,0.493876821806256 +"30-34",25,8,2050,"None","sim_foi","fake","IgG",30,34,32,250,2018,0.32,0.14949542261357,0.535000717497372 +"35-39",25,11,2050,"None","sim_foi","fake","IgG",35,39,37,250,2013,0.44,0.244023665147208,0.650718366008664 +"40-44",25,16,2050,"None","sim_foi","fake","IgG",40,44,42,250,2008,0.64,0.425206349553849,0.820283179416345 +"45-50",30,18,2050,"None","sim_foi","fake","IgG",45,50,47,250,2003,0.6,0.406034930051819,0.773442351171406 diff --git a/tests/testthat/extdata/case_A_sim_data_no_grouped.csv b/tests/testthat/extdata/case_A_sim_data_no_grouped.csv new file mode 100644 index 00000000..363fc0f5 --- /dev/null +++ b/tests/testthat/extdata/case_A_sim_data_no_grouped.csv @@ -0,0 +1,51 @@ +"birth_year","tsur","country","test","antibody","survey","age_mean_f","counts","total","prev_obs","prev_obs_lower","prev_obs_upper","age_min","age_max" +2049,2050,"None","fake","IgG","sim_foi",1,0,5,0,0,0.521823750104981,1,1 +2048,2050,"None","fake","IgG","sim_foi",2,0,5,0,0,0.521823750104981,2,2 +2047,2050,"None","fake","IgG","sim_foi",3,0,5,0,0,0.521823750104981,3,3 +2046,2050,"None","fake","IgG","sim_foi",4,1,5,0.2,0.00505076337946806,0.716417936118089,4,4 +2045,2050,"None","fake","IgG","sim_foi",5,0,5,0,0,0.521823750104981,5,5 +2044,2050,"None","fake","IgG","sim_foi",6,0,5,0,0,0.521823750104981,6,6 +2043,2050,"None","fake","IgG","sim_foi",7,1,5,0.2,0.00505076337946806,0.716417936118089,7,7 +2042,2050,"None","fake","IgG","sim_foi",8,0,5,0,0,0.521823750104981,8,8 +2041,2050,"None","fake","IgG","sim_foi",9,1,5,0.2,0.00505076337946806,0.716417936118089,9,9 +2040,2050,"None","fake","IgG","sim_foi",10,1,5,0.2,0.00505076337946806,0.716417936118089,10,10 +2039,2050,"None","fake","IgG","sim_foi",11,2,5,0.4,0.0527449505263169,0.853367200365327,11,11 +2038,2050,"None","fake","IgG","sim_foi",12,4,5,0.8,0.283582063881911,0.994949236620532,12,12 +2037,2050,"None","fake","IgG","sim_foi",13,0,5,0,0,0.521823750104981,13,13 +2036,2050,"None","fake","IgG","sim_foi",14,0,5,0,0,0.521823750104981,14,14 +2035,2050,"None","fake","IgG","sim_foi",15,2,5,0.4,0.0527449505263169,0.853367200365327,15,15 +2034,2050,"None","fake","IgG","sim_foi",16,0,5,0,0,0.521823750104981,16,16 +2033,2050,"None","fake","IgG","sim_foi",17,1,5,0.2,0.00505076337946806,0.716417936118089,17,17 +2032,2050,"None","fake","IgG","sim_foi",18,1,5,0.2,0.00505076337946806,0.716417936118089,18,18 +2031,2050,"None","fake","IgG","sim_foi",19,1,5,0.2,0.00505076337946806,0.716417936118089,19,19 +2030,2050,"None","fake","IgG","sim_foi",20,1,5,0.2,0.00505076337946806,0.716417936118089,20,20 +2029,2050,"None","fake","IgG","sim_foi",21,0,5,0,0,0.521823750104981,21,21 +2028,2050,"None","fake","IgG","sim_foi",22,3,5,0.6,0.146632799634673,0.947255049473683,22,22 +2027,2050,"None","fake","IgG","sim_foi",23,3,5,0.6,0.146632799634673,0.947255049473683,23,23 +2026,2050,"None","fake","IgG","sim_foi",24,2,5,0.4,0.0527449505263169,0.853367200365327,24,24 +2025,2050,"None","fake","IgG","sim_foi",25,3,5,0.6,0.146632799634673,0.947255049473683,25,25 +2024,2050,"None","fake","IgG","sim_foi",26,1,5,0.2,0.00505076337946806,0.716417936118089,26,26 +2023,2050,"None","fake","IgG","sim_foi",27,0,5,0,0,0.521823750104981,27,27 +2022,2050,"None","fake","IgG","sim_foi",28,1,5,0.2,0.00505076337946806,0.716417936118089,28,28 +2021,2050,"None","fake","IgG","sim_foi",29,2,5,0.4,0.0527449505263169,0.853367200365327,29,29 +2020,2050,"None","fake","IgG","sim_foi",30,2,5,0.4,0.0527449505263169,0.853367200365327,30,30 +2019,2050,"None","fake","IgG","sim_foi",31,1,5,0.2,0.00505076337946806,0.716417936118089,31,31 +2018,2050,"None","fake","IgG","sim_foi",32,1,5,0.2,0.00505076337946806,0.716417936118089,32,32 +2017,2050,"None","fake","IgG","sim_foi",33,2,5,0.4,0.0527449505263169,0.853367200365327,33,33 +2016,2050,"None","fake","IgG","sim_foi",34,2,5,0.4,0.0527449505263169,0.853367200365327,34,34 +2015,2050,"None","fake","IgG","sim_foi",35,1,5,0.2,0.00505076337946806,0.716417936118089,35,35 +2014,2050,"None","fake","IgG","sim_foi",36,3,5,0.6,0.146632799634673,0.947255049473683,36,36 +2013,2050,"None","fake","IgG","sim_foi",37,1,5,0.2,0.00505076337946806,0.716417936118089,37,37 +2012,2050,"None","fake","IgG","sim_foi",38,3,5,0.6,0.146632799634673,0.947255049473683,38,38 +2011,2050,"None","fake","IgG","sim_foi",39,3,5,0.6,0.146632799634673,0.947255049473683,39,39 +2010,2050,"None","fake","IgG","sim_foi",40,2,5,0.4,0.0527449505263169,0.853367200365327,40,40 +2009,2050,"None","fake","IgG","sim_foi",41,3,5,0.6,0.146632799634673,0.947255049473683,41,41 +2008,2050,"None","fake","IgG","sim_foi",42,2,5,0.4,0.0527449505263169,0.853367200365327,42,42 +2007,2050,"None","fake","IgG","sim_foi",43,4,5,0.8,0.283582063881911,0.994949236620532,43,43 +2006,2050,"None","fake","IgG","sim_foi",44,5,5,1,0.478176249895019,1,44,44 +2005,2050,"None","fake","IgG","sim_foi",45,3,5,0.6,0.146632799634673,0.947255049473683,45,45 +2004,2050,"None","fake","IgG","sim_foi",46,2,5,0.4,0.0527449505263169,0.853367200365327,46,46 +2003,2050,"None","fake","IgG","sim_foi",47,3,5,0.6,0.146632799634673,0.947255049473683,47,47 +2002,2050,"None","fake","IgG","sim_foi",48,3,5,0.6,0.146632799634673,0.947255049473683,48,48 +2001,2050,"None","fake","IgG","sim_foi",49,3,5,0.6,0.146632799634673,0.947255049473683,49,49 +2000,2050,"None","fake","IgG","sim_foi",50,4,5,0.8,0.283582063881911,0.994949236620532,50,50 diff --git a/tests/testthat/extdata/case_B_sim_data_grouped.csv b/tests/testthat/extdata/case_B_sim_data_grouped.csv new file mode 100644 index 00000000..aa57d1e2 --- /dev/null +++ b/tests/testthat/extdata/case_B_sim_data_grouped.csv @@ -0,0 +1,11 @@ +"age_group","total","counts","tsur","country","survey","test","antibody","age_min","age_max","age_mean_f","sample_size","birth_year","prev_obs","prev_obs_lower","prev_obs_upper" +"01-04",20,0,2050,"None","sim_foi","fake","IgG",1,4,2,250,2048,0,0,0.168433470983085 +"05-09",25,0,2050,"None","sim_foi","fake","IgG",5,9,7,250,2043,0,0,0.137185171530713 +"10-14",25,0,2050,"None","sim_foi","fake","IgG",10,14,12,250,2038,0,0,0.137185171530713 +"15-19",25,3,2050,"None","sim_foi","fake","IgG",15,19,17,250,2033,0.12,0.0254653966477332,0.312190307286235 +"20-24",25,7,2050,"None","sim_foi","fake","IgG",20,24,22,250,2028,0.28,0.120716688504067,0.493876821806256 +"25-29",25,21,2050,"None","sim_foi","fake","IgG",25,29,27,250,2023,0.84,0.639171545540728,0.95462054762829 +"30-34",25,25,2050,"None","sim_foi","fake","IgG",30,34,32,250,2018,1,0.862814828469287,1 +"35-39",25,23,2050,"None","sim_foi","fake","IgG",35,39,37,250,2013,0.92,0.739694157894786,0.990160409981202 +"40-44",25,25,2050,"None","sim_foi","fake","IgG",40,44,42,250,2008,1,0.862814828469287,1 +"45-50",30,30,2050,"None","sim_foi","fake","IgG",45,50,47,250,2003,1,0.884296691777972,1 diff --git a/tests/testthat/extdata/case_B_sim_data_no_grouped.csv b/tests/testthat/extdata/case_B_sim_data_no_grouped.csv new file mode 100644 index 00000000..80750082 --- /dev/null +++ b/tests/testthat/extdata/case_B_sim_data_no_grouped.csv @@ -0,0 +1,51 @@ +"birth_year","tsur","country","test","antibody","survey","age_mean_f","counts","total","prev_obs","prev_obs_lower","prev_obs_upper","age_min","age_max" +2049,2050,"None","fake","IgG","sim_foi",1,0,5,0,0,0.521823750104981,1,1 +2048,2050,"None","fake","IgG","sim_foi",2,0,5,0,0,0.521823750104981,2,2 +2047,2050,"None","fake","IgG","sim_foi",3,0,5,0,0,0.521823750104981,3,3 +2046,2050,"None","fake","IgG","sim_foi",4,0,5,0,0,0.521823750104981,4,4 +2045,2050,"None","fake","IgG","sim_foi",5,0,5,0,0,0.521823750104981,5,5 +2044,2050,"None","fake","IgG","sim_foi",6,0,5,0,0,0.521823750104981,6,6 +2043,2050,"None","fake","IgG","sim_foi",7,0,5,0,0,0.521823750104981,7,7 +2042,2050,"None","fake","IgG","sim_foi",8,0,5,0,0,0.521823750104981,8,8 +2041,2050,"None","fake","IgG","sim_foi",9,0,5,0,0,0.521823750104981,9,9 +2040,2050,"None","fake","IgG","sim_foi",10,0,5,0,0,0.521823750104981,10,10 +2039,2050,"None","fake","IgG","sim_foi",11,0,5,0,0,0.521823750104981,11,11 +2038,2050,"None","fake","IgG","sim_foi",12,0,5,0,0,0.521823750104981,12,12 +2037,2050,"None","fake","IgG","sim_foi",13,0,5,0,0,0.521823750104981,13,13 +2036,2050,"None","fake","IgG","sim_foi",14,0,5,0,0,0.521823750104981,14,14 +2035,2050,"None","fake","IgG","sim_foi",15,0,5,0,0,0.521823750104981,15,15 +2034,2050,"None","fake","IgG","sim_foi",16,0,5,0,0,0.521823750104981,16,16 +2033,2050,"None","fake","IgG","sim_foi",17,1,5,0.2,0.00505076337946806,0.716417936118089,17,17 +2032,2050,"None","fake","IgG","sim_foi",18,1,5,0.2,0.00505076337946806,0.716417936118089,18,18 +2031,2050,"None","fake","IgG","sim_foi",19,1,5,0.2,0.00505076337946806,0.716417936118089,19,19 +2030,2050,"None","fake","IgG","sim_foi",20,2,5,0.4,0.0527449505263169,0.853367200365327,20,20 +2029,2050,"None","fake","IgG","sim_foi",21,0,5,0,0,0.521823750104981,21,21 +2028,2050,"None","fake","IgG","sim_foi",22,1,5,0.2,0.00505076337946806,0.716417936118089,22,22 +2027,2050,"None","fake","IgG","sim_foi",23,1,5,0.2,0.00505076337946806,0.716417936118089,23,23 +2026,2050,"None","fake","IgG","sim_foi",24,3,5,0.6,0.146632799634673,0.947255049473683,24,24 +2025,2050,"None","fake","IgG","sim_foi",25,2,5,0.4,0.0527449505263169,0.853367200365327,25,25 +2024,2050,"None","fake","IgG","sim_foi",26,4,5,0.8,0.283582063881911,0.994949236620532,26,26 +2023,2050,"None","fake","IgG","sim_foi",27,5,5,1,0.478176249895019,1,27,27 +2022,2050,"None","fake","IgG","sim_foi",28,5,5,1,0.478176249895019,1,28,28 +2021,2050,"None","fake","IgG","sim_foi",29,5,5,1,0.478176249895019,1,29,29 +2020,2050,"None","fake","IgG","sim_foi",30,5,5,1,0.478176249895019,1,30,30 +2019,2050,"None","fake","IgG","sim_foi",31,5,5,1,0.478176249895019,1,31,31 +2018,2050,"None","fake","IgG","sim_foi",32,5,5,1,0.478176249895019,1,32,32 +2017,2050,"None","fake","IgG","sim_foi",33,5,5,1,0.478176249895019,1,33,33 +2016,2050,"None","fake","IgG","sim_foi",34,5,5,1,0.478176249895019,1,34,34 +2015,2050,"None","fake","IgG","sim_foi",35,4,5,0.8,0.283582063881911,0.994949236620532,35,35 +2014,2050,"None","fake","IgG","sim_foi",36,5,5,1,0.478176249895019,1,36,36 +2013,2050,"None","fake","IgG","sim_foi",37,4,5,0.8,0.283582063881911,0.994949236620532,37,37 +2012,2050,"None","fake","IgG","sim_foi",38,5,5,1,0.478176249895019,1,38,38 +2011,2050,"None","fake","IgG","sim_foi",39,5,5,1,0.478176249895019,1,39,39 +2010,2050,"None","fake","IgG","sim_foi",40,5,5,1,0.478176249895019,1,40,40 +2009,2050,"None","fake","IgG","sim_foi",41,5,5,1,0.478176249895019,1,41,41 +2008,2050,"None","fake","IgG","sim_foi",42,5,5,1,0.478176249895019,1,42,42 +2007,2050,"None","fake","IgG","sim_foi",43,5,5,1,0.478176249895019,1,43,43 +2006,2050,"None","fake","IgG","sim_foi",44,5,5,1,0.478176249895019,1,44,44 +2005,2050,"None","fake","IgG","sim_foi",45,5,5,1,0.478176249895019,1,45,45 +2004,2050,"None","fake","IgG","sim_foi",46,5,5,1,0.478176249895019,1,46,46 +2003,2050,"None","fake","IgG","sim_foi",47,5,5,1,0.478176249895019,1,47,47 +2002,2050,"None","fake","IgG","sim_foi",48,5,5,1,0.478176249895019,1,48,48 +2001,2050,"None","fake","IgG","sim_foi",49,5,5,1,0.478176249895019,1,49,49 +2000,2050,"None","fake","IgG","sim_foi",50,5,5,1,0.478176249895019,1,50,50 diff --git a/tests/testthat/extdata/data.RDS b/tests/testthat/extdata/data.RDS new file mode 100644 index 0000000000000000000000000000000000000000..885b27279b188af581ed75e0b499eed3bcf41be3 GIT binary patch literal 646 zcmV;10(t!(iwFP!000001MQgKZW2)t#!va9K%?12FTC)AG^Q~|2#T$(|GJbyOS>(_ z*2KGJ3u{BtE@oL&yy8uK4KIBppFliizuCBBHyGNBCe9|y?|k2!*>jf684}*-lu}8R zO3bNbS`StF-C@13qP;s>%NC`TsDDsDDS=Nw>POUfsLxQpTL!5wQvahq_X2zgQa_}=`UYGBP2wmZ z^;zo2)Q8uhtI$>G4d@N%8gvc14qb=dgx(^;Z$LMox1qP8cc6EmEocjR7kU?Z4|)%} z3EhO=hu$|q@_z(uA>Kl~g?J0`w}>AEaV2#Gjsi*@1)Q;t%x@n9Unrb`O6o{>1yoW; z!YiPP{vVpGHZ2*-P=+*&o{x0RY8+HVh!Al-MfAKHjg!s1?fTuqVX^HEzIMeIUwrY! z7ynxODwWXw9R0Yt_LkQf6vtI9Wk@kN}--(g_7>~!_ g`AfD>?LNIEnYoVb+r^)@d)uds+dR)pJ zXOvQLm59YuJgJ8&d30FMuPE(kaYH3kS~JnHJWJ2JtH%ra&gy#;u}r0D=8L7}{Ax)Y zal{elKXsJ4GwF*)Sxqlv6)cZ@zJ*=~Us4==1}=ju;A8L&SYXemcoBTWp0^0*z${o| z&wBzs2bWmhBI85GrHDK}kMgsO+^77M&$XXn9Z+5D2lMZ<=cdAbFptFppWf#l^HtcV z{Zc$~Uh3j`M1?w1?D``<*LB(a%dQ)>epEb4M}2>E8H}^m;q#;NXx&*puS-5ZYCk;h zU-vt!j{d4cS|4hkF`e1h$gzSEhHrfCCUT4Vmo_2em u3$*{+`i_nC$9O#c&R?>9X7%YM$;?cCy;Jz$>U^z!P43@r(G1S~BLD!=%S|N! literal 0 HcmV?d00001 diff --git a/tests/testthat/extdata/data_test.R b/tests/testthat/extdata/data_test.R new file mode 100644 index 00000000..49390a4d --- /dev/null +++ b/tests/testthat/extdata/data_test.R @@ -0,0 +1,17 @@ +#' Seroprevalence data on serofoi +#' +#' Data from a serological surveys +#' +#' @docType data +#' +#' @usage data_test +#' +#' @format An object of class \code{"cross"}; see \code{\link[qtl]{read.cross}}. +#' +#' @keywords datasets +#' +#' @examples +#' \dontrun{ +#' data_test +#' } +"data_test" diff --git a/tests/testthat/test_comparison.R b/tests/testthat/test_comparison.R new file mode 100644 index 00000000..43a779aa --- /dev/null +++ b/tests/testthat/test_comparison.R @@ -0,0 +1,63 @@ +test_that("comparison", { + # So far we are skipping tests on these platforms until + # we find an efficient way to update rstan testthat snapshots on all of them + skip_on_os(c("windows", "mac")) + source("testing_utils.R") + set.seed(1234) # For reproducibility + + package <- "serofoi" + + # TODO For some reason it is not recognizing the global `serodata` variable, so we need to explicitly load it + serodata <- readRDS(testthat::test_path("extdata", "data.RDS")) + + data_test <- prepare_seroprev_data(serodata) + + model_0 <- run_seroprev_model( + seroprev_data = data_test, + seroprev_model_name = "constant_foi_bi", + n_iters = 1000 + ) + + model_1 <- run_seroprev_model( + seroprev_data = data_test, + seroprev_model_name = "continuous_foi_normal_bi", + n_iters = 1000 + ) + + model_2 <- run_seroprev_model( + seroprev_data = data_test, + seroprev_model_name = "continuous_foi_normal_log", + n_iters = 1000 + ) + + comp_table <- get_comparison_table( + model_objects_list = c( + m0 = model_0, + m1 = model_1, + m2 = model_2 + ) + ) + + column_comparation_functions <- list( + model = equal_exact(), + dataset = equal_exact(), + country = equal_exact(), + year = equal_exact(), + test = equal_exact(), + antibody = equal_exact(), + n_sample = equal_exact(), + n_agec = equal_exact(), + n_iter = equal_exact(), + elpd = equal_with_tolerance(), + se = equal_with_tolerance(), + converged = equal_exact(), + difference = equal_exact(), + diff_se = equal_with_tolerance(), + best_elpd = equal_exact(), + pvalue = equal_with_tolerance() + ) + + expect_similar_dataframes( + "comp_table", comp_table, column_comparation_functions + ) +}) diff --git a/tests/testthat/test_individual_models.R b/tests/testthat/test_individual_models.R new file mode 100644 index 00000000..adcd1710 --- /dev/null +++ b/tests/testthat/test_individual_models.R @@ -0,0 +1,58 @@ +test_that("individual models", { + # So far we are skipping tests on these platforms until + # we find an efficient way to update rstan testthat snapshots on all of them + skip_on_os(c("windows", "mac")) + skip_on_ci() + + library(devtools) + library(dplyr) + library(vdiffr) + + #----- Read and prepare data + data_test_path <- testthat::test_path( + "extdata", "data.RDS" + ) + data_test <- readRDS(data_test_path) %>% prepare_seroprev_data(alpha = 0.05) + + #----- Test each model + model_0_object <- run_seroprev_model( + seroprev_data = data_test, + seroprev_model_name = "constant_foi_bi", + n_iters = 1000 + ) + + model_1_object <- run_seroprev_model( + seroprev_data = data_test, + seroprev_model_name = "continuous_foi_normal_bi", + n_iters = 1000 + ) + + model_2_object <- run_seroprev_model( + seroprev_data = data_test, + seroprev_model_name = "continuous_foi_normal_log", + n_iters = 1000 + ) + + #----- Generate all plots for each model + + model_0_plot <- plot_seroprev_model(model_0_object, size_text = 6) + vdiffr::expect_doppelganger("model_0_plot", model_0_plot) + model_1_plot <- plot_seroprev_model(model_1_object, size_text = 6) + vdiffr::expect_doppelganger("model_1_plot", model_1_plot) + model_2_plot <- plot_seroprev_model(model_2_object, size_text = 6) + vdiffr::expect_doppelganger("model_2_plot", model_2_plot) + + #----- Generate each individual plot + + sp_fitted_individual_plot <- plot_seroprev_fitted(model_2_object, size_text = 15) + vdiffr::expect_doppelganger("seroprev_fitted_individual_plot", sp_fitted_individual_plot) + + foi_individual_plot <- plot_foi(model_2_object, size_text = 15) + vdiffr::expect_doppelganger("foi_individual_plot", foi_individual_plot) + + rhats_individual_plot <- plot_rhats(model_2_object, size_text = 15) + vdiffr::expect_doppelganger("rhats_individual_plot", rhats_individual_plot) + + + # bayesplot::mcmc_trace(model_1_object$fit, pars="lambda0") +}) diff --git a/tests/testthat/test_plot_functions.R b/tests/testthat/test_plot_functions.R new file mode 100644 index 00000000..8c3f66eb --- /dev/null +++ b/tests/testthat/test_plot_functions.R @@ -0,0 +1,68 @@ +test_that("plot_seroprev_fitted", { + # So far we are skipping tests on these platforms until + # we find an efficient way to update rstan testthat snapshots on all of them + skip_on_os(c("windows", "mac")) + skip_on_ci() + print("*** Test info ****") + print(R.Version()) + cat("Interactive: ", interactive()) + library(devtools) + library(dplyr) + library(vdiffr) + set.seed(1234) # For reproducibility + data_test <- readRDS(testthat::test_path("extdata", "data.RDS")) %>% prepare_seroprev_data() + + actual_plot_seroprev <- plot_seroprev(data_test, size_text = 15) + + vdiffr::expect_doppelganger("plot_seroprev", actual_plot_seroprev) + + # Constant Model + model_object_constant <- run_seroprev_model( + seroprev_data = data_test, + seroprev_model_name = "constant_foi_bi", + n_iters = 1000 + ) + + plot_seroprev_model_constant <- plot_seroprev_model(model_object_constant, size_text = 6) + + vdiffr::expect_doppelganger("plot_seroprev_model_constant", plot_seroprev_model_constant) + + plot_seroprev_fitted_constant <- plot_seroprev_fitted(model_object_constant, size_text = 15) + + vdiffr::expect_doppelganger("plot_seroprev_fitted_constant", plot_seroprev_fitted_constant) + + # Normal Bi Model + model_object_normalbi <- run_seroprev_model( + seroprev_data = data_test, + seroprev_model_name = "continuous_foi_normal_bi", + n_iters = 1000 + ) + + plot_seroprev_model_normalbi <- plot_seroprev_model(model_object_normalbi, size_text = 6) + + vdiffr::expect_doppelganger("plot_seroprev_model_normalbi", plot_seroprev_model_normalbi) + + plot_seroprev_fitted_normalbi <- plot_seroprev_fitted(model_object_normalbi, size_text = 15) + + vdiffr::expect_doppelganger("plot_seroprev_fitted_normalbi", plot_seroprev_fitted_normalbi) + + # Normal Log Model + model_object_normallog <- run_seroprev_model( + seroprev_data = data_test, + seroprev_model_name = "continuous_foi_normal_log", + n_iters = 1000 + ) + + plot_seroprev_model_normallog <- plot_seroprev_model(model_object_normallog, size_text = 6) + + vdiffr::expect_doppelganger("plot_seroprev_model_normallog", plot_seroprev_model_normallog) + + plot_seroprev_fitted_normallog <- plot_seroprev_fitted(model_object_normallog, size_text = 15) + + vdiffr::expect_doppelganger("plot_seroprev_fitted_normallog", plot_seroprev_fitted_normallog) + + # Models Comparison Plot + plot_arrange_models <- plot_seroprev_models_grid(plot_seroprev_model_constant, plot_seroprev_model_normalbi, plot_seroprev_model_normallog, n_col = 3) + + vdiffr::expect_doppelganger("plot_arrange_models", plot_arrange_models) +}) diff --git a/tests/testthat/test_simdata_cases.R b/tests/testthat/test_simdata_cases.R new file mode 100644 index 00000000..ad707716 --- /dev/null +++ b/tests/testthat/test_simdata_cases.R @@ -0,0 +1,130 @@ +test_that("simulated data", { + # So far we are skipping tests on these platforms until + # we find an efficient way to update rstan testthat snapshots on all of them + skip_on_os(c("windows", "mac")) + skip_on_ci() + + library(dplyr) + library(serofoi) + library(pracma) + + seed = 1234 + size_age_class = 5 + #----- Test foi case A + sim_foi <- rep(0.02, 50) + case_label <- "case_A_" + max_lambda <- 0.035 + + #----- Test foi case B + # no_transm <- 0.0000000001 + # sim_foi <- c(rep(0.2, 25), rep(0.1, 10), rep(no_transm, 15)) + # case_label <- "case_B_" + # max_lambda <- 0.3 + + #----- Results paths + data_path_no_grouped <- testthat::test_path( + "extdata", paste0(case_label, "sim_data_no_grouped.csv") + ) + + data_path_grouped <- testthat::test_path( + "extdata", paste0(case_label, "sim_data_grouped.csv") + ) + + #----- Data simulation + sim_data <- generate_sim_data(foi = sim_foi, + size_age_class = size_age_class, + tsur = 2050, + birth_year_min = 2000, + survey_label = 'sim_foi', + seed = seed) + + sim_data <- sim_data %>% mutate(age_min = age_mean_f, age_max = age_mean_f) + write.csv(sim_data, data_path_no_grouped, row.names = FALSE) + + model_constant <- run_seroprev_model(seroprev_data = sim_data, + seroprev_model_name = "constant_foi_bi") + + model_normal <- run_seroprev_model(seroprev_data = sim_data, + seroprev_model_name = "continuous_foi_normal_bi") + + model_log <- run_seroprev_model(seroprev_data = sim_data, + seroprev_model_name = "continuous_foi_normal_log") + + model_plot_constant <- plot_seroprev_model(model_constant, size_text = 6, , max_lambda = max_lambda) + model_plot_normal <- plot_seroprev_model(model_normal, size_text = 6, , max_lambda = max_lambda) + model_plot_log <- plot_seroprev_model(model_log, size_text = 6, max_lambda = max_lambda) + model_plot_arrange <- plot_seroprev_models_grid(model_plot_constant, + model_plot_normal, + model_plot_log, + size_text = 6, + n_col = 3, + n_row = 1) + vdiffr::expect_doppelganger(paste0(case_label, "no_group_models_", seed), model_plot_arrange) + + sim_foi_plot_constant <- plot_foi(model_constant, size_text = 10, max_lambda = max_lambda) + + ggplot2::geom_point(data = data.frame(year = model_constant$exposure_years, + foi = sim_foi), + ggplot2::aes(year, foi)) + + ggplot2::ggtitle(paste0(case_label, "no_group_", seed)) + + sim_foi_plot_normal <- plot_foi(model_normal, size_text = 10, max_lambda = max_lambda) + + ggplot2::geom_point(data = data.frame(year = model_normal$exposure_years, + foi = sim_foi), + ggplot2::aes(year, foi)) + sim_foi_plot_log <- plot_foi(model_log, size_text = 10, max_lambda = max_lambda) + + ggplot2::geom_point(data = data.frame(year = model_log$exposure_years, + foi = sim_foi), + ggplot2::aes(year, foi)) + sim_foi_plot_arrange <- plot_seroprev_models_grid(sim_foi_plot_constant, + sim_foi_plot_normal, + sim_foi_plot_log, + n_col = 1, n_row = 3) + + vdiffr::expect_doppelganger(paste0(case_label, "no_group_foi_", seed), sim_foi_plot_arrange) + + + sim_data_grouped <- group_sim_data(sim_data = sim_data, + foi = sim_foi, + size_age_class = size_age_class, + tsur = 2050, + birth_year_min = 2000, + survey_label = 'sim_foi') + write.csv(sim_data_grouped, data_path_grouped, row.names = FALSE) + + model_grouped_constant <- run_seroprev_model(seroprev_data = sim_data_grouped, + seroprev_model_name = "constant_foi_bi") + model_grouped_normal <- run_seroprev_model(seroprev_data = sim_data_grouped, + seroprev_model_name = "continuous_foi_normal_bi") + model_grouped_log <- run_seroprev_model(seroprev_data = sim_data_grouped, + seroprev_model_name = "continuous_foi_normal_log") + + model_grouped_constant_plot <- plot_seroprev_model(model_grouped_constant, size_text = 6, max_lambda = max_lambda) + model_grouped_normal_plot <- plot_seroprev_model(model_grouped_normal, size_text = 6, max_lambda = max_lambda) + model_grouped_log_plot <- plot_seroprev_model(model_grouped_log, size_text = 6, max_lambda = max_lambda) + model_grouped_plot_arrange <- plot_seroprev_models_grid(model_grouped_constant_plot, + model_grouped_normal_plot, + model_grouped_log_plot, + n_col = 3, n_row = 1) + vdiffr::expect_doppelganger(paste0(case_label, "group_models_", seed), model_grouped_plot_arrange) + rm(list = ls(pat = "*_plot")) + + sim_foi_grouped_constant_plot <- plot_foi(model_grouped_constant, size_text = 10, max_lambda = max_lambda) + + ggplot2::geom_point(data = data.frame(year = model_constant$exposure_years, + foi = sim_foi), + ggplot2::aes(year, foi)) + + ggplot2::ggtitle(paste0(case_label, "group_", seed)) + sim_foi_grouped_normal_plot <- plot_foi(model_grouped_normal, size_text = 10, max_lambda = max_lambda) + + ggplot2::geom_point(data = data.frame(year = model_normal$exposure_years, + foi = sim_foi), + ggplot2::aes(year, foi)) + sim_foi_grouped_log_plot <- plot_foi(model_grouped_log, size_text = 10, max_lambda = max_lambda) + + ggplot2::geom_point(data = data.frame(year = model_log$exposure_years, + foi = sim_foi), + ggplot2::aes(year, foi)) + sim_foi_grouped_plot_arrange <- plot_seroprev_models_grid(sim_foi_grouped_constant_plot, + sim_foi_grouped_normal_plot, + sim_foi_grouped_log_plot, + n_col = 1, n_row = 3) + vdiffr::expect_doppelganger(paste0(case_label, "group_foi_", seed), sim_foi_grouped_plot_arrange) +}) +# TODO: solve error 'address 0x18, cause 'memory not mapped' when testing. diff --git a/tests/testthat/testing_utils.R b/tests/testthat/testing_utils.R new file mode 100644 index 00000000..f1eae1de --- /dev/null +++ b/tests/testthat/testing_utils.R @@ -0,0 +1,69 @@ +# TODO Move to separate package ### +# TODO Document all functions and provide examples +library(testthat) +library(vdiffr) +equal_with_tolerance <- function(tolerance = 2e-1) { + function(a, b) { + c <- base::mapply(function(x, y) { + if (is.na(x) && is.na(y)) { + return(0) + } else if (is.na(x) || is.na(y)) { + return(tolerance + 1) + } else { + return(abs(x - y)) + } + }, a, b) + return(base::all(c < tolerance)) + } +} +equal_exact <- function() { + function(a, b) { + x <- base::mapply(function(x, y) x == y || (is.na(x) && is.na(y)), a, b) + return(base::all(x == TRUE)) + } +} + +# TODO use testthat snapshots +expect_similar_dataframes <- function(name, actual_df, column_comparation_functions) { + actual_df_filename <- file.path(tempdir(), paste(name, "csv", sep = ".")) + write.csv(actual_df, actual_df_filename) + compare_fun <- function(expected_df_filename, actual_df_filename) { + return(compare_dataframes(expected_df_filename, actual_df_filename, column_comparation_functions)) + } + expect_snapshot_file(actual_df_filename, compare = compare_fun) +} + + +compare_dataframes <- function(expected_df_filename, actual_df_filename, column_comparation_functions) { + expected_df <- read.csv(expected_df_filename) + actual_df <- read.csv(actual_df_filename) + + all_columns_ok <- TRUE + for (col in base::names(column_comparation_functions)) { + if (col %in% colnames(expected_df) && col %in% colnames(actual_df)) { + compare_function <- column_comparation_functions[[col]] + col_ok <- compare_function(expected_df[[col]], actual_df[[col]]) + if (!col_ok) { + cat("Column", col, "differs ", expected_df[[col]], "!=", actual_df[[col]], "\n") + } + all_columns_ok <- all_columns_ok && col_ok + } else { + if (!(col %in% colnames(expected_df))) { + cat("Column", col, "not in first dataframe") + } + if (!(col %in% colnames(expected_df))) { + cat("Column", col, "not in second dataframe") + } + } + } + return(all_columns_ok) +} + +expect_same_plot <- function(plot_name, actual_plot) { + if (per_platform_snapshots) { + title <- file.path(r_version_id(), plot_name) + } else { + title <- plot_name + } + return(vdiffr::expect_doppelganger(title, actual_plot)) +} diff --git a/vignettes/references.bib b/vignettes/references.bib new file mode 100644 index 00000000..185bcf95 --- /dev/null +++ b/vignettes/references.bib @@ -0,0 +1,60 @@ + +@article{Cucunubá2017, + title = {Modelling historical changes in the force-of-infection of Chagas disease to inform control and elimination programmes: application in Colombia}, + author = {{Cucunubá}, Zulma M and Nouvellet, Pierre and Conteh, Lesong and Vera, Mauricio Javier and Angulo, Victor Manuel and Dib, Juan Carlos and Parra -Henao, Gabriel Jaime and {Basáñez}, {María Gloria}}, + year = {2017}, + month = {09}, + date = {2017-09}, + journal = {BMJ Global Health}, + pages = {e000345}, + volume = {2}, + number = {3}, + doi = {10.1136/bmjgh-2017-000345}, + url = {http://dx.doi.org/10.1136/bmjgh-2017-000345}, + langid = {en} +} + +@article{Carrera2020, + title = {Endemic and Epidemic Human Alphavirus Infections in Eastern Panama: An Analysis of Population-Based Cross-Sectional Surveys}, + author = {Carrera, Jean-Paul and {Cucunubá}, Zulma M. and Neira, Karen and Lambert, Ben and {Pittí}, Yaneth and Liscano, Jesus and {Garzón}, Jorge L. and Beltran, Davis and Collado-Mariscal, Luisa and Saenz, Lisseth and Sosa, {Néstor} and Rodriguez-Guzman, Luis D. and {González}, Publio and Lezcano, {Andrés G.} and {Pereyra-Elías}, {Reneé} and Valderrama, Anayansi and Weaver, Scott C. and Vittor, Amy Y. and {Armién}, Blas and Pascale, Juan-Miguel and Donnelly, Christl A.}, + year = {2020}, + month = {12}, + date = {2020-12-02}, + journal = {The American Journal of Tropical Medicine and Hygiene}, + pages = {2429--2437}, + volume = {103}, + number = {6}, + doi = {10.4269/ajtmh.20-0408}, + url = {http://dx.doi.org/10.4269/ajtmh.20-0408}, + langid = {en} +} + +@article{cunha2017, + title = {Seroprevalence of Chikungunya Virus in a Rural Community in Brazil}, + author = {Cunha, Rivaldo V. and Trinta, Karen S. and Montalbano, Camila A. and Sucupira, Michel V. F. and de Lima, Maricelia M. and Marques, Erenilde and Romanholi, Izilyanne H. and Croda, Julio}, + editor = {Barrera, Roberto}, + year = {2017}, + month = {01}, + date = {2017-01-20}, + journal = {PLOS Neglected Tropical Diseases}, + pages = {e0005319}, + volume = {11}, + number = {1}, + doi = {10.1371/journal.pntd.0005319}, + url = {http://dx.doi.org/10.1371/journal.pntd.0005319}, + langid = {en} +} + +@article{dias2018, + title = {Seroprevalence of Chikungunya Virus after Its Emergence in Brazil}, + author = {Dias, Juarez P. and Costa, {Maria da Conceição N.} and Campos, Gubio Soares and {Paixão}, Enny S. and Natividade, Marcio S. and Barreto, Florisneide R. and Itaparica, Martha Suely C. and Goes, Cristina and Oliveira, Francisca L.S. and Santana, Eloisa B. and Silva, Neusa S.J. and Brito, Carlos A.A. and Rodrigues, Laura C. and Sardi, Silvia Inez and Saavedra, Ramon C. and Teixeira, {Maria Glória}}, + year = {2018}, + month = {04}, + date = {2018-04}, + journal = {Emerging Infectious Diseases}, + pages = {617--624}, + volume = {24}, + number = {4}, + doi = {10.3201/eid2404.171370}, + url = {http://dx.doi.org/10.3201/eid2404.171370} +} diff --git a/vignettes/serofoi.Rmd b/vignettes/serofoi.Rmd new file mode 100644 index 00000000..7d8b042a --- /dev/null +++ b/vignettes/serofoi.Rmd @@ -0,0 +1,24 @@ +--- +title: "serofoi" +output: rmarkdown::html_vignette +vignette: > + %\VignetteIndexEntry{serofoi} + %\VignetteEngine{knitr::rmarkdown} + %\VignetteEncoding{UTF-8} +--- + +```{r, include = FALSE} +knitr::opts_chunk$set( + collapse = TRUE, + comment = "#>" +) +``` + +```{r setup} +library(serofoi) +``` + +# Prepare the data for using serofoi +```{r} +data_test <- prepare_seroprev_data(serodata) +``` diff --git a/vignettes/simulated_data.Rmd b/vignettes/simulated_data.Rmd new file mode 100644 index 00000000..620d6da1 --- /dev/null +++ b/vignettes/simulated_data.Rmd @@ -0,0 +1,239 @@ +--- +title: "Simulated data" +output: rmarkdown::html_vignette +bibliography: references.bib +link-citations: true +vignette: > + %\VignetteIndexEntry{simdata} + %\VignetteEngine{knitr::rmarkdown} + %\VignetteEncoding{UTF-8} +--- + +```{r, include = FALSE} +knitr::opts_chunk$set( + collapse = TRUE, + comment = "#>" +) +``` + +```{r cleaning, include = FALSE, echo = TRUE, message=FALSE} +library(serofoi) +library(tidyverse) +rownames(serodata) <- NULL +data_test <- prepare_seroprev_data(serodata) + + +``` + +# Epidemiological scenarios for the *serofoi* models + +**serofoi** is an R package that allows estimations of the Force-of-Infection from a population based serosurvey data. + +## **Sero-survey data** + +Surveys had to meet all of the following [inclusion criteria]{.underline}: + +1. Be population-based (not hospital based) + +2. Specify individuals' age or age group + +3. Indicate diagnostic test(s) used. The current version of serofoi only applies to *IgG* antibodies) + +4. Identify the location and date (year) of sample collection + +## Model assumptions + +Current version of **serofoi** includes the following assumptions on the underlying biological process: + +- The Force-of-infection (FoI) is estimated using a catalytic model + +- There is no sero-reversion (from positive to negative). It means IgG antibodies are life-long duration with no waning immunity. This may not be the case for several pathogens. This feature is planned for future versions of *serofoi***.** + +- There is no age-dependency. This may not be the case for several pathogens. This feature is planned for future versions of *serofoi***.** + +- There is no impact from migration processes in the sampled population + +- There are no differences in the mortality rate of infected versus susceptible individuals + +::: {.alert .alert-primary} +NOTE: Running the *serofoi* models for the first time on your local computer make take a few minutes while the *rstan* code is compiled locally. Afterwards, no further local compilation is needed. +::: + +# **Constant vs Time-varying** FoI models + +## Constant Force-of-Infection (endemic model) + +For *constant* *endemic model*, the rate of infection acquisition―rate of seroconversion―is constant over time, and infection (sero)prevalence will increase monotonically with age as cumulative exposure increases. + +Denoting $n(a,t)$ the number of seropositive individuals of age $a$ at time $t$ , $N$ the serosurvey sample size, and $P(a,t)$ the underlying seroprevalence at age $a$ at time $t$, we assumed that the number of seropositive subjects follows a Binomial distribution $n(a,t)$ \~ $B(N,P(a,t))$. + +For the force-of-infection (FoI) that is constant over time, denoted $\lambda$, we modelled seroprevalence for age $a$ in year $t$ (i.e. the time when the serosurvey occurred) as: + +$$ P(a,t) = 1−exp(−\lambda{a})$$ + +The corresponding code for the constant-FoI model with binomial distribution is: + +```{r model_1, include = FALSE, echo=TRUE, errors = FALSE, warning = FALSE, message = FALSE } +model_1 <- run_seroprev_model(seroprev_data = data_test, + seroprev_model_name = "constant_foi_bi", + n_iters = 500, + n_thin = 2) + +``` + +## Time-varying Force-of-Infection + +For the time-varying FoI model, the FoI values are estimated from a binomial distribution. The sero-prevalence as age a can be expressed as: + +$$ +𝑃(𝑎,𝑡)=1−exp(−∑_{i=t-a+1}^{t}𝜆{i}) +$$ + +Therefore, a serosurvey completed at time $t$ and including ages $a$ from {$age_{min}, age_{max}$} is informative on exposure (and FoI) between {$t, age_{max}$} and $t$. + +Currently, two models within *serofoi* allow time-varying FoI, with corresponding code: + +```{r model_2, include = FALSE, echo = TRUE, errors = FALSE, warning = FALSE, message = FALSE } +model_2 <- run_seroprev_model(seroprev_data = data_test, + seroprev_model_name = "continuous_foi_normal_bi", + n_iters = 1500, + n_thin = 2) +``` + +```{r model_3, include = FALSE, echo = TRUE, errors = FALSE, warning = FALSE, message = FALSE } +model_3 <- run_seroprev_model(seroprev_data = data_test, + seroprev_model_name = "continuous_foi_normal_log", + n_iters = 1500, + n_thin = 2) +``` + +## Fitting process + +Models are implemented in **RStan** using the No-U-Turn sampler, a type of Hamiltonian Monte Carlo sampling. After convergence, the best-fitting models can be selected based on the expected log predictive density for an out-of-sample data point (elpd). + +## Case study 1. Chagas disease (endemic disease) + +Based on the data and analysis shown in [@Cucunubá2017], we use one of the datasets for measuring the sero-prevalence of IgG antibodies against *Trypanosoma cruzi* infection in rural area of Colombia in 2012. The dataset is part of the serofoi package as `chagas2012`. + +```{r data_chagas, include = TRUE, errors = FALSE, warning = FALSE, message = FALSE } +data("chagas2012") +head(chagas2012, 5) + +``` + +After preparing the data we can run two models (constant and time varying) available on serofoi. + +```{r three models, include = TRUE, errors = FALSE, warning = FALSE, message=FALSE } + +chagas2012p <- prepare_seroprev_data(chagas2012) + +m1_cha <- run_seroprev_model(seroprev_data = chagas2012p, + seroprev_model_name = "constant_foi_bi", + n_iters = 500, + n_thin = 2) + +m2_cha <- run_seroprev_model(seroprev_data = chagas2012p, + seroprev_model_name = "continuous_foi_normal_bi", + n_iters = 1500, + n_thin = 2) + +``` + +Now, we can plot the results of the two models to compare (Figure 1). As shown in @Cucunubá2017, interventions for Chagas control have been ongoing from the 1980s in Colombia having heterogeneous impact depending on the type of population. For this serosurvey, which is from tradittional indigenous rural area, the serofoi models are able to detect a modest still relevant slow decreasing trend consistent (model 2) as slightly better supported than the constant model. Notice that model 3 does not converge despite a high number of iterations. + +```{r, model_comp_cha, include=TRUE, echo=TRUE, fig.width = 8, fig.height=10, warning=FALSE, message=FALSE, message=FALSE} +p1_cha <- plot_seroprev_model(m1_cha, size_text = 12, max_lambda = 0.02) +p2_cha <- plot_seroprev_model(m2_cha, size_text = 12, max_lambda = 0.02) + +plot_seroprev_models_grid(p1_cha, p2_cha, n_row = 1, n_col = 2) +``` + +## Case study 2. Hidden Alphaviruses epidemics in Panama + +As shown in [@Carrera2020], hidden epidemic and endemic transmission of alphaviruses in Eastern Panama have been around for decades. From this paper we use a dataset measuring IgG antibodies againts Venezuelan Equine Encephalitis Virus (VEEV) in a rural village in Panamá in 2017. This dataset, `veev2017` is included in serofoi. + +```{r data_veev, include = TRUE, errors = FALSE, warning = FALSE, message = FALSE } + +data("veev2012") +head(veev2012, 5) + +``` + +```{r models_veee, include = TRUE, errors = FALSE, warning = FALSE, message=FALSE } + +veev2012p <- prepare_seroprev_data(veev2012) + +m1_veev <- run_seroprev_model(seroprev_data = veev2012p, + seroprev_model_name = "constant_foi_bi", + n_iters = 500, + n_thin = 2) + +m2_veev <- run_seroprev_model(seroprev_data = veev2012p, + seroprev_model_name = "continuous_foi_normal_bi", + n_iters = 500, + n_thin = 2) + +m3_veev <- run_seroprev_model(seroprev_data = veev2012p, + seroprev_model_name = "continuous_foi_normal_log", + n_iters = 500, + n_thin = 2) +``` + +Now, we can plot the results of the three models to compare. On Figure 3, we can observe a large increase in the estimated FOI. As suggested in @Carrera2020, an important increase in the transmission of VEEV in this region is inferred. Although the three fitted models converge well, we see much larger support for a more sudden increase in recent years with highest FoI values at 0.25 (consistent with an epidemic). + +```{r, model_comp_veev, include=TRUE, echo=TRUE, fig.width = 10, fig.height=10, warning=FALSE, message=FALSE, message=FALSE} +p1_veev <- plot_seroprev_model(m1_veev, size_text = 10, max_lambda = 0.6) +p2_veev <- plot_seroprev_model(m2_veev, size_text = 10, max_lambda = 0.6) +p3_veev <- plot_seroprev_model(m3_veev, size_text = 10, max_lambda = 0.6) + +plot_seroprev_models_grid(p1_veev, p2_veev, p3_veev, n_row = 1, n_col = 3) + +``` + +Figure 3. Results of fitted models, Force-of-Infection estimates and convergence. + +## Case study 3. A known Large Chikungunya epidemic in Brazil + +Chikungunya outbreaks ocurred rapidly after the introduction of the virus to Brazil in 2013-2014. We use the dataset from [@dias2018] that conducts a population-based study through household interviews and serologic surveys (measuring IgG antibodies against Chikungunya virus) in Bahia, Brazil during October-December 2015, right after a large CHIKV epidemic that occurred in that area. + +```{r data_chik, include = TRUE, errors = FALSE, warning = FALSE, message = FALSE } + +data("chik2015") + +head(chik2015, 5) + +``` + +```{r models_chik, include = TRUE, errors = FALSE, warning = FALSE, message=FALSE } + +chik2015p <- prepare_seroprev_data(chik2015) + +mod1_chik <- run_seroprev_model(seroprev_data = chik2015p, + seroprev_model_name = "constant_foi_bi", + n_iters = 1000, + n_thin = 2) + +mod2_chik <- run_seroprev_model(seroprev_data = chik2015p, + seroprev_model_name = "continuous_foi_normal_bi", + n_iters = 1500, + n_thin = 2) + +mod3_chik <- run_seroprev_model(seroprev_data = chik2015p, + seroprev_model_name = "continuous_foi_normal_log", + n_iters = 1500, + n_thin = 2) +``` + +In Figure 4, we can observe the comparison between the three serofoi models. Here serofoi shows strong statistical support for a sudden increase in the transmission of CHIKV close to the year of the serosurvey (2015). The exact year is not possible to estimate, mainly given the data used is largely aggregated by 20-years age groups. Despite that, the results are consistent with the empirical evidence shown by [@dias2018] with both interviews, and IgM testing. + +```{r plot_chik, include=TRUE, echo=TRUE, fig.width = 10, fig.height = 10, warning = FALSE, message = FALSE} + +p1_chik <- plot_seroprev_model(mod1_chik, size_text = 10, max_lambda = 0.08) +p2_chik <- plot_seroprev_model(mod2_chik, size_text = 10, max_lambda = 0.08) +p3_chik <- plot_seroprev_model(mod3_chik, size_text = 10, max_lambda = 0.08) + +plot_seroprev_models_grid(p1_chik, p2_chik, p3_chik, n_row = 1, n_col = 3) + +``` + +## References diff --git a/vignettes/simulated_data_files/figure-html/model_comp_cha-1.png b/vignettes/simulated_data_files/figure-html/model_comp_cha-1.png new file mode 100644 index 0000000000000000000000000000000000000000..74dcd047e1dfa4aea91268ef79170fdd398836d7 GIT binary patch literal 68916 zcmc$`cR1Gn|2KTnP)Z_E2qBfs?5zk%D0_q`gtBE*Au6O2k`c*B_FfeUQ6jQJGBdL` z_v7sI{r=W<9mjqBb6@xSI6faG&htHY8>l&0(R@oqOm&G`+PKZ{W$9fg)Nl92LVDQi%k$X|s>hoIr=h4y8(!pCuNkv1(x(YL2 zB;Hn7DJgjt9qltycXTB$^ZUo20|OuIf8<^JHu_Q|<;eIvMbhs#DtCs06<++J zjuJ8vBm}D(8veMog)Go=cIY!LE$w`7U%qwQQ!c&J^5*8|l8tTB1VYN}dS^R}ttR=l zy|O}vr7qWNLJrC2U9JicKl`M0;?L0MXq%s3U&x(0b!w&ISF~+KU1Q@-C#Uo?kpZI= z?+$4GpongF>G|naCHjIuYN$KKQ;(nF@!;=K5l(^O(7{^;m!ZJ|?D(@eYAL4Hp*|#+vnh=FO$w$#L$B zliXoSw{PDLVV23r?Mh>f;y2q~W6v6<#PK+rzoVmrH7u~dC{%hyX_y`-(kD9EeY5vc znX5fcFXs94+js6v^^~v9{r=Whb+@#rsHn8mXQ}V5zrTN_VjeFG)sdq|$;imgu~W;) zyuDQFqV+uWX}&&pWr?z~GQFr>{GB^;xQ{yNx-T?2_3q^4FF_I4VxQj zGMnhkuUs^^bG40W`N?sOk0FQZ_q1zsa&vQYaix2$F5tjD`cdYVyO;B~ezrKBcKt_5 zlXt#X>z`(u7Zen{)_&7m?2y-((Yz=B0H4V_yhgiSTgD~D2M1m>vbK#IZWLVaD!Dnu z6Q*?f^yx2gGRE~iX}8OnJfyz)dUz$3zWC^p;pn`RA(`)+NU!JP{-OvY_p^;G&I|Fg zy&Y*Say?&*y`8>fG{+Q{L`N+I7f^d%iWIWeu8tjUjB9*#qqpJ`J2e&6sti?7^{>dt z1H$<@XL&)_KR>_3NbGBhKXu17R_*Lrdl#4QBVVhl2fx2D7}vmQ%eNFeS_tHB9{TW0 z^agIUen~5JU6g=Dd*mSrmn4EEHeXH7Bdq7notyWSl9CeoH1Ydea_)jS z9Unh`)2C0$UQO-(4>K|{R?@Y!%NBosQ;f?Dee>F7qO+sDJ*8&$vq*2&_R24bH|ic8 z5i)R@2-{_x@%F7xQd6w7S7&FZK3n9UKXy_&>0kU?bNG1;i?YmWLTpsj)xS2%Y^FO7 zTE<;UI%Jh?*LRwknfd!hew)$iOg-3a6|_BU>1$g>_!sC#^rZvXzeD>?7p z$+A9DVs~?Mt2EsgcK5ELtLst#1%qqs)VE|xDm?>(srKytrbNZAg6n2(x8BffyzL^V z3TBd8S?u)*4GD3vvtwb^(P?}1=#g@1D^rki(#)SfED0A96|(hIV#LD(e{^?iafW{h ze^+soRlmsY^6Ar+W0`NiY&bbOO5o8}c&+Mgp`@hzZnR38rpZ}QuFU=jMfzOg=8ciB zFVf|nk~?R#(%Y2E&rR1bA3btpeYJO!_I|be!0>R*EEa9QXh`74Q0C2ny2nqRJelk+ z-FIPiVZu6VT%2t<|JCWFi*?^0BqtB2Y9!zIQN(|(nO(T_$rBo{0>+75uf5EM+>Dlz zbai!88b38jm)<)x`XNJ;B|&C$O(X7lY6-&~yHA^M3VTZI`YKU^6B83bDUQQmY!p+v zNO%0l19Gp(>CS2Nam0O#k`wuzoQ8{WBqJ-8;D!joO`Wz9^YD#-5kovu6*v|LtKn zZ8L9TOHbdrAhfiyk|X0^HFJ8RZt{e=&d)K!cf06#vijZ_6y~HZFE69T&Gl-gIOg*DOZLUU;pKY#vITD)ST)!7aRAeI)IU zwXdO}VY^s$w1{oR>=y}cg91iTI}=aOve3}b{QUVCiJQ6tH*ekyL1FBoptx$*+}!M^ zYUDP!zi+7>7u@cvK1tQ&OR}Y1*2*f4Z>CkpSV%;q%~D;fP@L_cfcb8!!Qo-lS<

v!{rz9uM7P{3K1V8U@L$%? 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 b-%I+Mwv%G?iW?iM5$_m^T%~*{r|jWB5w@`k literal 0 HcmV?d00001 diff --git a/man/figures/README-plot_model-1.png b/man/figures/README-plot_model-1.png new file mode 100644 index 0000000000000000000000000000000000000000..268d4f262fb6a6c114588232fbb52d9105ef6da8 GIT binary patch literal 104455 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 literal 0 HcmV?d00001 diff --git a/man/figures/README-plot_seroprev_model-1.png b/man/figures/README-plot_seroprev_model-1.png new file mode 100644 index 0000000000000000000000000000000000000000..062f61c6ca85ac1efcc732bf650b44a5f3206d1d GIT binary patch literal 75178 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