Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
677 changes: 674 additions & 3 deletions LICENSE

Large diffs are not rendered by default.

9 changes: 9 additions & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,12 @@
# fireSense 1.1.0

This is the first release of fireSense as one family. `fireSense@main` loads the released version of every fireSense module, and `fireSense@development` their development versions, so a project no longer mixes released and in-progress modules by accident. To load exactly this set of releases, and nothing newer, use `PredictiveEcology/fireSense@v1.1.0`. This module's version list says which release of each module belongs to it (ELFs 1.2.0, dataPrepFit 1.3.0, ignitionFit 1.2.0, spreadFit 1.2.0, dataPrepPredict 1.1.0, ignitionPredict 1.2.0, spreadPredict 1.2.0, burn 2.2.0), and SpaDES.project 1.2.0.9013 or later fetches each module at that release.

The summary module is the exception for now: it still comes from its `modsForFireSense` branch. The parent module is licensed under GPL-3.

- License: GPL-3.
- Children are listed by name, so they follow the parent's account and branch (`fireSense@development` -> each child's `development`, `fireSense@main` -> each child's `main`); `fireSense_summary` stays on `modsForFireSense`.

# fireSense 1.0.0

- New parent module. Listing `PredictiveEcology/fireSense@development` in `setupProject(modules = )` fetches and runs the nine FireSense child modules.
Expand Down
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

fireSense is a parent SpaDES module: it has no events, parameters, inputs or outputs of its own. It lists the nine modules of the FireSense family of fire models as `childModules`, so that listing it in `setupProject(modules = )` fetches and runs all of them. See `fireSense.Rmd` for an overview of what each child does.

Children are listed by name, so each comes from the parent's GitHub account and branch: `PredictiveEcology/fireSense@development` fetches every child's `development` branch, and `PredictiveEcology/fireSense@main` every child's `main`. At a release tag, `PredictiveEcology/fireSense@v1.1.0`, each child comes at the version this module's `version` list gives it (`fireSense_burn = "2.2.0"` gives `fireSense_burn@v2.2.0`); this needs SpaDES.project >= 1.2.0.9013. A child written with a branch (`fireSense_summary@modsForFireSense`) or an account keeps it. A module the user lists in `setupProject(modules = )` overrides the parent's entry for it, e.g. `c("PredictiveEcology/fireSense@development", "PredictiveEcology/fireSense_burn@testing")`.

## Use

