Thank you for taking the time to contribute to Individual. We’re grateful that you would take some time to make Individual-Based Modeling easier in R. Pull requests are very welcome.
For major changes, please open an issue first to give other developers a heads up on what you would like to add or change. That way we can reduce any redundant efforts and give any resources if needed.
For bug reports please include:
We use Git on this project. Which means we use
release/* branches. Please refer to this post for more information of each type of branch. NOTE:
bug/* branches are
feat/* branches which fix a bug.
Practically speaking, all new code contributions should be feature branches. You should branch off of the
dev branch into one called
feat/[your feature name here]. When we consider pull requests from forked repositories to the mrc-ide/individual repository, we will expect this convention.
Large releases will have a
release/* branch to manage the transition. No new features will be merged into
release/* branches. Only documentation and bug fixes will be considered.
R/simulation.R - Contains the main entry point and configuration for models
R/variables.R - Defines classes for the available variables
R/events.R - Defines classes for the available events
src/ - The C++ side of the R interface and tests
inst/include/Variable.h - The implementations of Variables
inst/include/Event.h - The implementations of Events
tests/ - are divided into unit, integration and performance tests. Integration tests are strongly recommended for large functions and unit tests for everything else
Here’s a checklist for a successful PR:
These are the things we check for:
Our review process is based off of RESIDE’s PR review process
We use google benchmark for our microbenchmarks. You can compile and run the benchmarks like this:
cd tests/performance g++ *_benchmark.cpp -std=c++14 -lbenchmark -lpthread -o benchmark.out ./benchmark.out