## ----setup, include=FALSE-----------------------------------------------------
SuggestedPkgsNeeded <- c("DiagrammeR", "NLMR", "SpaDES.tools", "knitr", "CircStats")
hasSuggests <- all(sapply(SuggestedPkgsNeeded, require, character.only = TRUE, quietly = TRUE))
useSuggests <- !(tolower(Sys.getenv("_R_CHECK_DEPENDS_ONLY_")) == "true")
knitr::opts_chunk$set(eval = hasSuggests && useSuggests)
options("spades.moduleCodeChecks" = FALSE,
"spades.useRequire" = FALSE)
## ----module-metadata, echo=FALSE, results="asis"------------------------------
# cat(c(
# "```",
# "## sample module metadata for the default `caribouMovement` module",
# readLines(system.file("sampleModules", "caribouMovement", "caribouMovement.R", package = "SpaDES.core"))[10:45],
# "```"
# ), sep = "\n")
## ----passing-params, echo=TRUE------------------------------------------------
# library(SpaDES.core)
#
# outputDir <- file.path(tempdir(), "simOutputs")
# times <- list(start = 0.0, end = 5.0)
# parameters <- list(
# .globals = list(stackName = "landscape", burnStats = "nPixelsBurned"),
# .progress = list(NA),
# randomLandscapes = list(nx = 100L, ny = 100L, inRAM = TRUE),
# fireSpread = list(
# nFires = 10L, spreadprob = 0.225, its = 1e6, persistprob = 0,
# returnInterval = 10, startTime = 0,
# .plotInitialTime = 0, .plotInterval = 10
# ),
# caribouMovement = list(
# N = 100L, moveInterval = 1, torus = TRUE,
# .plotInitialTime = 1, .plotInterval = 1
# )
# )
# modules <- list("randomLandscapes", "fireSpread", "caribouMovement")
# objects <- list()
# paths <- list(modulePath = getSampleModules(tempdir()),
# outputPath = outputDir)
#
# mySim <- simInit(times = times, params = parameters, modules = modules,
# objects = objects, paths = paths)
## ----accessing-params, eval=FALSE, echo=TRUE----------------------------------
# ## Access parameters
# P(mySim) # shows all parameters
# P(mySim, module = "caribouMovement") # only parameters in caribouMovement module
# P(mySim)$caribouMovement # same
# P(mySim)$caribouMovement$N # Only one parameter
#
# ## If used within the module source code, then module name can be omitted:
# ## This will return NULL here, but will return the actual value if used
# ## in a module
# P(mySim)$N # Only one parameter if used within a module
## ----event-types, echo=FALSE, results="asis"----------------------------------
# cat(c(
# "```",
# "## sample event type definitions for the default `caribouMovement` module",
# readLines(system.file("sampleModules", "caribouMovement", "caribouMovement.R", package = "SpaDES.core"))[61:116],
# "```"
# ), sep = "\n")
## ----event-functions, echo=FALSE, results="asis"------------------------------
# cat(c(
# "```",
# "## sample Init event function from the default `caribouMovement` module",
# readLines(system.file("sampleModules", "caribouMovement", "caribouMovement.R", package = "SpaDES.core"))[121:143],
# "```"
# ), sep = "\n")
## ----sim-eventDiagram, eval=hasSuggests, echo=FALSE, message=FALSE, warning=FALSE----
# library(SpaDES.core)
#
# parameters <- list(
# .globals = list(stackName = "landscape", burnStats = "nPixelsBurned"),
# .progress = list(NA),
# randomLandscapes = list(nx = 100L, ny = 100L, inRAM = TRUE),
# fireSpread = list(nFires = 10L, spreadprob = 0.225, its = 1e6,
# persistprob = 0, returnInterval = 1, startTime = 0,
# .plotInitialTime = 0, .plotInterval = 10),
# caribouMovement = list(N = 100L, moveInterval = 1, torus = TRUE,
# .plotInitialTime = 1, .plotInterval = 1)
# )
#
# ftmp <- tempfile("spades_vignetteOutputs", fileext = ".pdf")
# pdf(ftmp)
# clearPlot()
#
# # run just 1 year for vignette
# mySim <- simInitAndSpades(
# times = list(start = 0.0, end = 1.0, timeunit = "year"),
# params = parameters,
# modules = list("randomLandscapes", "fireSpread", "caribouMovement"),
# objects = list(),
# paths = list(modulePath = getSampleModules(tempdir()))
# )
# dev.off()
# unlink(normalizePath(ftmp))
## ----eventDiagram, echo=FALSE, eval=hasSuggests, fig.height=10, fig.width=7----
# # overview of the events in the simulation
# # Needs DiagrammeR package
# eventDiagram(mySim, "0000-06-01", n = 200, width = 720)
## ----checksums, eval=FALSE----------------------------------------------------
# ## 1. specify your module here
# moduleName <- "my_module"
#
# ## 2. use a temp dir to ensure all modules get fresh copies of the data
# tmpdir <- file.path(tempdir(), "SpaDES_modules")
#
# ## 3. download your module's data to the temp dir
# downloadData(moduleName, tmpdir)
#
# ## 4. initialize a dummy simulation to ensure any 'data prep' steps in the .inputObjects section are run
# simInit(modules = moduleName)
#
# ## 5. recalculate your checksums and overwrite the file
# checksums(moduleName, tmpdir, write = TRUE)
#
# ## 6. copy the new checksums file to your working module directory (the one not in the temp dir)
# file.copy(from = file.path(tmpdir, moduleName, 'data', 'CHECKSUMS.txt'),
# to = file.path('path/to/my/moduleDir', moduleName, 'data', 'CHECKSUMS.txt'),
# overwrite = TRUE)
## ----module-object-diagrams, echo=TRUE, message=FALSE, fig.width=7------------
# ## NOTE: Suggested packages SpaDES.tools and NLMR packages must be installed
# #install.packages("SpaDES.taols")
# #install.packages("NLMR", repos = "https://predictiveecology.r-universe.dev/")
#
# library(SpaDES.core)
#
# times <- list(start = 0.0, end = 1.0)
# parameters <- list(
# .globals = list(stackName = "landscape", burnStats = "nPixelsBurned")
# )
# modules <- list("SpaDES_sampleModules")
# paths <- list(modulePath = getSampleModules(tempdir()))
#
# mySim <- simInit(times = times, params = parameters, modules = modules, paths = paths)
#
# ## examine simulation module (object) dependencies
# depsEdgeList(mySim, FALSE) # all object dependency relationships
# clearPlot()
# moduleDiagram(mySim) # simplified visual representation of modules
#
# clearPlot()
# moduleDiagram(mySim, showParents = TRUE) # similar, but showing parent module grouping
#
# # detailed visual representation of objects
# objectDiagram(mySim, width = 720)
## ----checkpoints, echo=TRUE, message=FALSE------------------------------------
# # initialize a new simulation, setting the checkpoint interval and filename.
# times <- list(start = 0, end = 5)
# parameters <- list(
# .globals = list(stackName = "landscape"),
# .checkpoint = list(interval = 2, file = "chkpnt.RData")
# )
# modules <- list("randomLandscapes", "caribouMovement")
# paths <- list(
# modulePath = getSampleModules(tempdir())
# )
#
# mySim <- simInit(times = times, params = parameters, modules = modules, paths = paths)
#
# # retrieve the checkpoint params from the simulation object
# checkpointFile(mySim)
# checkpointInterval(mySim)
## ----progress, echo=TRUE, message=FALSE---------------------------------------
# # initialize a new simulation, setting the progress parameters
# mySim <- simInit(times = list(start = 0.0, end = 10.0),
# params = list(.globals = list(stackName = "landscape"),
# .progress = list(type = "text", interval = 1)),
# modules = list("randomLandscapes"),
# paths = list(modulePath = getSampleModules(tempdir())))
#
# # retrieve the checkpoint params from the simulation object
# progressType(mySim)
# progressInterval(mySim)
## ----load-save, echo=TRUE, message=FALSE--------------------------------------
# # initialize a new simulation, setting the load and save parameters
# outputDir <- file.path(tempdir(), "simOutputs")
# mySim <- simInit(times = list(start = 0, end = 5),
# params = list(
# .globals = list(stackName = "landscape"),
# randomLandscapes = list(
# .saveInitialTime = 0, .saveInterval = 2,
# .saveObjects = c("landscape"),
# .savePath = file.path(outputDir, "randomLandscapes"))
# ),
# modules = list("randomLandscapes"),
# paths = list(modulePath = getSampleModules(tempdir()),
# outputPath = outputDir),
# outputs = data.frame(objectName = "landscape")
# )
#
# # retrieve the load and save params from the simulation object
# inputs(mySim) # shows all files and objects that are "inputs"
# outputs(mySim) # shows all files and objects that are "outputs"
#
# params(mySim)$randomLandscapes$.saveInitialTime
# params(mySim)$randomLandscapes$.saveInterval
# params(mySim)$randomLandscapes$.saveObjects
# params(mySim)$randomLandscapes$.savePath
# ftmp <- tempfile(pattern = "spades_vignetteOutputs", fileext = ".pdf")
# pdf(ftmp)
# clearPlot()
# mySim2 <- spades(mySim)
#
# # More sophisticated, passing arguments to outputs()
# outputs(mySim) <- data.frame(
# objectName = "landscape", fun = "writeRaster", package = "terra",
# saveTime = c(3,6), arguments = I(lapply(c(3,6), function(x) {
# list(datatype = "FLT4S", filetype = "GTiff", overwrite = TRUE)
# })))
# mySim2 <- spades(mySim)
# dev.off()
# unlink(normalizePath(ftmp))
## ----save-events, echo=TRUE, eval=FALSE, message=FALSE------------------------
# ### WITHIN A MODULE:
#
# # schedule a recurring save event
# nextSave <- time(mySim) + params(mySim)$randomLandscapes$.saveInterval
# sim <- scheduleEvent(mySim, nextSave, "randomLandscapes", "save")
## ----plotting, echo=TRUE, eval=FALSE, message=FALSE---------------------------
# # initialize a new simulation, setting the load and save parameters
# mySim <- simInit(times = list(start = 0, end = 5),
# params = list(
# .globals = list(stackName = "landscape"),
# randomLandscapes = list(.plotInitialTime = 0, .plotInterval = 1)
# ),
# modules = list("randomLandscapes"),
# paths = list(modulePath = getSampleModules(tempdir()))
# )
#
# # retrieve the plotting params from the simulation object
# params(mySim)$randomLandscapes$.plotInitialTime
# params(mySim)$randomLandscapes$.plotInterval
## ----plot-events, echo=TRUE, eval=FALSE, message=FALSE------------------------
# ### WITHIN A MODULE:
#
# # schedule a recurring plot event
# nextPlot <- time(mySim) + params(mySim)$randomLandscapes$.plotInterval
# mySim <- scheduleEvent(mySim, nextPlot, "randomLandscapes", "save")
## ----caribouMovement, echo=TRUE, eval=FALSE-----------------------------------
# openModules(getSampleModules(tempdir()), "moduleName")
## ----download-module, echo=TRUE, eval=FALSE-----------------------------------
# downloadModule("moduleName")
## ----create-new-module, eval=FALSE, echo=TRUE, message=FALSE------------------
# # create a new module called "randomLandscape" in the "custom-modules" subdirectory
# # and open the resulting file immediately for editing.
# newModule(name = "randomLandscapes", path = "custom-modules", open = TRUE)
## ----module-group-init, eval=FALSE--------------------------------------------
# library(DiagrammeR)
# library(SpaDES.core)
#
# outputDir <- file.path(tempdir(), "simOutputs")
# times <- list(start = 0.0, end = 20.0)
# parameters <- list(
# .globals = list(stackName = "landscape", burnStats = "nPixelsBurned"),
# .progress = list(NA),
# randomLandscapes = list(nx = 100L, ny = 100L, inRAM = TRUE),
# fireSpread = list(
# nFires = 10L, spreadprob = 0.225, its = 1e6, persistprob = 0,
# returnInterval = 10, startTime = 0,
# .plotInitialTime = 0, .plotInterval = 10
# ),
# caribouMovement = list(
# N = 100L, moveInterval = 1, torus = TRUE,
# .plotInitialTime = 1, .plotInterval = 1
# )
# )
# modules <- list("SpaDES_sampleModules")
# objects <- list()
# paths <- list(
# modulePath = getSampleModules(tempdir()),
# outputPath = outputDir
# )
#
# mySim <- simInit(times = times, params = parameters, modules = modules,
# objects = objects, paths = paths)
#
# modules(mySim) # note the child modules are initialized
## ----module-group-dl, eval=FALSE----------------------------------------------
# downloadModule("SpaDES_sampleModules")
## ----cleanup, echo=FALSE------------------------------------------------------
# unlink(outputDir, recursive = TRUE)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.