Skip to content

Rceattle 5.20.0

Choose a tag to compare

@grantdadams grantdadams released this 25 Aug 23:28
· 698 commits to main since this release
bd9d0fc

Second release of the 5.x line (5.9.0 through 5.20.0, merged in #119).
Full detail in NEWS.md.

Results change — refit before carrying a model forward

Change Effect
A fishery's index is predicted from year-averaged numbers N̄ via Baranov rather than a snapshot at Month, matching catch, caal, and comps (5.9.0). Moves trend as well as scale, so q cannot absorb it. Refit any fishery carrying index_data
A fishery carrying index_data now gets an estimable catchability; a survey with no index rows no longer does (5.9.0) Set Catchability = "Fixed" to keep the old behaviour
Reference points ignored an estimated stock-recruit curve unless the projection also used it (5.13.0) Inflated perceived depletion under HCR 5 and 6. Refit any Beverton-Holt / Ricker model run under those rules
M1_re = 3 and 6 estimated 42 deviations where 882 were meant (5.9.0) Refit any model estimating age-by-year M deviations
The 2D-AR1 correlations acted on the wrong dimensions (5.9.0) Most fits do not move, but warm starts across the boundary do — refit from inits = NULL
A scalar cap in run_mse() was tested against the assessment-interval total, not the annual one (5.13.0) Any stored MSE result using a scalar cap changes, at every assessment_period and whether or not the cap ever bound
run_mse() observation draws moved at 5.9.0, 5.13.0 and 5.18.0 Every seeded run_mse(simulate_data = TRUE) result changes. simulate_data = FALSE is unchanged to the bit
remove_F() zeroed fitted hindcast F when suit_endyr < endyr Refit any model setting suit_endyr short of endyr
Composition draws use Comp_weights as the density does (5.9.0) Any model with a weight other than 1 gives a different self-test
The mode-5 selectivity penalty fix; parameter bounds previously applied to the wrong parameters; the srr_prior and init_dev recruitment fixes; random_q = TRUE fits (5.14.0) Refit
Three predation figures renumbered (5.10.0); plot_indexresidual() changed sign (5.9.0) Regenerate figures. Earlier index residual plots are mirrored about zero

Breaking changes

Every renamed argument and column keeps its old spelling through R/0-deprecate.R
or the schema aliases field, scheduled for removal in 6.0.0. No exported
function was removed.

  • summary() on a fit returns a summary object, not the fit (5.16.0). It was print(object).
  • Time_varying_sel = "AR1" and Time_varying_q = "AR1" are removed (5.16.0). Neither was ever an AR1 — both were scored as "IID". Use "IID" for the same fit, or linkage_spec(~ ar1(1 | Year)) for a real one.
  • Catchability = "AR1" (QAR1) is an error (5.12.0). The deviates were never estimated, so q came back constant.
  • Beverton-Holt / Ricker under msmMode > 0 is refused (5.12.0). SPR is not defined under predation.
  • growth_re, growth_indices and log_growth_par_devs are removed (5.9.0). Nothing consumed them; every fit is bit-identical. Use build_growth(linkages =).
  • maturity and sex_ratio age coverage is validated per species (5.19.0). A gap inside a species' own ages leaves SSB or SPR0 NA; on a two-sex species it reached only SPR, so the model fitted cleanly and failed later at nlminb's "NA/NaN gradient evaluation".
  • write_data() writes fleet_control in schema order (5.12.0). Values round-trip identically; only column order moves.
  • sim_mod(simulate = TRUE) no longer works on an averaged model (5.9.0).

New

  • The column schema is the source of truth for switch values, defaults and column order (5.12.0), and save_config() / load_config() project from it.
  • Every observation type is simulated inside the TMB model, beside the density that scores it — sim_mod(process =), and a TruncatedNormal index family whose likelihood and simulator are the same distribution (5.9.0).
  • run_mse(assessment_period =) takes a schedule of years and catch_mult a Year/Species/mult data frame, so a missed assessment and a buffer held while advice is stale are expressible (5.17.0).
  • Two MSE schedules on the same seed are on common random numbers (5.18.0). Contamination in a year whose advice is identical by construction falls from 2.1% to 0.003%. This costs about 9% on a Bering Sea multispecies MSE projecting to 2040.
  • random_q estimates the catchability deviation sd (5.14.0); multispecies unfished SSB and depletion are carried on the fitted object (5.15.0).
  • One display contract for the diagnostics: convergence, OSA, retrospective, jitter, self-test and likelihood profile all print an overall status in the same four-level vocabulary, a one-line verdict, then a compact table (5.16.0, completed in 5.20.0).

Known limitation

R CMD check on windows-latest died once with 0xC0000005, a Windows access
violation, inside test-selectivity-catchability.R. That is memory corruption,
not a bad optimum. What ships is the scaffolding to catch it —
RCEATTLE_SAFEBOUNDS=true plus tools/verify/verify-safebounds.R, and a nightly
deep-checks workflow — not a cure. A green Windows run is not evidence: the
guard usually skips the file that crashes.