vignettes/04c-The_simList.Rmd
04c-The_simList.RmdsimList come from?Initializing a simulation using simInit() creates a simList object.
Running a simulation via a spades() call returns a modified simList object.
A simList object is simply a structured data type containing various elements of a simulation.
The main components of a simList are:
SpaDES works: simListsWe can examine the simList object structure in the usual R fashion by printing (showing) it, or by using str():
emptySim <- simInit()
emptySim # same as show(emptySim)
str(emptySim)NOTE: simLists are S4 objects, so we can use getSlots() and slotNames() to examine the object.
See also ?'.simList-class'
## Setting:
## options(
## reproducible.cachePath = '/private/var/folders/l2/hy6b0sl977bcd8695nt6j7s80000gn/T/RtmpDV4SR6/reproducible/cache'
## spades.inputPath = '/private/var/folders/l2/hy6b0sl977bcd8695nt6j7s80000gn/T/RtmpcfSl1B/SpaDES/inputs'
## spades.outputPath = '/private/var/folders/l2/hy6b0sl977bcd8695nt6j7s80000gn/T/RtmpcfSl1B/SpaDES/outputs'
## spades.modulePath = '/private/var/folders/l2/hy6b0sl977bcd8695nt6j7s80000gn/T/RtmpcfSl1B/SpaDES/modules'
## )
| slot | accessor |
|---|---|
| modules | modules() |
| params | params() |
| events | events() |
| current | current() |
| completed | completed() |
| depends | depends() |
| simtimes | times() |
| inputs | inputs() |
| outputs | outputs() |
| paths | paths() |
| .envir | envir() |
| .xData | objects() |
| other_accessors |
|---|
| packages() |
| globals() |
| start() |
| end() |
| timeunit() |
| timeunits() |
| paths() |
| cachePath() |
| inputPath() |
| outputPath() |
| modulePath() |
Simple examples (using demo modules) of simInit() and spades() calls.
simList structure before and after the spades() callsimList object?'.simList-class'.str(emptySim)
slotNames(emptySim)
getSlots('simList')
?'.simList-class'This code is based on the SpaDES package demo.
set.seed(42)
filelist <- data.frame(
files = dir(system.file("maps", package = "SpaDES"),
full.names = TRUE, pattern = "tif"),
functions = "rasterToMemory",
packages = "SpaDES",
stringsAsFactors = FALSE
)
# create the simList object 'mySim'
mySim <- simInit(
times = list(start = 0.0, end = 100.00),
params = list(
.progress = list(type = NA, interval = NA),
.globals = list(burnStats = "nPixelsBurned"),
randomLandscapes = list(
nx = 1e2, ny = 1e2, .saveObjects = "landscape",
.plotInitialTime = NA, .plotInterval = NA, inRAM = TRUE
),
caribouMovement = list(
N = 1e2, .saveObjects = c("caribou"),
.plotInitialTime = 1, .plotInterval = 1, moveInterval = 1
),
fireSpread = list(
nFires = 1e1, spreadprob = 0.235, persistprob = 0, its = 1e6,
returnInterval = 10, startTime = 0,
.plotInitialTime = 0, .plotInterval = 10
)
),
modules = list("randomLandscapes", "fireSpread", "caribouMovement"),
inputs = filelist,
paths = list(modulePath = system.file("sampleModules", package = "SpaDES"))
)
mySim$landscape <- stack(mySim$DEM, mySim$forestAge, mySim$habitatQuality, mySim$percentPine)simList objectUse the simList accessor functions to determine the following:
# list modules used in the simulation
modules(mySim)
# list module dependencies and packages used
depends(mySim)
packages(mySim)
# list global and module-specific param values
globals(mySim)
params(mySim)
P(mySim) ## bonus: how do params() and P() differ?
# list start and end times
times(mySim)
start(mySim)
end(mySim)
# get the simulation and module timeunits
timeunit(mySim)
timeunits(mySim)
# get the scheduled and completed event queues
events(mySim)
completed(mySim)
# list the objects (functions, data, etc.) stored in the simList
objects(mySim)
# list the file paths used in the simulation
paths(mySim)
inputPath(mySim)
outputPath(mySim)