```r
Expand Down
38 changes: 19 additions & 19 deletions fireSense.R
Original file line number Diff line number Diff line change
Expand Up @@ -13,27 +13,27 @@ defineModule(sim, list(
person(c("Alex", "M."), "Chubaty", email = "achubaty@for-cast.ca", role = "ctb")
),
childModules = c(
"PredictiveEcology/fireSense_ELFs@development",
"PredictiveEcology/fireSense_dataPrepFit@development",
"PredictiveEcology/fireSense_ignitionFit@development",
"PredictiveEcology/fireSense_spreadFit@development",
"PredictiveEcology/fireSense_dataPrepPredict@development",
"PredictiveEcology/fireSense_ignitionPredict@development",
"PredictiveEcology/fireSense_spreadPredict@development",
"PredictiveEcology/fireSense_burn@development",
"PredictiveEcology/fireSense_summary@modsForFireSense"
"fireSense_ELFs",
"fireSense_dataPrepFit",
"fireSense_ignitionFit",
"fireSense_spreadFit",
"fireSense_dataPrepPredict",
"fireSense_ignitionPredict",
"fireSense_spreadPredict",
"fireSense_burn",
"fireSense_summary@modsForFireSense"
),
version = list(
fireSense = "1.0.0",
fireSense_ELFs = "1.1.7",
fireSense_dataPrepFit = "1.2.0.9020",
fireSense_ignitionFit = "1.1.0",
fireSense_spreadFit = "1.1.0",
fireSense_dataPrepPredict = "1.0.4.9009",
fireSense_ignitionPredict = "1.1.0",
fireSense_spreadPredict = "1.1.1",
fireSense_burn = "2.1.0",
fireSense_summary = "1.0.1.9002"
fireSense = "1.1.0",
fireSense_ELFs = "1.2.0",
fireSense_dataPrepFit = "1.3.0",
fireSense_ignitionFit = "1.2.0",
fireSense_spreadFit = "1.2.0",
fireSense_dataPrepPredict = "1.1.0",
fireSense_ignitionPredict = "1.2.0",
fireSense_spreadPredict = "1.2.0",
fireSense_burn = "2.2.0",
fireSense_summary = "1.0.5"
),
timeframe = as.POSIXlt(c(NA, NA)),
timeunit = "year",
Expand Down
2 changes: 2 additions & 0 deletions fireSense.Rmd
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,8 @@ knitr::kable(data.frame(child = md$childModules, row.names = NULL))

### Migrating from the individual modules

Children are listed by name, so each comes from the parent's GitHub account and branch: `PredictiveEcology/fireSense@development` fetches every child's `development` branch, and `PredictiveEcology/fireSense@main` every child's `main`. A child written with a branch (`fireSense_summary@modsForFireSense`) or an account keeps it. A module the user lists in `setupProject(modules = )` overrides the parent's entry for it, e.g. `c("PredictiveEcology/fireSense@development", "PredictiveEcology/fireSense_burn@testing")`.

To migrate: list `PredictiveEcology/fireSense@development` in `setupProject(modules = ...)` instead of the individual fireSense modules, and rename these `params` keys (and `whichModulesToPrepare` values). `fireSense` now means the whole family; the burn module is `fireSense_burn`.

| old module name | new module name |
Expand Down
23 changes: 12 additions & 11 deletions fireSense.html
Original file line number Diff line number Diff line change
Expand Up @@ -2748,8 +2748,8 @@


<h1 class="title toc-ignore">fireSense Manual</h1>
<h3 class="subtitle">v.1.0.0</h3>
<h4 class="date">Last updated: 2026-09-29</h4>
<h3 class="subtitle">v.1.1.0</h3>
<h4 class="date">Last updated: 2026-10-08</h4>

</div>

Expand Down Expand Up @@ -2793,37 +2793,38 @@ <h3>Child modules</h3>
</thead>
<tbody>
<tr class="odd">
<td align="left"><a href="mailto:PredictiveEcology/fireSense_ELFs@development" class="email">PredictiveEcology/fireSense_ELFs@development</a></td>
<td align="left">fireSense_ELFs</td>
</tr>
<tr class="even">
<td align="left"><a href="mailto:PredictiveEcology/fireSense_dataPrepFit@development" class="email">PredictiveEcology/fireSense_dataPrepFit@development</a></td>
<td align="left">fireSense_dataPrepFit</td>
</tr>
<tr class="odd">
<td align="left"><a href="mailto:PredictiveEcology/fireSense_ignitionFit@development" class="email">PredictiveEcology/fireSense_ignitionFit@development</a></td>
<td align="left">fireSense_ignitionFit</td>
</tr>
<tr class="even">
<td align="left"><a href="mailto:PredictiveEcology/fireSense_spreadFit@development" class="email">PredictiveEcology/fireSense_spreadFit@development</a></td>
<td align="left">fireSense_spreadFit</td>
</tr>
<tr class="odd">
<td align="left"><a href="mailto:PredictiveEcology/fireSense_dataPrepPredict@development" class="email">PredictiveEcology/fireSense_dataPrepPredict@development</a></td>
<td align="left">fireSense_dataPrepPredict</td>
</tr>
<tr class="even">
<td align="left"><a href="mailto:PredictiveEcology/fireSense_ignitionPredict@development" class="email">PredictiveEcology/fireSense_ignitionPredict@development</a></td>
<td align="left">fireSense_ignitionPredict</td>
</tr>
<tr class="odd">
<td align="left"><a href="mailto:PredictiveEcology/fireSense_spreadPredict@development" class="email">PredictiveEcology/fireSense_spreadPredict@development</a></td>
<td align="left">fireSense_spreadPredict</td>
</tr>
<tr class="even">
<td align="left"><a href="mailto:PredictiveEcology/fireSense_burn@development" class="email">PredictiveEcology/fireSense_burn@development</a></td>
<td align="left">fireSense_burn</td>
</tr>
<tr class="odd">
<td align="left"><a href="mailto:PredictiveEcology/fireSense_summary@modsForFireSense" class="email">PredictiveEcology/fireSense_summary@modsForFireSense</a></td>
<td align="left"><a href="mailto:fireSense_summary@modsForFireSense" class="email">fireSense_summary@modsForFireSense</a></td>
</tr>
</tbody>
</table>
</div>
<div id="migrating-from-the-individual-modules" class="section level3">
<h3>Migrating from the individual modules</h3>
<p>Children are listed by name, so each comes from the parent’s GitHub account and branch: <code>PredictiveEcology/fireSense@development</code> fetches every child’s <code>development</code> branch, and <code>PredictiveEcology/fireSense@main</code> every child’s <code>main</code>. A child written with a branch (<code>fireSense_summary@modsForFireSense</code>) or an account keeps it. A module the user lists in <code>setupProject(modules = )</code> overrides the parent’s entry for it, e.g. <code>c(&quot;PredictiveEcology/fireSense@development&quot;, &quot;PredictiveEcology/fireSense_burn@testing&quot;)</code>.</p>
<p>To migrate: list <code>PredictiveEcology/fireSense@development</code> in <code>setupProject(modules = ...)</code> instead of the individual fireSense modules, and rename these <code>params</code> keys (and <code>whichModulesToPrepare</code> values). <code>fireSense</code> now means the whole family; the burn module is <code>fireSense_burn</code>.</p>
<table>
<colgroup>
Expand Down
28 changes: 15 additions & 13 deletions fireSense.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
title: "fireSense Manual"
subtitle: "v.1.0.0"
date: "Last updated: 2026-09-29"
subtitle: "v.1.1.0"
date: "Last updated: 2026-10-08"
output:
bookdown::html_document2:
toc: true
Expand Down Expand Up @@ -54,20 +54,22 @@ SpaDES.project::setupProject(
### Child modules


|child |
|:-------------------------------------------------------|
|PredictiveEcology/fireSense_ELFs@development |
|PredictiveEcology/fireSense_dataPrepFit@development |
|PredictiveEcology/fireSense_ignitionFit@development |
|PredictiveEcology/fireSense_spreadFit@development |
|PredictiveEcology/fireSense_dataPrepPredict@development |
|PredictiveEcology/fireSense_ignitionPredict@development |
|PredictiveEcology/fireSense_spreadPredict@development |
|PredictiveEcology/fireSense_burn@development |
|PredictiveEcology/fireSense_summary@modsForFireSense |
|child |
|:----------------------------------|
|fireSense_ELFs |
|fireSense_dataPrepFit |
|fireSense_ignitionFit |
|fireSense_spreadFit |
|fireSense_dataPrepPredict |
|fireSense_ignitionPredict |
|fireSense_spreadPredict |
|fireSense_burn |
|fireSense_summary@modsForFireSense |

### Migrating from the individual modules

Children are listed by name, so each comes from the parent's GitHub account and branch: `PredictiveEcology/fireSense@development` fetches every child's `development` branch, and `PredictiveEcology/fireSense@main` every child's `main`. A child written with a branch (`fireSense_summary@modsForFireSense`) or an account keeps it. A module the user lists in `setupProject(modules = )` overrides the parent's entry for it, e.g. `c("PredictiveEcology/fireSense@development", "PredictiveEcology/fireSense_burn@testing")`.

To migrate: list `PredictiveEcology/fireSense@development` in `setupProject(modules = ...)` instead of the individual fireSense modules, and rename these `params` keys (and `whichModulesToPrepare` values). `fireSense` now means the whole family; the burn module is `fireSense_burn`.

| old module name | new module name |
Expand Down
26 changes: 16 additions & 10 deletions tests/testthat/test-metadata.R
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@
md <- SpaDES.core::moduleMetadata(module = moduleName, path = modulePath)

childSpecs <- c(
"PredictiveEcology/fireSense_ELFs@development",
"PredictiveEcology/fireSense_dataPrepFit@development",
"PredictiveEcology/fireSense_ignitionFit@development",
"PredictiveEcology/fireSense_spreadFit@development",
"PredictiveEcology/fireSense_dataPrepPredict@development",
"PredictiveEcology/fireSense_ignitionPredict@development",
"PredictiveEcology/fireSense_spreadPredict@development",
"PredictiveEcology/fireSense_burn@development",
"PredictiveEcology/fireSense_summary@modsForFireSense"
"fireSense_ELFs",
"fireSense_dataPrepFit",
"fireSense_ignitionFit",
"fireSense_spreadFit",
"fireSense_dataPrepPredict",
"fireSense_ignitionPredict",
"fireSense_spreadPredict",
"fireSense_burn",
"fireSense_summary@modsForFireSense"
)
childNames <- c("fireSense_ELFs", "fireSense_dataPrepFit", "fireSense_ignitionFit",
"fireSense_spreadFit", "fireSense_dataPrepPredict", "fireSense_ignitionPredict",
Expand All @@ -21,7 +21,13 @@ childNames <- c("fireSense_ELFs", "fireSense_dataPrepFit", "fireSense_ignitionFi
test_that("metadata parses and names the parent", {
expect_identical(md$name, "fireSense")
expect_identical(md$timeunit, "year")
expect_identical(md$version$fireSense, "1.0.0")
expect_false(is.na(package_version(md$version$fireSense, strict = FALSE)))
})

test_that("the version list names a valid version for every child", {
## SpaDES.project fetches a child of fireSense@v<x> at v<its version here>
expect_true(all(childNames %in% names(md$version)))
expect_false(anyNA(package_version(unlist(md$version[childNames]), strict = FALSE)))
})

test_that("a parent has no parameters, inputs or outputs", {
Expand Down
Loading