Skip to content
Eliot McIntire edited this page Sep 5, 2026 · 5 revisions

Known SpaDES modules

A subject-by-subject list of SpaDES modules that are publicly available on GitHub. Each entry links to the module's own repository, and names the people who wrote it.

New to SpaDES? Start with the book, Robust and nimble scientific workflows, using SpaDES, and with SpaDES.project.

Generated 2026-09-04. Something missing or wrong? Edit this page, or open an issue.

How to get a module

You do not download modules by hand. Give setupProject() the GitHub locations and it fetches them, plus the R packages they need:

repos <- c("https://predictiveecology.r-universe.dev", getOption("repos"))
options(repos = repos)
if (!require("pak")) install.packages("pak")
pak::pak("SpaDES.project", ask = FALSE)

out <- SpaDES.project::setupProject(
  paths = list(projectPath = "~/myProject"),
  modules = c(
    "PredictiveEcology/Biomass_speciesData@main",
    "PredictiveEcology/Biomass_borealDataPrep@main",
    "PredictiveEcology/Biomass_core@main"
  ),
  times = list(start = 2011, end = 2031)
)

simOut <- SpaDES.core::simInitAndSpades2(out)

The part after @ is the branch name; you can leave it off. A few repositories hold several modules in folders, so you point at the folder:

modules = file.path("PredictiveEcology/scfm@development/modules",
                    c("scfmLandcoverInit", "scfmRegime", "scfmDriver",
                      "scfmIgnition", "scfmEscape", "scfmSpread"))

Status markers

meaning
🟢 active — changed in the last 12 months on its live branch
🔵 stable — no recent changes, but a project active in the last 18 months still uses it
⚪ quiet — no recent changes and no public project known to use it
🗄 repository is archived (read-only)
⚠ still uses the retired raster / sp packages, so may need work to run on a current stack
·N number of public projects that list this module

What each module does

After the status markers, each entry carries one or more type icons saying what kind of work the module does. A module usually does more than one.

type means
📥 Data fetches or prepares inputs — prepInputs(), a real sourceURL, a database or Drive read, or data/studyArea in the name
🎯 Parameterizing fits a statistical model itself. A model merely defined for another module to fit does not count
⏩ Prediction steps forward through time, but its output never comes back to it
🔁 Simulation steps forward and its output returns — directly, or round a loop through other modules
📋 Summary renders reports, or summarises many runs
🔌 Translator exists to let one module talk to another
📚 Library builds a reusable reference set — factorial designs, yield tables — for other runs to compare against
✅ Validation compares output against independent observations
🚧 In development no signal found in code, description or README

⏩ and 🔁 are the same question asked twice: both step forward through time, but only 🔁 gets its own output back. Fire changes vegetation, which changes fuels, which changes fire — so the fire modules form a loop. Birds do not change the forest, so bird models predict forward and stop.

These are worked out from the module's code — what it calls, what it declares as inputs and outputs, and whether those outputs come back to it through other modules. A type marked * was inferred from the module's README instead, and is less reliable.

Which accounts were scanned. Every public repository in these eight accounts was checked (a repository counts as a module if it has a <name>.R at its root):

account public repos modules found
PredictiveEcology 151 65
tati-micheletti 134 58
FOR-CAST 109 25
CeresBarros 87 30
achubaty 61 10
ianmseddy 54 11
eliotmcintire 43 2
cboisvenue 20 6
total 659 207

Forks were dropped where the upstream is itself in this list, which is why the list is shorter than 207. The CASTOR section came from searching bcgov for castor by name — the bcgov organisation as a whole was not scanned. Nor were the accounts under "Modules elsewhere". If your modules live somewhere else, say so and they will be added.

How these were worked out: activity is counted on each repository's live branch (development where it exists, otherwise the default branch) — many default branches here are years behind. Usage comes from scanning the driver scripts (global.R and similar) of 450 public project repositories for module names. ⚠ is set only where the code genuinely calls raster:: / sp:: or uses Raster* / Spatial* classes, not merely where reqdPkgs lists them.

⚪ means "no public user found", not "abandoned" — private and personal project repositories are invisible to this scan, so a module used only in those will look quiet.

  • Only public repositories are listed. Some groups also have private modules — write to the people named to ask about access.

Forest vegetation dynamics: LandR Biomass

A forest succession model, originally derived from LANDIS-II Biomass Succession. Biomass_core is the engine; the others prepare its inputs or summarise its output.

