Forest + fire + wildlife, woven together with setupProject
2026-06-12
As the forest grows and burns over the coming decades, how does wildlife habitat change?
RSFpredict takes a previously fitted RSF and re-evaluates it against the simulated landscape – every yearBiomass_*scfm familyRSFpredict. . .
setupProject weaves them into one workflowmodules = c(
# forest
"PredictiveEcology/Biomass_borealDataPrep@development",
"PredictiveEcology/Biomass_core@development",
"PredictiveEcology/Biomass_regeneration@master",
# fire (several modules in one repo)
file.path("PredictiveEcology/scfm@development/modules",
c("scfmDataPrep", "scfmIgnition", "scfmEscape",
"scfmSpread", "scfmDiagnostics")),
# wildlife
"JWTurn/RSFpredict@main"
).rdssimulationProcess = "dynamic" → re-predict against the changing landscape each stepstudyArea – a fixed polygon we report onstudyAreaLarge – buffered, to avoid edge effectsrasterToMatch* templates, derived from one anotherstudyArea = prepInputs(url = saURL, fun = "terra::vect"),
studyAreaLarge = terra::buffer(studyArea, 10000),
rasterToMatchLarge = {
rtml <- terra::disagg(modelLand[[1]], fact = 2)
rtml[] <- 1
terra::mask(rtml, studyAreaLarge)
},
rasterToMatch = postProcess(rasterToMatchLarge,
cropTo = studyArea, maskTo = studyArea)*DataPrep / fitting steps opt into a shared Google Drive cachestudyArea is fixed:
Cache key → same result.plots = "png" + saved maps → a folder of time-stamped outputsSpaDES.shiny::shine() scans it and builds a Shiny + leaflet viewerlast - first and custom-difference tabssetupProject() call composes three model families from different authors