Repository navigation
Release fireSense_spreadPredict 1.2.0 - #27
Merged
Merged
Conversation
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0133867aFrmKtbhpNXasToP9
Thin caller for the shared pkgdown-module reusable workflow, which renders fireSense_SpreadPredict.Rmd as a pkgdown article via SpaDES.core::moduleRmdToVignette(). Builds on pull requests to development and deploys to gh-pages on push. Same caller already running on fireSense_SpreadFit (#21). See PredictiveEcology/SpaDES-modules#40.
ci: publish a pkgdown site for fireSense_SpreadPredict
Removes plotSpreadProbByFuelType() (no caller), the if (FALSE) pre-June-2025 prediction branch, and commented-out code. The live else-branch is unwrapped and dedented; no behaviour change. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…scheduling 74 expectations (was 13). Predicted spreadProb values are hand-computed through the logistic from toy covariates and a toy fitted model, including rescaling with the fit's covMinMax. All pass on development and on this branch. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Removed parameters coefToUse, mutuallyExclusiveCols and .saveInterval, and input fireSense_SpreadFitted: nothing reads them. The save event called spreadPredictSave(), which does not exist; it now only emits a message. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013B4sgRg9EwyHaAQdDzUaQW
fireSense_SpreadFit now fits fuel biomass on the linear scale, divided by 1e4, and records that as covMinMax_spread = c(0, 1e4) for each fuel column. Fuel still reaches this module logged (fireSenseUtils::logMinB()), so for those columns the run event undoes the log with fireSenseUtils::fuelLogToLinear(), the function the fit used, before rescaling. A fit made earlier, on the log scale, has the log range in covMinMax_spread and is predicted exactly as before. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013B4sgRg9EwyHaAQdDzUaQW
Remove dead code, document functions, correct Rmd
…ates Predict a linear-fuel fit with linear fuel biomass
logisticAll() picks logistic3pUpper when the stored parameters include upperTail1 (fireSenseUtils 0.2.3.9038), so the floor rises to that and a value test pins the prediction against a hand calculation. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CwcjqqK59FmTJscyi7xUqv
Each fitted ELF's model predicts its own pixels and those within ELFblendWidth (20 km) of them; overlapping predictions are averaged with weights falling linearly from 1 inside an ELF to 0 at ELFblendWidth outside it. Each ELF uses its own parameters, covMinMax_spread and covariates from its ledger row. The per-ELF computation moves to spreadProbOneELF(); one ELF behaves as before. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CwcjqqK59FmTJscyi7xUqv
Predict fits made with the upper-tail link
Predict spread across several ELFs, blending across their boundaries
…eadSD The fitted per-year random effect is removed from the parameters before spread probability is computed (it broke both the one- and several-ELF paths), and is output as fireSense_SpreadSD: one number with one ELF, a raster blended like the probabilities with several; 0 without it. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CwcjqqK59FmTJscyi7xUqv
yearSpreadSD: not a coefficient; passed to fireSense as fireSense_SpreadSD
.studyAreaName is the parameter PredictiveEcology modules use for the study area's name. Defined here (default NA) for consistency; the module does not use it yet. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CwcjqqK59FmTJscyi7xUqv
Add the .studyAreaName parameter
fireSense_SpreadPredict.R:282 called fireSenseUtils::spreadProbFromIntegerCovs() with
mutuallyExclusive = NULL ("already done in dataPrepPredict"), so a young pixel's fuel biomass and
non-forest land-cover columns reached the logistic unchanged instead of being zeroed alongside
youngAge = 1, as the fit requires and as fireSenseCovariatesCreate() is now fixed to actually do
upstream (PredictiveEcology/fireSenseUtils#92). Prediction now derives the same rule itself, via
the new fireSenseUtils::youngAgeExclusiveCols(), using the fuel columns it already identifies
from covMinMax_spread plus the nfLCC_*/treedWetland naming convention, so it does not depend on
covariates always arriving pre-zeroed from an upstream module.
Requires fireSenseUtils@development (>= 0.2.3.9047).
Version 1.0.0.9006.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CwcjqqK59FmTJscyi7xUqv
fireSenseUtils#92 landed as 0.2.3.9048 (development moved to 0.2.3.9047 via a concurrent PR first), so the floor here follows. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CwcjqqK59FmTJscyi7xUqv
Apply youngAge mutual exclusivity at prediction time, matching the fit
Module files, metadata, documentation, tests and CI workflows use the new name, and references to renamed siblings follow; version 1.1.0. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CwcjqqK59FmTJscyi7xUqv
Version 1.1.1. The toy params in test-simInit.R now use the real logistic parameter names. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CwcjqqK59FmTJscyi7xUqv
The rename moved the .md the symlink targets, leaving README.md dangling, so the testthat-module and pkgdown-module workflows failed copying the module folder. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CwcjqqK59FmTJscyi7xUqv
Rename module to fireSense_spreadPredict; stop on a fitted coefficient with no covariate
Add `data.table` to reqdPkgs, bump version, NEWS. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CwcjqqK59FmTJscyi7xUqv
chore: missing packages in reqdPkgs
… rep) spreadProbOneELF() averaged one map per parameter set and yearSpreadSDOf() averaged yearSpreadSD, breaking the pairing of each set's yearSpreadSD with its coefficients. Replicate `rep` now uses row ((rep - 1) %% nSets) + 1 of each ELF, via paramSetForRep(). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CwcjqqK59FmTJscyi7xUqv
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CwcjqqK59FmTJscyi7xUqv
Each prediction replicate uses one whole parameter set (new parameter .rep)
A row with an intercept and stored covariate centres is predicted with both; a row without them predicts as before. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CwcjqqK59FmTJscyi7xUqv
Predict with the intercept and centres of a ledger row
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CwcjqqK59FmTJscyi7xUqv
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CwcjqqK59FmTJscyi7xUqv
lowerSpreadProb and maxFireSpread default to the fireSenseUtils constants
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CwcjqqK59FmTJscyi7xUqv
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This moves a month of work on development into main as release 1.2.0. Fire spread can now be forecast across several fire regions with their own fits, each replicate uses one whole set of fitted values, and the module is renamed
fireSense_spreadPredict.Affects: predicted spread probabilities change, especially across replicates and in multi-region study areas; projects must use the new module name.
Technical details
fireSense_spreadPredict.R; NEWS.md gains a 1.2.0 heading with a summary.ELFblendWidth;.reppicks one whole parameter set per replicate (norowMeans()across sets);yearSpreadSDoutput asfireSense_SpreadSD; youngAge mutual exclusivity as in the fit; upper-tail link and intercept/centre ledger rows; floor/ceiling from fireSenseUtils; stop on coefficients without covariates; rename fromfireSense_SpreadPredict;.studyAreaName; tests and pkgdown site.development..mainis empty, so there is no main-only content to carry.v1.2.0and the GitHub release follow.🤖 Generated with Claude Code