Eliot McIntire, Yong Luo, Ceres Barros, Alex Chubaty, Ian Eddy, Jean Marchal

  • Biomass_core 🟢 ·45 · 📥 🔁 — the succession engine
  • Biomass_borealDataPrep 🟢 ·47 · 📥 — parameterises the model for the Canadian boreal forest
  • Biomass_speciesData 🟢 ⚠ ·31 · 📥 — builds the tree species cover layers
  • Biomass_speciesParameters 🟢 ·29 · 📥 🎯 — fits species growth parameters (Ian Eddy, Eliot McIntire, Ceres Barros)
  • Biomass_speciesFactorial 🟢 ·14 · 📚 — factorial experiment over species traits (Eliot McIntire)
  • Biomass_regeneration 🟢 ·27 · 📥 🔁 — post-disturbance regeneration
  • Biomass_regenerationPM ⚪ ⚠ · 📥 🔁 — as above, with partial mortality (Ceres Barros)
  • Biomass_yieldTables 🟢 ·6 · 📚 — turns simulated growth into yield tables (Céline Boisvenue, Dominique Caron, Camille Giuliano, Eliot McIntire)
  • Biomass_validationKNN 🔵 ⚠ ·2 · 📥 ✅ — validation against kNN forest maps (Ceres Barros, Eliot McIntire)
  • Biomass_summary 🟢 ·7 · 📋 — summarises many runs, study areas and scenarios (Alex Chubaty, Tati Micheletti, Ian Eddy)

Growth, mortality and regeneration add-ons

  • LandR_reforestation 🔵 ⚠ ·3 · 🔁 (Ian Eddy)
  • gmcsDataPrep 🟢 ·9 · 📥 🎯 ✅ — climate-sensitive growth and mortality inputs from permanent sample plots (Ian Eddy)
  • PSP_Clean ⚪ ⚠ ·3 · 📥 — cleans permanent sample plot data (Ian Eddy)
  • assistedMigrationBC ⚪ ⚠ · 📥 ⏩ (Ian Eddy)
  • LandR_BiomassGMCC ⚪ ⚠ · 📥 🔁 — climate-sensitive growth and mortality (Yong Luo)
  • LandR_BiomassGMOrig ⚪ ⚠ ·2 · 📥 🔁 — the original growth and mortality module
  • LBMR2LCC_DataPrep ⚪ ⚠ · 📥 ⏩ — translates LBMR output to land cover classes (Jean Marchal)

Fire

fireSense

A climate-sensitive statistical fire model: ignition, escape and spread are each fitted to data, then predicted forward.

Eliot McIntire, Ian Eddy, Jean Marchal, Tati Micheletti, Alex Chubaty, Ceres Barros

Older members of the family, all by Jean Marchal and colleagues:

SCFM — Steve Cumming Fire Model

Ignition, escape and spread, calibrated from a fire regime.

PredictiveEcology/scfm 🟢 ⚠ ·19

Steve Cumming, Ian Eddy, Eliot McIntire, Alex Chubaty

This is one repository, not eleven modules. Everything below is a folder inside it, released and maintained together, so they all carry the repository's status shown above rather than a status of their own. Within it, raster/sp survive in scfmLandcoverInit, scfmDriver and the two andisonDriver modules.

Other fire modules

  • LandMine 🟢 ·3 · 🔁 — landscape fire simulator driven by fire return intervals (Eliot McIntire, Alex Chubaty)
  • FavierFireSpread 🟢 ⚠ · 📥 🔁 — percolation-based fire spread for LandR (Ceres Barros)
  • historicFires ⚪ · 📥 🔁 — raster layers of past fires (Alex Chubaty, Christopher Mallon, Ian Eddy)
  • canFireRegimeZones ⚪ ⚠ · 📥 — fire regime polygons after Erni et al. (2020) (Alex Chubaty)
  • burnSummaries 🟢 ·6 · 📥 🔁 — burn maps and time-since-fire from simulation output (Alex Chubaty)

Fuels and fire behaviour

  • Biomass_fuelsPFG ⚪ ⚠ · 📥 🔁 — fuels from plant functional groups (Ceres Barros, Eliot McIntire, Steve Cumming)
  • fireProperties ⚪ ⚠ · 📥 🔁 — fire behaviour using the Canadian FBP System (Ceres Barros)
  • Biomass_fuels ⚪ ⚠ · 📥 🔁 — LANDIS-II Dynamic Biomass Fuels (Ceres Barros)

Forest carbon

CBM — Carbon Budget Model

A SpaDES implementation of the Canadian Forest Service carbon budget model. Project repository: spadesCBM.

Céline Boisvenue, Camille Giuliano, Susan Murray, Alex Chubaty, Dominique Caron

Northeast BC (RIA) scenario variants, by Céline Boisvenue and Alex Chubaty:

