Skip to content

Release fireSense_ignitionPredict 1.2.0 - #28

Merged
eliotmcintire merged 35 commits into
mainfrom
development
Oct 7, 2026
Merged

eliotmcintire merged 35 commits into
mainfrom
development

Conversation

@eliotmcintire

Copy link
Copy Markdown
Collaborator

This moves a month of work on development into main as release 1.2.0. It fixes two errors that changed how many fires the module predicted, and renames the module to fireSense_ignitionPredict.

Affects: predicted ignitions and escapes will differ from 1.0.0, and projects must use the new module name.

Technical details

🤖 Generated with Claude Code

eliotmcintire and others added 30 commits September 11, 2026 08:57
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_IgnitionPredict.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.
Removes scaleAgain() (no caller), commented-out code, the unreachable code
after stop("Not tested anymore") and a browser() leftover. No behaviour change.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… scheduling

86 expectations (was 5). Fitted models are stand-ins that log the newdata they
are given, so no xgboost is needed. All pass on development and on this branch;
three tests of correct behaviour are skipped as known defects.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The save event wrote sim$fireSense_IgnitionPredicted, which nothing creates, so
it failed whenever .saveInitialTime was set. It now only emits a message, and
IgnitionPredictSave() is gone. igDisAggFactor and the lambdaRescaleFactor
default in IgnitionPredictRun() were computed and never read; the latter also
wrote into the input fireSense_IgnitionFitted.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013B4sgRg9EwyHaAQdDzUaQW
IgnitionPredictRun() passed each year's covariates to
fireSenseUtils::prepareCovariatesOuter(), which calls scale() on them, so they
were standardized with that year's own mean and sd. The models were fitted on
covariates standardized once over all fitting years, so a hot year and a cool
year reached them looking the same. The fitted objects already carry the fit's
constants as `scaleData`; use those, separately for ignition and escape.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013B4sgRg9EwyHaAQdDzUaQW
Keeps setup-toyIgnition.R identical to the copy in the scaling fix (PR #21), so
the two merge in either order and these tests still pass once prediction needs
scaleData.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013B4sgRg9EwyHaAQdDzUaQW
…aling

Standardize prediction covariates with the fit's center and scale
development gained the fit-scaling fix (#21). Two conflicts, both resolved by
keeping both sides: NEWS.md (the bug fix first, then the cleanup bullets under
their own heading) and the end of fireSense_IgnitionPredict.R, where this branch
had deleted IgnitionPredictSave() at the spot #21 added scaleAsFit().

scaleAgain() came back with that hunk. This branch had already removed it as
dead code, and it is still never called (scaleAsFit() does the arithmetic
itself), so it stays removed.

test-covariate-scaling.R had a test skipped as a known defect, pointing at #21.
It was written before the fix, with hand-computed values; it now runs and passes.

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
ci: publish a pkgdown site for fireSense_IgnitionPredict
With per-ELF fit lists and the per-pixel ELF raster, each ELF's ignition
and escape models predict its own coarse pixels. The draws are still made
once over all pixels, so one ELF gives exactly the old result.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CwcjqqK59FmTJscyi7xUqv
Predict ignitions and escapes with each ELF's own models
.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
`escapes` is the coarse pixel's count, repeated on each of its ignition
rows, and fireSense spread `escapes` fires from every row: 4 ignitions
with 2 escapes gave 8 escaped fires. New column `escaped` marks exactly
`escapes` of each coarse pixel's ignitions, drawn after the placements
so they are unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CwcjqqK59FmTJscyi7xUqv
…ped-ignition

ignitionsAndEscapes: mark which ignitions escaped
Renamed from fireSense_IgnitionPredict; sibling module names updated; version 1.1.0.

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_ignitionPredict
Add `data.table` and `reproducible` to reqdPkgs, bump version, NEWS.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CwcjqqK59FmTJscyi7xUqv
eliotmcintire and others added 4 commits September 30, 2026 19:04
postProcess() regridded the coarse ignition raster to flammableRTM each year (fireSense_ignitionPredict.R:191); the mapping is kept in mod and applied by indexing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CwcjqqK59FmTJscyi7xUqv
Compute the coarse-to-fine cell mapping once
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@eliotmcintire eliotmcintire added bug Something isn't working enhancement New feature or request breaking change Existing code or results need changes to keep working labels Oct 7, 2026
@eliotmcintire
eliotmcintire merged commit d25603e into main Oct 7, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

breaking change Existing code or results need changes to keep working bug Something isn't working enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant