-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #154 from dd-harp/dev
menu reorganization
- Loading branch information
Showing
9 changed files
with
108 additions
and
38 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,84 @@ | ||
--- | ||
title: "Nimble Model Building and Scalable Complexity" | ||
output: rmarkdown::html_vignette | ||
vignette: > | ||
%\VignetteIndexEntry{Nimble Model Building and Scalable Complexity} | ||
%\VignetteEngine{knitr::rmarkdown} | ||
%\VignetteEncoding{UTF-8} | ||
--- | ||
|
||
The design of **`ramp.xds`** was based on a mathematical framework, but it was motivated by the ideas of nimble model building and scaling complexity. The software, like the framework, is modular, but it was equally important for the software to be flexible and extensible. Since it is impossible for any software to take on everything all at once, it was necessary to make some important decisions about how the software should handle the space of all possible models. | ||
|
||
## Terminology | ||
|
||
The term *model* is used in so many ways that we have found it necessary to develop a specialized vocabulary to disambiguate some of the possible meanings in context. Two important definitions that we would like to use for mechanistic models are: | ||
|
||
1. **Model** - A mechanistic *model* is any abstract, quantitative representation of a process. | ||
|
||
2. **Model** - in **`ramp.xds`,** a model is defined by an **`xds`** object. It has defined all of the parameters, initial values, and possibly a random number seed, and it can be solve solved. | ||
|
||
We must live with this ambiguity, but we would like to define some terms that can help us to make sense of all this complexity in context. | ||
|
||
+ **Model Family** - what is colloquially referred to as a *model* in the code library is more accurately described as a model family. Each model family is defined by a set of *states* and transitions (*i.e.* as defined for one population stratum) that represent the *true* but unobservable state of a population, also known as *latent* states. Each model has a defined set of define parameters; the model family includes models with any reasonable parameter values. | ||
|
||
- Model families are defined for the endogenous variables and for *autonomous* systems with a single stratum | ||
|
||
- a model family thus includes all of the *non-autonous* systems with unspecified exogenous variables that could modify the parameters | ||
|
||
- a model also includes all related structured models that extend it. | ||
|
||
- Two models are also identical if one can be derived from another by a change of variables. | ||
|
||
- Each model can be represented as a directed graph with specialized edge types (*e.g.* simple flows; delayed flows): and two models belong to the same model family if their graphs are identical. | ||
|
||
+ **State Space Models** - the latent states in a model are associated with a set of observable states, and an important part of a model definition is a set of functions that define an observation process mapping the latent states onto observable states. | ||
|
||
+ **Model Skill Set** - a model's skill set is defined as the set of observable quantities that are naturally represented by the latent states such that they can be computed without requiring extraneous information. | ||
|
||
+ **Module** - a *module* in **`ramp.xds`** instatiates a model family in **`ramp.xds`** for one of the dynamical components, and each module has been assigned a unique name. For example, the `'macdonald'`model for adult mosquitoes instantiates a non-extensible version of the Ross-Macdonald model. | ||
|
||
+ **Trival Module** - for each dynamical component, the trivial module lacks any variables, so it does not respond dynamically to other dynamical components. Each trivial model passes the required outputs to other models as a *trace* function. | ||
|
||
## Model Building | ||
|
||
Model building in **`ramp.xds`** was developed with the goal of building complex models by extending simple ones. This proceeds in an orderly way through basic setup: | ||
|
||
+ Choose the modules for each dynamical component; | ||
|
||
+ Define the basic model structure; | ||
|
||
|
||
### Modular Dynamics | ||
|
||
The first step in building a model is to determine which modules to use for a study. | ||
|
||
### Structural Flexibility | ||
|
||
#### Principled Stratification | ||
|
||
Each human (or vertebrate host) population can be stratified into an arbitrary number of sub-populations or strata. | ||
|
||
#### Spatial Structure | ||
|
||
In these models, spatial dynamics are defined by patches representing the locations of adult mosquito sub-populations. | ||
|
||
#### Structured Habitats | ||
|
||
#### Malaria Importation | ||
|
||
### Flexibility | ||
|
||
### Extensibility | ||
|
||
#### Forcing | ||
|
||
By default, each model is set up as an **autonomous** system of equations. An autonomous system is then modified by adding exogenous variables and forcing, making it a **non-autonomous** system. | ||
|
||
#### Vector Control | ||
|
||
#### Multiple Host Species (or types) | ||
|
||
#### Multiple Vector Species (or types) | ||
|
||
**Vector Species** (or types) - basic setup handles a single vector species (or type). Each new species must be added separately. adds to the model. | ||
|