Linking vegetation and carbon

  • LandRCBM_split3pools 🟢 ·2 · 📥 🔁 — splits LandR biomass into CBM carbon pools (Céline Boisvenue, Dominique Caron, Susan Murray, Camille Giuliano, Alex Chubaty). Collection repository: LandRCBM

BiomeBGC

A process-based ecosystem carbon and water model.

Dominique Caron, Céline Boisvenue, Alex Chubaty


Harvesting and forest management


CASTOR: BC government forest and land management

A decision-support model for forest management and caribou habitat in British Columbia, built by the BC Ministry of Forests. Unlike the SCFM set, each module is its own repository under bcgov, and they are run together from the parent project bcgov/castor 🟢.

Kyle Lochhead, Tyler Muhly, Elizabeth Kleynhans

Modules read 🔵 because the parent project is active (last change 2026-07-13) while the individual module repositories mostly are not. ·N counts are not shown here: the usage scan behind them covers the PredictiveEcology orbit, not bcgov, so a count would not be comparable with the rest of this page. Every CASTOR module still uses the retired raster/sp stack.

  • dataCastor 🔵 ⚠ · 📥 — builds and connects castordb, the SQLite database of forest state and zone constraints that the other modules read and update
  • growingStockCastor 🔵 ⚠ · 📥 ⏩ — interpolates yield curves to update volume and ages the forest each time step
  • forestryCastor 🔵 ⚠ · 📥 ⏩ — harvest scheduling; explores the decision space for forestry and caribou impacts
  • blockingCastor 🔵 ⚠ · 📥 ⏩ — aggregates pixels into homogeneous cutblocks, by graph segmentation and agglomerative clustering
  • roadCastor 🔵 ⚠ · 📥 ⏩ — simulates strategic road networks as a single target access problem, after Anderson and Nelson (2004)
  • disturbanceCastor 🔵 ⚠ · 📥 ⏩ — cumulative disturbance by zone, designed for forestry and caribou habitat
  • survivalCastor 🔵 ⚠ · 📥 — adult female caribou survival in herd ranges, after Wittmer et al. (2007) — note the repository is caribouSurvivalCastor
  • fireCastor 🟢 ⚠ · 📥 🎯 ⏩ — wildfire simulation (Elizabeth Kleynhans)
  • climateCastor 🔵 ⚠ · 📥 — retrieves climate data via climR for any area in the province
  • backCastor 🔵 ⚠ · 📥 ⏩ — reconstructs the locations of cutblocks harvested in BC over roughly the past 50 years
  • volumebyareaReportCastor 🔵 ⚠ · 📥 ⏩ 📋 — reports harvested volume by area of interest through time — note the repository is volumeReportCastor
  • uploadCastor 🔵 ⚠ · 📥 — uploads model outputs to a database

Insects and forest health

Mountain pine beetle

The Red Top model: short-run potential for beetle establishment, eruption and spread.

Alex Chubaty, Barry Cooke, Eliot McIntire · project repository: LandR_MPB

Spruce budworm

Alex Chubaty · project repository: SBW_EasternBoreal


Caribou

Habitat and population

Tati Micheletti, Frances Stewart, Eliot McIntire

  • caribouRSF ⚪ ⚠ · 📥 🔁 — resource selection function
  • caribouRSF_NT ⚪ ⚠ ·2 · 📥 ⏩ — DeMars et al. (2019) RSF for the Northwest Territories (Tati Micheletti)
  • caribouIK ⚪ ⚠ · 📥 ⏩ — habitat suitability from Indigenous Knowledge
  • caribouCIP ⚪ ⚠ · ⏩ — co-informed predictions, combining RSF and Indigenous Knowledge
  • caribouPopGrowthModel ⚪ ⚠ ·4 · 📥 🔁 — boreal caribou population growth
  • caribouPopGrowth_disturbance ⚪ ⚠ · 📥 🔁 🔌 — links disturbance layers to the growth model (Tati Micheletti)
  • HSI_Caribou_MB 🟢 ⚠ · 🚧 — Manitoba habitat suitability from NRV simulations (Alex Chubaty)
  • caribouNT_studyArea ⚪ ⚠ · 📥 (Ian Eddy, Alex Chubaty, Eliot McIntire, Tati Micheletti)

Movement and telemetry

Julie Turner, Rory McInnes, Tati Micheletti, Eliot McIntire

  • caribouLocPrep 🟢 ·2 · 📥 — cleans and harmonises location data across jurisdictions
  • prepTracks 🟢 ⚠ ·2 · 📥 🎯 — builds tracks from GPS locations
  • prepLandscape 🟢 ·2 · 📥 (Julie Turner)
  • extractLand 🟢 ·2 · 🚧 — extracts landscape values at points
  • caribouiSSA 🟢 · 🎯 — integrated step selection analysis
  • caribou_SSUD 🟢 ·2 · 📥 🎯 ⏩ — steady-state utilization distribution (Julie Turner)
  • caribouNN 🟢 · 🎯 — movement model fitted with neural networks (Tati Micheletti)
  • caribouNN_Global 🟢 · 🎯 (Tati Micheletti)
  • movementDataPrep 🟢 · 📥 🎯 — pulls movement data from Movebank (Tati Micheletti)

Birds

Tati Micheletti, Diana Stralberg, Alex Chubaty, Isolde Lane-Shaw, Sourav Das

  • birdsNWT ⚪ ⚠ ·2 · 📥 🎯 ⏩ — boreal songbird density models
  • birds_BRT ⚪ ⚠ · 📥 🎯 ⏩ — boosted regression tree bird models for NWT and western boreal
  • birdsNN_Global 🟢 · 🎯 — neural network bird models (Tati Micheletti)
  • bird_modelLoad 🟢 · 📥 (Sourav Das)
  • bird_modelPredict 🟢 · 🚧 (Sourav Das)
  • bird_covariateTranslator 🟢 · 🔌 ✅ — turns LandR vegetation output into SCANFI-style covariates for bird models (Sourav Das)
  • LandbirdNRV_Prepinput 🟢 · 📥 (Sourav Das)
  • fitBirdBiomassModel ⚪ ⚠ · 📥 🎯 — songbird response to harvesting, from eBird and kNN biomass (Tati Micheletti)
  • waterfowl ⚪ ⚠ · 📥 — ensemble waterfowl forecasts (Tati Micheletti)
  • posthocBirdsNWT ⚪ ⚠ · 📥 🎯 (Tati Micheletti)
  • bootRasterCombine ⚪ ⚠ · 📥 — averages and mosaics bootstrapped BAM density maps (Alex Chubaty, Isolde Lane-Shaw)
  • postHocBinning ⚪ ⚠ · 📥 — bird density by cover and age class (Alex Chubaty, Isolde Lane-Shaw)
  • mapBins ⚪ ⚠ · 🚧 (Isolde Lane-Shaw)

Other wildlife and biodiversity

  • wolfAlps ⚪ ⚠ · 🔌 — wolf demography and dispersal in the Italian Alps (Sarah Bauduin, Eliot McIntire)
  • priorityPlaces ⚪ ⚠ · 🔁 — conservation prioritisation (Tati Micheletti, Alex Chubaty)
  • priorityPlaces_DataPrep ⚪ ⚠ · 📥 🔁 (Tati Micheletti, Alex Chubaty)
  • comm_metricsNWT ⚪ ⚠ · 📥 — community metrics (Ana Raymundo, Steve Cumming)

Human disturbance and land use

Tati Micheletti, Alex Chubaty

Project example: anthropogenicDisturbance_Demo


Climate and weather data

  • canClimateData 🟢 ·17 · 📥 — historic and projected Canadian climate, ready for LandR and fireSense (Ian Eddy, Alex Chubaty, Eliot McIntire)
  • climateYear 🟢 ·3 · ⏩ — picks the climate year to use in a run (Ian Eddy)
  • fireWeather 🟢 ⚠ · 📥 (Ceres Barros)
  • canWind ⚪ ⚠ · 📥 ⏩ (Alex Chubaty, Eliot McIntire)

Study areas and project setup

Small modules that define where a simulation runs and assemble its starting data.


Summaries, validation and reporting

Simulation monitoring

Tati Micheletti, Lisa Hildebrand


Teaching examples

Small modules written to show how SpaDES works. Good places to start reading code.

Tati Micheletti

Also worth a look: SpaDES4Dummies (Ceres Barros), the demonstration modules in this repository's modules/ folder (gameOfLife, LCC2005, and others), and the worked examples in the book.


Retired

Superseded by the modules named beside them. Note the ·N counts: several are archived yet still called by live projects, so they cannot simply be deleted — the callers have to migrate first.


Modules elsewhere

Modules maintained outside the accounts surveyed here:

  • ws3 and spades_ws3 — wood supply simulation (Greg Paradis)
  • timeSinceFire 🗄 🔵 ·4 · 📥 🔁, LandWeb_preamble, LandWeb_output — fRI Research
  • TriSect — spruce budworm modules (Louis-Etienne Robert, Barry Cooke); the repositories listed on earlier versions of this page are no longer public