| Title: | SEIR Simulation Modelling of Crop Diseases |
|---|---|
| Description: | Generic simulation modelling of crop diseases using a Susceptible-Exposed-Infectious-Removed ('SEIR') model. This type of model was first described in botanical epidemiology by Zadoks (1971) <doi:10.1094/Phyto-61-600> and implemented in the 'EPIRICE' model by Savary et al. (2012) <doi:10.1016/j.cropro.2011.11.009> detailing the model's development, use and results from modelling global unmanaged epidemics of rice diseases for five major rice diseases, bacterial blight, brown spot, leaf blast, sheath blight and tungro. Specific functions are provided to simulate all of these diseases with a generic 'SEIR' model function that is suitable for parameterising for use with other pathosystems as demonstrated in Savary et al. 2012 and Kim et al. 2015 <doi:10.1016/j.agrformet.2015.01.011> along with two wheat diseases, brown (leaf) rust and Septoria tritici blotch as published in Savary et al. 2015 <doi:10.1007/s10658-015-0650-7>. Functions for fetching and formatting weather data from the NASA POWER database are also provided to simplify the process of running simulations. |
| Authors: | Adam H. Sparks [cre, aut] (ORCID: <https://orcid.org/0000-0002-0061-8359>), Robert Hijmans [aut, trl, cph] (Original R implementation, ORCID: <https://orcid.org/0000-0001-5872-2872>), Serge Savary [aut, ccp, cph] (Model conception and development in Stella, ORCID: <https://orcid.org/0000-0002-6867-180X>), Ireno Pangga [aut, trl, cph] (Model conception, development in Stella and original R implementation), Jorrel Aunario [aut, trl, cph] (Original R implementation), Kwang-Hyung Kim [aut, cph] (Contributed code for modified Kim leaf blast and sheath blight functions and feedback on the implementation.), Aji Sukarta [ctb] (Helped fix bug related to SEIR model and establishment date), Emerson Del Ponte [ctb] (Suggested fixes for several typos in the documentation, ORCID: <https://orcid.org/0000-0003-4398-409X>) |
| Maintainer: | Adam H. Sparks <[email protected]> |
| License: | GPL (>= 3) |
| Version: | 1.0.0.9000 |
| Built: | 2026-05-29 04:58:23 UTC |
| Source: | https://codeberg.org/adamhsparks/epicrop |
Extracts Area Under Disease Progress Curve (AUDPC) values along with location and emergence date information from an epicrop.sim object.
audpc_dt(x)audpc_dt(x)
x |
An |
A data.table::data.table() with columns:
lat: Latitude (if available)
lon: Longitude (if available)
AUDPC: Area under disease progress curve
emergence: Emergence date (as character)
Construct a vector of emergence dates by combining a set of years with a set
of month-day strings (e.g., "-06-01"), returning a sorted IDate vector
tagged with class epicrop.emerge for downstream use with
run_epicrop_model().
build_epicrop_emergence(years, month_day)build_epicrop_emergence(years, month_day)
years |
Integer vector of years (e.g., |
month_day |
Character vector of month-day strings in the form |
A sorted vector of data.table::IDate emergence dates with class
epicrop.emerge (i.e., inherits(x, "epicrop.emerge") will be TRUE).
Adam H. Sparks, [email protected]
run_epicrop_model(), fetch_epicrop_weather_list()
# Basic usage: combine years with multiple month-day patterns years <- 2001:2002 month_day <- c("-06-01", "-06-14", "-06-30") em <- build_epicrop_emergence(years, month_day) em # Check class and structure inherits(em, "epicrop.emerge") # TRUE head(em) # First few dates (IDate) length(em) # 6 (2 years × 3 month-days) # Typical downstream: pass to run_epicrop_model(...) # run_epicrop_model(bacterial_blight, em, wth_list, output = "audpc")# Basic usage: combine years with multiple month-day patterns years <- 2001:2002 month_day <- c("-06-01", "-06-14", "-06-30") em <- build_epicrop_emergence(years, month_day) em # Check class and structure inherits(em, "epicrop.emerge") # TRUE head(em) # First few dates (IDate) length(em) # 6 (2 years × 3 month-days) # Typical downstream: pass to run_epicrop_model(...) # run_epicrop_model(bacterial_blight, em, wth_list, output = "audpc")
Helper functions with pre-loaded parameter tables for optimal performance. Custom parameter tables can be provided to override defaults.
bacterial_blight( wth, emergence, RcA = NULL, RcT = NULL, RRS = NULL, RRG = NULL, ... ) brown_spot(wth, emergence, RcA = NULL, RcT = NULL, RRS = NULL, RRG = NULL, ...) leaf_blast(wth, emergence, RcA = NULL, RcT = NULL, RRS = NULL, RRG = NULL, ...) sheath_blight( wth, emergence, RcA = NULL, RcT = NULL, RRS = NULL, RRG = NULL, ... ) tungro(wth, emergence, RcA = NULL, RcT = NULL, RRS = NULL, RRG = NULL, ...) modified_kim_leaf_blast( wth, emergence, RcA = NULL, RcT = NULL, RRS = NULL, RRG = NULL, ... ) modified_kim_sheath_blight( wth, emergence, RcA = NULL, RcT = NULL, RRS = NULL, RRG = NULL, ... ) leaf_rust(wth, emergence, RcA = NULL, RcT = NULL, RRS = NULL, RRG = NULL, ...) s_tritici_blotch( wth, emergence, RcA = NULL, RcT = NULL, RRS = NULL, RRG = NULL, ... ) bb(wth, emergence, RcA = NULL, RcT = NULL, RRS = NULL, RRG = NULL, ...) bs(wth, emergence, RcA = NULL, RcT = NULL, RRS = NULL, RRG = NULL, ...) lb(wth, emergence, RcA = NULL, RcT = NULL, RRS = NULL, RRG = NULL, ...) sb(wth, emergence, RcA = NULL, RcT = NULL, RRS = NULL, RRG = NULL, ...) tg(wth, emergence, RcA = NULL, RcT = NULL, RRS = NULL, RRG = NULL, ...) mk_lb(wth, emergence, RcA = NULL, RcT = NULL, RRS = NULL, RRG = NULL, ...) mk_sb(wth, emergence, RcA = NULL, RcT = NULL, RRS = NULL, RRG = NULL, ...) lr(wth, emergence, RcA = NULL, RcT = NULL, RRS = NULL, RRG = NULL, ...) brown_rust(wth, emergence, RcA = NULL, RcT = NULL, RRS = NULL, RRG = NULL, ...) stb(wth, emergence, RcA = NULL, RcT = NULL, RRS = NULL, RRG = NULL, ...)bacterial_blight( wth, emergence, RcA = NULL, RcT = NULL, RRS = NULL, RRG = NULL, ... ) brown_spot(wth, emergence, RcA = NULL, RcT = NULL, RRS = NULL, RRG = NULL, ...) leaf_blast(wth, emergence, RcA = NULL, RcT = NULL, RRS = NULL, RRG = NULL, ...) sheath_blight( wth, emergence, RcA = NULL, RcT = NULL, RRS = NULL, RRG = NULL, ... ) tungro(wth, emergence, RcA = NULL, RcT = NULL, RRS = NULL, RRG = NULL, ...) modified_kim_leaf_blast( wth, emergence, RcA = NULL, RcT = NULL, RRS = NULL, RRG = NULL, ... ) modified_kim_sheath_blight( wth, emergence, RcA = NULL, RcT = NULL, RRS = NULL, RRG = NULL, ... ) leaf_rust(wth, emergence, RcA = NULL, RcT = NULL, RRS = NULL, RRG = NULL, ...) s_tritici_blotch( wth, emergence, RcA = NULL, RcT = NULL, RRS = NULL, RRG = NULL, ... ) bb(wth, emergence, RcA = NULL, RcT = NULL, RRS = NULL, RRG = NULL, ...) bs(wth, emergence, RcA = NULL, RcT = NULL, RRS = NULL, RRG = NULL, ...) lb(wth, emergence, RcA = NULL, RcT = NULL, RRS = NULL, RRG = NULL, ...) sb(wth, emergence, RcA = NULL, RcT = NULL, RRS = NULL, RRG = NULL, ...) tg(wth, emergence, RcA = NULL, RcT = NULL, RRS = NULL, RRG = NULL, ...) mk_lb(wth, emergence, RcA = NULL, RcT = NULL, RRS = NULL, RRG = NULL, ...) mk_sb(wth, emergence, RcA = NULL, RcT = NULL, RRS = NULL, RRG = NULL, ...) lr(wth, emergence, RcA = NULL, RcT = NULL, RRS = NULL, RRG = NULL, ...) brown_rust(wth, emergence, RcA = NULL, RcT = NULL, RRS = NULL, RRG = NULL, ...) stb(wth, emergence, RcA = NULL, RcT = NULL, RRS = NULL, RRG = NULL, ...)
wth |
a
Details TMAX | Optional Maximum daily temperature (degrees C), see TMIN/TMAX Details LAT | Optional latitude of weather observation, see LAT/LON Details LON | Optional longitude of weather observation, see LAT/LON Details |
||||||||||||||
emergence |
Expected date of plant emergence (or transplanting for rice)
entered in |
||||||||||||||
RcA |
Optional custom age modifier table (2-column matrix). |
||||||||||||||
RcT |
Optional custom temperature modifier table (2-column matrix). |
||||||||||||||
RRS |
Optional custom senescence rate (scalar, vector, or function). |
||||||||||||||
RRG |
Optional custom growth rate (scalar, vector, or table). |
||||||||||||||
... |
Other parameters passed to |
Adam H. Sparks, [email protected]
Savary, S., Nelson, A., Willocquet, L., Pangga, I., and Aunario, J. (2012). Modeling and mapping potential epidemics of rice diseases globally. Crop Protection, 34: 6-17. doi:10.1016/j.cropro.2011.11.009
Kim, K. H., Cho, J., Lee, Y. H., & Lee, W. S. (2015). Predicting potential epidemics of rice leaf blast and sheath blight in South Korea. Agricultural and Forest Meteorology, 203: 191-207. doi:10.1016/j.agrformet.2015.01.011
Savary, S., Stetkiewicz, S., Brun, F., & Willocquet, L. (2015). Modelling and mapping potential epidemics of wheat diseases. European Journal of Plant Pathology, 142: 771-790. doi:10.1007/s10658-015-0650-7
Retrieve one or more continuous blocks of weather for one or more locations
from given start dates and durations, then split each result into a named
list of per‑year tables. Each (location, start, duration) result is an
epicrop.wth.list. The top-level return is an epicrop.wth.bundle when
multiple requests are processed, otherwise a single epicrop.wth.list.
fetch_epicrop_weather_list( lonlat, start_date, duration, years = NULL, mode = "pairwise", location_names = NULL )fetch_epicrop_weather_list( lonlat, start_date, duration, years = NULL, mode = "pairwise", location_names = NULL )
lonlat |
Numeric length‑2 vector |
start_date |
A starting date (character |
duration |
Integer(s). Number of days to retrieve from |
years |
Optional integer vector of years. Required if |
mode |
Character scalar: |
location_names |
Optional character names for locations (length = number of unique locations). |
lonlat: a single numeric vector, c(lon, lat); or multiple locations as
a numeric vector of length 2n, or a 2‑column matrix/data.frame, or a list
of list(c(lon, lat)).
start_date: a single "YYYY-MM-DD" (or Date/IDate), or a vector of
the same; or a month–day string like "06-30" or "6-30" (leading "-"
optional) provided together with years.
duration: single integer or a vector (recycled); interpreted as inclusive
days to fetch (end = start + duration - 1).
years: only used when start_date lacks a year. We compute a cover
window per distinct month–day: start = min(paste(years, md)),
end = max(paste(years, md)) + (duration - 1).
If only one (location, start, duration) is requested: an
epicrop.wth.list.
Otherwise: an epicrop.wth.bundle (a named list of epicrop.wth.list).
Adam H. Sparks, [email protected]
# Single location, month-day start date (any of "6/30", "-06-30", "06-30") w1 <- fetch_epicrop_weather_list( lonlat = c(121.255669, 14.16742), start_date = "6/30", duration = 120L, years = 2000:2001 ) # ISO start date w2 <- fetch_epicrop_weather_list( lonlat = c(121.255669, 14.16742), start_date = "2000-06-30", duration = 120L ) # Multiple locations × multiple dates (cross mode), mixed inputs locations <- rbind( "IRRI_ZES" = c(121.255669, 14.16742), "Metro_Manila" = c(120.985, 14.6042) ) w3 <- fetch_epicrop_weather_list( lonlat = locations, start_date = c("2000-06-30", "6-30"), duration = 120L, years = 2000:2001, mode = "cross" ) # Multiple start dates for same location across years (efficient API calls) w4 <- fetch_epicrop_weather_list( lonlat = c(121.255669, 14.16742), start_date = c("-06-01", "-06-14", "-06-30"), duration = 90L, years = 2001:2003 ) # This makes only 3 API calls (one per year), fetching from earliest to # latest start date + duration# Single location, month-day start date (any of "6/30", "-06-30", "06-30") w1 <- fetch_epicrop_weather_list( lonlat = c(121.255669, 14.16742), start_date = "6/30", duration = 120L, years = 2000:2001 ) # ISO start date w2 <- fetch_epicrop_weather_list( lonlat = c(121.255669, 14.16742), start_date = "2000-06-30", duration = 120L ) # Multiple locations × multiple dates (cross mode), mixed inputs locations <- rbind( "IRRI_ZES" = c(121.255669, 14.16742), "Metro_Manila" = c(120.985, 14.6042) ) w3 <- fetch_epicrop_weather_list( lonlat = locations, start_date = c("2000-06-30", "6-30"), duration = 120L, years = 2000:2001, mode = "cross" ) # Multiple start dates for same location across years (efficient API calls) w4 <- fetch_epicrop_weather_list( lonlat = c(121.255669, 14.16742), start_date = c("-06-01", "-06-14", "-06-30"), duration = 90L, years = 2001:2003 ) # This makes only 3 API calls (one per year), fetching from earliest to # latest start date + duration
Formats an existing data.frame() of weather data for use in epicrop.
Only the data necessary for use in the model is returned and the columns
are renamed to values expected by the model. The data are assumed to be on
a daily time-step. For converting sub-daily weather data to daily, see
cropgrowdays::daily_mean().
format_wth(wth, date, temp, rhum, rain, tmin, tmax, lat, lon)format_wth(wth, date, temp, rhum, rain, tmin, tmax, lat, lon)
wth |
A |
date |
The column name indicating the field containing the date values. |
temp |
The column name indicating the field containing the average daily temperature values. |
rhum |
The column name indicating the field containing the average daily relative humidity. |
rain |
The column name indicating the field containing the total daily rainfall. |
tmin |
The column name indicating the field containing the minimum daily temperature (optional). |
tmax |
The column name indicating the field containing the maximum daily temperature. |
lat |
The column name indicating the field containing the latitude of the observation data (optional). |
lon |
The column name indicating the field containing the longitude of the observation data (optional). |
Weather data must be a daily time-step and contain the following values,
full date including year, month and day,
average daily temperature,
average daily relative humidity,
total daily rainfall
The following values are optional and the model can be run by default without them.
average minimum daily temperature (only used if simple_wetness == FALSE)
average maximum daily temperature (only used if simple_wetness == FALSE)
Latitude (only used if simple_wetness == FALSE and for mapping outputs)
Longitude (only used for mapping outputs)
| Field Name | Value |
| YYYYMMDD | Date as Year Month Day (ISO8601) |
| DOY | Consecutive day of year, commonly called "Julian date" |
| TEMP | Mean daily temperature (°C) |
| TMIN | Daily minimum temperature (°C) |
| TMAX | Daily maximum temperature (°C) |
| RHUM | Mean daily relative humidity (%) |
| RAIN | Mean daily rainfall (mm) |
| LAT | Latitude of area of interest |
| LON | Longitude of area of interest. |
An epicrop.wth object, a data frame compatible with a
data.table::data.table(), suitable for use in epicrop.
Adam H. Sparks, [email protected]
# Get weather data from the POWER API, using the `get_wth()` function, # this is for example purposes only as it is NOT necessary to reformat # the data provided by `get_wth()`. library(nasapower) w <- get_power( lonlat = c(121.25562, 14.6674), dates = c("2000-06-30", "2000-12-31"), community = "AG", pars = c( "T2M", "T2M_MIN", "T2M_MAX", "RH2M", "PRECTOTCORR" ), temporal_api = "DAILY" ) format_wth( wth = w, date = "YYYYMMDD", temp = "T2M", rhum = "RH2M", rain = "PRECTOTCORR", tmin = "T2M_MIN", tmax = "T2M_MAX", lat = "LAT", lon = "LON" )# Get weather data from the POWER API, using the `get_wth()` function, # this is for example purposes only as it is NOT necessary to reformat # the data provided by `get_wth()`. library(nasapower) w <- get_power( lonlat = c(121.25562, 14.6674), dates = c("2000-06-30", "2000-12-31"), community = "AG", pars = c( "T2M", "T2M_MIN", "T2M_MAX", "RH2M", "PRECTOTCORR" ), temporal_api = "DAILY" ) format_wth( wth = w, date = "YYYYMMDD", temp = "T2M", rhum = "RH2M", rain = "PRECTOTCORR", tmin = "T2M_MIN", tmax = "T2M_MAX", lat = "LAT", lon = "LON" )
Get the AUDPC value from an epicrop model run object's attributes for use in analysis, mapping, or reporting.
get_audpc(x)get_audpc(x)
x |
An |
Numeric AUDPC value
This function is a wrapper for the nasapower::get_power() with predefined
parameters suitable for use in epicrop.
get_wth(lonlat, dates, duration = NULL)get_wth(lonlat, dates, duration = NULL)
lonlat |
A numeric vector of geographic coordinates for a cell or region entered as lon (x), lat (y) coordinates. |
dates |
A character vector of start and end dates in that order. |
duration |
A numeric value indicating how many days a single
growing season being simulated is to be. If this is used, only the start
date will be used and the end date will be ignored if supplied. This must
match the |
A epicrop.wth, a data frame based on a data.table::data.table(),
object suitable for use in epicrop containing weather data, dates and
geolocation information (LAT/LON values) with the following columns:
| Field Name | Value |
| YYYYMMDD | Date as Year Month Day (ISO8601) |
| DOY | Consecutive day of year, commonly called "Julian date" |
| TEMP | Mean daily temperature (°C) |
| TMIN | Daily minimum temperature (°C) |
| TMAX | Daily maximum temperature (°C) |
| RHUM | Mean daily relative humidity (%) |
| RAIN | Mean daily rainfall (mm) |
| LAT | Latitude of area of interest |
| LON | Longitude of area of interest. |
Adam H. Sparks, [email protected]
# get weather for IRRI Zeigler Experiment Station in wet season 2000 from the # default NASA POWER data. power <- get_wth( lonlat = c(121.25562, 14.6774), dates = c("2000-06-30", "2000-12-31") ) # get 120 days of weather for IRRI Zeigler Experiment Station in wet season # 2000 by specifying the duration but not the end-date and specifying to use # POWER data. power <- get_wth( lonlat = c(121.25562, 14.6774), dates = "2000-06-30", duration = 120 )# get weather for IRRI Zeigler Experiment Station in wet season 2000 from the # default NASA POWER data. power <- get_wth( lonlat = c(121.25562, 14.6774), dates = c("2000-06-30", "2000-12-31") ) # get 120 days of weather for IRRI Zeigler Experiment Station in wet season # 2000 by specifying the duration but not the end-date and specifying to use # POWER data. power <- get_wth( lonlat = c(121.25562, 14.6774), dates = "2000-06-30", duration = 120 )
A unified helper that executes any epicrop model (e.g.,
bacterial_blight(), brown_spot(), leaf_blast(), sheath_blight(),
tungro(), modified_kim_leaf_blast(), modified_kim_sheath_blight(),
leaf_rust(), or s_tritici_blotch()) over a set of emergence dates, using
a list of per-year weather data.tables. Handles within-year and cross-year
windows without globally binding weather.
run_epicrop_model( model_fun, emergence_dates, wth_list, window_days = 120L, output = "audpc", ... )run_epicrop_model( model_fun, emergence_dates, wth_list, window_days = 120L, output = "audpc", ... )
model_fun |
Function. An epicrop model function (e.g.,
|
emergence_dates |
Vector of dates (character "YYYY-MM-DD", Date, or IDate). |
wth_list |
Named list of weather data.table::data.tables with
one per year; |
window_days |
Integer. Days after emergence to include (default 120L).
The slicer returns exactly |
output |
Character. "audpc" (compact summary using |
... |
Additional arguments forwarded to |
A data.table::data.table. When output = "audpc":
columns emergence (IDate) and AUDPC (numeric).
When output = "full": full model output columns plus emergence, and
an AUDPC column preserved per emergence date.
Adam H. Sparks, [email protected]
fetch_epicrop_weather_list, build_epicrop_emergence
years <- 2001:2003 month_day <- c("-06-01", "-06-14", "-06-30") lonlat <- c(121.255669, 14.16742) duration <- 120L emergence <- build_epicrop_emergence(years, month_day) wth_list <- fetch_epicrop_weather_list(years, lonlat, start_date = month_day, duration = duration) run_epicrop_model(bacterial_blight, emergence, wth_list)years <- 2001:2003 month_day <- c("-06-01", "-06-14", "-06-30") lonlat <- c(121.255669, 14.16742) duration <- 120L emergence <- build_epicrop_emergence(years, month_day) wth_list <- fetch_epicrop_weather_list(years, lonlat, start_date = month_day, duration = duration) run_epicrop_model(bacterial_blight, emergence, wth_list)
This function is originally used by specific disease models in ‘EPIRICE’ and ‘EPIWHEAT’ to model disease intensity of several rice diseases and two wheat diseases respectively. Given proper values it can be used with other pathosystems as well.
seir( wth, emergence, onset, duration, H0, I0, RcA, RcT, RcOpt, p, i, Sx, a = 1, rhlim = 90, rainlim = 5, RRS = NULL, RRG = NULL, RcW = NULL, RRLEX = NULL, simple_wetness = TRUE, weighted_wetness = FALSE, age_driver = c("day", "dvs"), thermal_time = NULL, infection_window = NULL )seir( wth, emergence, onset, duration, H0, I0, RcA, RcT, RcOpt, p, i, Sx, a = 1, rhlim = 90, rainlim = 5, RRS = NULL, RRG = NULL, RcW = NULL, RRLEX = NULL, simple_wetness = TRUE, weighted_wetness = FALSE, age_driver = c("day", "dvs"), thermal_time = NULL, infection_window = NULL )
wth |
a
Details TMAX | Optional Maximum daily temperature (degrees C), see TMIN/TMAX Details LAT | Optional latitude of weather observation, see LAT/LON Details LON | Optional longitude of weather observation, see LAT/LON Details |
||||||||||||||
emergence |
Expected date of plant emergence (or transplanting for rice)
entered in |
||||||||||||||
onset |
expected number of days until the onset of disease after emergence date (day, integer). For this modern seir() variant onset is 1-indexed (1 = emergence day). When comparing with legacy SEIR(), translate as legacy_onset = onset - 1. |
||||||||||||||
duration |
simulation duration i. e., growing season length (day, integer). Described in Table 1 of Savary et al. 2012. |
||||||||||||||
H0 |
initial number of plant's healthy sites (integer). Described in Table 1 of Savary et al. 2012. |
||||||||||||||
I0 |
initial number of infective sites (scalar integer). Described in
Table 1 of Savary et al. 2012. I0 is injected as new infections (become
infectious after |
||||||||||||||
RcA |
modifier for Rc (the basic infection rate corrected for
removals) for crop age as a numeric two-column matrix with the first column
being the crop age in days (0 to |
||||||||||||||
RcT |
modifier for Rc (the basic infection rate corrected for removals) for temperature as a numeric two-column matrix with the first column being temperature in degrees C and the second the modifier (bounded by 0 and 1). Described in Tables 1 and 2 of Savary et al. 2012. |
||||||||||||||
RcOpt |
potential basic infection rate corrected for removals (numeric). Described in Table 1 of Savary et al. 2012. This value can be modified to reflect crop cultivar resistance ratings as well, see Kim _et al. _ 2015 for more details. |
||||||||||||||
p |
duration of latent period (day, integer or function of temperature). Described in Table 1 of Savary et al. 2012. |
||||||||||||||
i |
duration of infectious period (day, integer or function of temperature). Described in Table 1 of Savary et al. 2012. |
||||||||||||||
Sx |
maximum number of sites (integer). Described in Table 1 of Savary et al. 2012. |
||||||||||||||
a |
aggregation coefficient, values are from 1 to >1 (numeric or function of DVS). Described in Table 1 of Savary et al. 2012 and Table 1 of Savary et al. 2015. See further details in a - Aggregation section. Defaults to 1. |
||||||||||||||
rhlim |
relative humidity value threshold to decide whether leaves are
wet or not (numeric). Described in Table 1 of Savary et al. 2012. Savary
et al. 2012 used |
||||||||||||||
rainlim |
rainfall amount (mm) threshold to decide whether leaves are
wet or not (numeric). Described in Table 1 of Savary et al. 2012. Savary
et al. 2012 used |
||||||||||||||
RRS |
relative rate of physiological senescence (numeric, vector, or function of DVS). Described in Table 1 of Savary et al. 2012. |
||||||||||||||
RRG |
relative rate of growth (numeric, vector, or function of time). Described in Table 1 of Savary et al. 2012. |
||||||||||||||
RcW |
Optional modifier for Rc to calculate leaf wetness effect
from 1 if wet to 0 if dry. This is a numeric two-column matrix with the
first column being hours (0 to 24) and the second the modifier (bounded by 0
and 1). Used when |
||||||||||||||
RRLEX |
Rate of lesion expansion (scalar, vector, or function). Allows healthy sites to be directly converted to infectious sites without passing through latent stage. Set to 0 (default) for standard SEIR behavior. |
||||||||||||||
simple_wetness |
Logical. If |
||||||||||||||
weighted_wetness |
Logical. If |
||||||||||||||
age_driver |
Character. Use "day" (default, 0-indexed days from
emergence) or "dvs" (development stage 0-2) for age-based modifiers in
|
||||||||||||||
thermal_time |
List with |
||||||||||||||
infection_window |
Optional list defining DVS-based infection window:
|
A data.table::data.table() object containing the following
columns:
Day of simulation (1-indexed, where 1 is the emergence date)
Date of simulation (Date class)
Total number of healthy sites present on day "x"
Number of latent sites present on day "x"
Number of infectious sites present on day "x"
Number of removed sites present on day "x"
Number of senesced sites present on day "x"
Rate of infection (new infections on day "x")
Rate of lesion expansion (healthy sites converted to infectious via direct expansion on day "x")
Rate of transfer from latent to infectious sites on day "x"
Rate of removal from infectious to removed sites on day "x"
Rate of growth of healthy sites on day "x"
Rate of senescence of healthy sites on day "x"
Number of diseased (latent + infectious + removed) sites on day "x"
Proportion of diseased sites (latent + infectious) per total living sites (excludes removed and senesced) on day "x"
Latitude value if provided by the wth object
Longitude value if provided by the wth object
The returned object also has an attribute AUDPC (accessed via
attr(result, "AUDPC")) containing the area under the disease progress
curve for the entire simulation, calculated using the trapezoidal rule.
The output is organized into three categories:
State Variables (stocks at end of each day):
sites, latent, infectious, removed, senesced
Flow Variables (rates/changes during each day):
rateinf, rlex, rtransfer, rremoved, rgrowth, rsenesced
Derived Variables (calculated from states):
diseased, intensity
Mass Balance:
At any day: sites + latent + infectious + removed + senesced should equal
initial sites (H0) plus cumulative growth minus cumulative senescence
(accounting for numerical precision).
When a is set to 1 the assumption is that that there is no disease
aggregation with new infections occurring at random among the healthy sites.
When a is greater than 1 there is aggregation in the disease occurrence,
the pathogen is unable to access the entire population of healthy sites,
which results in disease aggregation. Refer to Savary et al. (2012) for
greater detail.
If simple_wetness is set to FALSE, the function will use the TMIN and
TMAX columns in the wth object to calculate the leaf wetness value for
24 hours of the day using the rhlim and rainlim values and then uses
RcW to calculate a value between 0 and 1 for the whole day. When
simple_wetness is set to TRUE, the function only sets the leaf wetness
to 0 or 1 for the day based on the rhlim and rainlim values.
If the wth object provides LAT and LON columns, these will be included
in the output for mapping purposes. Both values must be present. These
columns are provided by default when using get_wth().
Adam H. Sparks, [email protected] from original by Robert J. Hijmans, Rene Pangga and Jorrel Aunario.
Sparks, A. H., P. D. Esker, M. Bates, W. Dall' Acqua, Z. Guo, V. Segovia, S.D. Silwal, S. Tolos, and K. A. Garrett, 2008. Ecology and Epidemiology in R: Disease Progress over Time. The Plant Health Instructor. doi:10.1094/PHI-A-2008-0129-02.
Madden, L. V., G. Hughes, and F. van den Bosch. 2007. The Study of Plant Disease Epidemics. American Phytopathological Society, St. Paul, MN. doi:10.1094/9780890545058.
Savary, S., Nelson, A., Willocquet, L., Pangga, I., and Aunario, J. Modeling and mapping potential epidemics of rice diseases globally. Crop Protection, Volume 34, 2012, Pages 6-17, ISSN 0261-2194 doi:10.1016/j.cropro.2011.11.009.
Disease-specific helper functions:
leaf_rust(), and