Scope
sbtdata supplies immutable source-data objects and
reviewed grid definitions. It does not create an assessment
data list and does not call sbt::get_data().
This keeps every model switch and scientific decision visible in the
assessment analysis.
library(sbtdata)
sbt_data_releases()
#> release label assessment_year terminal_year
#> 1 2023 2023 stock assessment data 2023 2022
#> 2 2026 2026 stock assessment data 2026 2025
#> sbt_commit
#> 1 22bbc66f519ee3aefc2f65d3861989fcab23a6ac
#> 2 22bbc66f519ee3aefc2f65d3861989fcab23a6ac
#> sbt_2026_commit
#> 1 <NA>
#> 2 b201a8077dd2039009c7f2af23b76bd6e42046a3
#> data_sha256
#> 1 00127bf62876e7278419c0198db94f67121848758c0ef39bda2728e6d1ad1f81
#> 2 1cae9822c147187c49ea047a89d26dd512d6e589a78ed31fd0e088c32499d943Data dictionary
sbt_load_data() returns a plain named list. The objects
are kept separate so that an assessment script must state explicitly
which sources it uses and how they enter the model.
| Object | Contents and role | Availability |
|---|---|---|
length_mean |
Mean length by assessment year, season, and age | 2023 and 2026 |
length_sd |
Standard deviation of length at age | 2023 and 2026 |
catch |
Reported catch by year and fishery | 2023 and 2026 |
catch_UA |
Unaccounted-catch additions used when constructing historical catch | 2023 and 2026 |
scenarios_surface,
scenarios_LL1
|
Historical catch-scenario multipliers for the surface and LL1 fisheries | 2026; nested in data_csv1 for 2023 |
POPs |
Parent–offspring match and comparison records | 2023 and 2026 |
paly |
Conditional probabilities of age given length and year | 2023 and 2026 |
HSPs |
Half-sibling match and comparison records | 2023 and 2026 |
GTs |
Gene-tag release, sampling, and match records | 2023 and 2026 |
aerial_survey |
Juvenile aerial-survey index observations | 2023 and 2026 |
aerial_cov |
Covariance matrix associated with the aerial-survey observations | 2023 and 2026 |
troll |
Trolling-survey index and uncertainty | 2023 and 2026 |
cpue |
Longline CPUE index and annual uncertainty used by the assessment | 2023 and 2026 |
cpue_gam22_cv |
Workbook-derived GAM22 annual CV series retained separately for source tracing and CPUE construction | 2026 only |
age_freq |
Fishery age compositions and associated sample information | 2023 and 2026 |
length_freq |
Fishery and CPUE length compositions and associated sample information | 2023 and 2026 |
tag_reporting |
Conventional-tag reporting-rate inputs | 2023 and 2026 |
tag_releases |
Conventional-tag release records | 2023 and 2026 |
tag_recaptures |
Conventional-tag recapture records | 2023 and 2026 |
POPs_v1 |
Frozen parent–offspring input used by the legacy V1/ADMB comparison | 2023 and 2026 |
data_csv1 |
Frozen legacy data and configuration collection used by historical comparisons | 2023 only |
data_labrep1 |
Frozen legacy labelled/report structures used by historical comparisons | 2023 only |
data_par1 |
Frozen legacy parameter inputs used by historical comparisons | 2023 only |
mpdat |
Cape Town Procedure support data used by projection workflows | 2023 and 2026 |
The manifest supplies machine-readable roles, classes, dimensions, and hashes for the objects in each release:
manifest <- sbt_data_manifest("2026")
manifest$objects[, c("object", "role", "class", "dimensions")]
#> object role
#> length_mean length_mean assessment_source
#> length_sd length_sd assessment_source
#> catch catch assessment_source
#> catch_UA catch_UA assessment_source
#> scenarios_surface scenarios_surface assessment_source
#> scenarios_LL1 scenarios_LL1 assessment_source
#> POPs POPs assessment_source
#> POPs_v1 POPs_v1 legacy_reference
#> paly paly assessment_source
#> HSPs HSPs assessment_source
#> GTs GTs assessment_source
#> aerial_survey aerial_survey assessment_source
#> aerial_cov aerial_cov assessment_source
#> troll troll assessment_source
#> cpue cpue assessment_source
#> cpue_gam22_cv cpue_gam22_cv source_and_provenance
#> age_freq age_freq assessment_source
#> length_freq length_freq assessment_source
#> tag_reporting tag_reporting assessment_source
#> tag_releases tag_releases assessment_source
#> tag_recaptures tag_recaptures assessment_source
#> mpdat mpdat projection_support
#> class dimensions
#> length_mean spec_tbl_df/tbl_df/tbl/data.frame 190x33
#> length_sd spec_tbl_df/tbl_df/tbl/data.frame 31x2
#> catch spec_tbl_df/tbl_df/tbl/data.frame 74x7
#> catch_UA spec_tbl_df/tbl_df/tbl/data.frame 36x7
#> scenarios_surface spec_tbl_df/tbl_df/tbl/data.frame 34x6
#> scenarios_LL1 spec_tbl_df/tbl_df/tbl/data.frame 43x4
#> POPs spec_tbl_df/tbl_df/tbl/data.frame 9005x6
#> POPs_v1 spec_tbl_df/tbl_df/tbl/data.frame 3854x5
#> paly array 17x26x11
#> HSPs spec_tbl_df/tbl_df/tbl/data.frame 116x4
#> GTs spec_tbl_df/tbl_df/tbl/data.frame 8x6
#> aerial_survey spec_tbl_df/tbl_df/tbl/data.frame 20x3
#> aerial_cov matrix/array 20x20
#> troll spec_tbl_df/tbl_df/tbl/data.frame 29x3
#> cpue spec_tbl_df/tbl_df/tbl/data.frame 57x4
#> cpue_gam22_cv tbl_df/tbl/data.frame 57x5
#> age_freq spec_tbl_df/tbl_df/tbl/data.frame 88x46
#> length_freq spec_tbl_df/tbl_df/tbl/data.frame 270x113
#> tag_reporting spec_tbl_df/tbl_df/tbl/data.frame 49x11
#> tag_releases spec_tbl_df/tbl_df/tbl/data.frame 36x5
#> tag_recaptures spec_tbl_df/tbl_df/tbl/data.frame 108x10
#> mpdat list 39Grid releases are separate from source-data releases. The elements
returned by sbt_load_grid() have the following meanings;
optional elements are present only when they are relevant to that
grid.
| Grid element | Meaning |
|---|---|
release, name,
description
|
Human-readable identity and scope of the frozen grid |
cells |
Grid coordinates, with one row per numbered cell |
sample |
Exact sampled cell record used by a historical or weighted comparison, where applicable |
specification |
Reviewed coordinate, construction, and acceptance contract, where applicable |
source, source_signature,
sampled_fit_signature
|
Provenance for the source grid or sampled comparison |
sbt_commit,
sbt_2026_commit
|
Source-code revision associated with the frozen grid |
These are definitions and sampling records, not fitted objectives, posterior draws, or assessment results.
Historical comparisons
The 2023 release contains both the assessment source objects and the frozen legacy artefacts required for V1/ADMB comparisons.
sbt2023 <- sbt_load_data("2023")
grid2023 <- sbt_load_grid("2023")
names(sbt2023)
#> [1] "GTs" "HSPs" "POPs" "POPs_v1"
#> [5] "aerial_cov" "aerial_survey" "age_freq" "catch"
#> [9] "catch_UA" "cpue" "data_csv1" "data_labrep1"
#> [13] "data_par1" "length_freq" "length_mean" "length_sd"
#> [17] "paly" "tag_recaptures" "tag_releases" "tag_reporting"
#> [21] "troll" "mpdat"
nrow(grid2023$cells)
#> [1] 108
length(grid2023$sample$grid_cells)
#> [1] 2000The legacy objects are available explicitly:
names(sbt2023$data_csv1)
#> [1] "scenarios_surface" "scenarios_LL1" "sel_change_sd"
names(sbt2023$data_labrep1)[1:10]
#> [1] "scenario_number" "n" "years" "ObjF"
#> [5] "lnlike" "penal" "Hhigh" "H2003"
#> [9] "H2004" "sigma.cpue"
names(sbt2023$data_par1)[1:10]
#> [1] "ln_B0" "lnq" "lnqhsp" "deltalnq08" "steep"
#> [6] "sigma_r" "sigma_cpue" "m4" "m0" "m10"
head(sbt2023$POPs_v1)
#> Cohort CaptureYear CaptureAge NPOPs Comps
#> 1 2002 2010 5 0 145
#> 2 2003 2010 5 0 1299
#> 3 2004 2010 5 0 1710
#> 4 2005 2010 5 0 1419
#> 5 2006 2010 5 0 1320
#> 6 2007 2010 5 0 1409The 2026 assessment
The following is the long-form configuration used by the full 2026
stock assessment. The code is not evaluated in this package because
preparation and fitting belong to sbt, not
sbtdata.
sbt2026 <- sbtdata::sbt_load_data("2026")
data <- list(
last_yr = 2025,
age_increase_M = 25,
M_switch = 2L,
length_m50 = 150,
length_m95 = 180,
catch_surf_case = 1L,
catch_LL1_case = 1L,
length_mean = sbt2026$length_mean,
length_sd = sbt2026$length_sd,
catch = sbt2026$catch,
catch_UA = sbt2026$catch_UA,
scenarios_surf = sbt2026$scenarios_surface,
scenarios_LL1 = sbt2026$scenarios_LL1,
paly = sbt2026$paly,
POPs = sbt2026$POPs,
HSPs = sbt2026$HSPs,
GTs = sbt2026$GTs,
troll = sbt2026$troll,
cpue = sbt2026$cpue,
age_freq = sbt2026$age_freq,
length_freq = sbt2026$length_freq,
aerial_survey = sbt2026$aerial_survey,
aerial_cov = sbt2026$aerial_cov,
tag_reporting = sbt2026$tag_reporting,
tag_releases = sbt2026$tag_releases,
tag_recaptures = sbt2026$tag_recaptures,
harvest_wall_strength = 10,
harvest_wall_onset = 0.85,
harvest_wall_ceiling = 0.9,
harvest_wall_scale = 0.01,
removal_switch_f = c(0, 0, 0, 0, 0, 0),
sel_min_age_f = c(2, 2, 2, 8, 6, 0, 4),
sel_max_age_f = c(17, 9, 17, 21, 25, 7, 17),
sel_end_f = c(1, 0, 1, 1, 1, 0, 1),
sel_LL1_yrs = c(1952, seq(1957, 2001, 4), 2006:2008,
seq(2011, 2023, 3)),
sel_LL2_yrs = c(1969, 2001, 2005, 2008, seq(2011, 2023, 3)),
sel_LL3_yrs = c(1954, 1961, 1965, 1969:1971, 2005:2007),
sel_LL4_yrs = 1953,
sel_Ind_yrs = c(1976, 1997, 1999, seq(2002, 2010, 2), 2012:2021),
sel_Aus_yrs = c(1952, seq(1969, 1993, 4), 1997:2025),
sel_CPUE_yrs = c(seq(1969, 2001, 4), 2006:2008,
seq(2011, 2023, 3)),
af_switch = 1L,
lf_switch = 1L,
cpue_lf_switch = 1L,
lf_minbin = c(1, 1, 1, 11, 6),
cpue_switch = 1L,
cpue_a1 = 5,
cpue_a2 = 17,
cpue_sel_fishery = 7L,
cpue_lf_sel_fishery = 7L,
aerial_switch = 4L,
troll_switch = 0L,
pop_switch = 1L,
hsp_switch = 1L,
hsp_false_negative = 0.6840729,
gt_switch = 1L,
tag_switch = 1L,
tag_var_factor = 2.4
)
data <- sbt::get_data(data_in = data)The corresponding grids are loaded separately:
reference_grid <- sbt_load_grid("2026")
mle_comparison_grid <- sbt_load_grid("2026", "mle-comparison")
nrow(reference_grid$cells)
#> [1] 9
nrow(mle_comparison_grid$cells)
#> [1] 108
length(mle_comparison_grid$sample$grid_cells)
#> [1] 2000Provenance and integrity
sbt_load_data() and sbt_load_grid() verify
their bundled SHA-256 hashes by default. The full source and object
manifest can also be inspected directly.
manifest$release
#> $label
#> [1] "2026 stock assessment data"
#>
#> $assessment_year
#> [1] 2026
#>
#> $terminal_year
#> [1] 2025
#>
#> $sbt_commit
#> [1] "22bbc66f519ee3aefc2f65d3861989fcab23a6ac"
#>
#> $sbt_2026_commit
#> [1] "b201a8077dd2039009c7f2af23b76bd6e42046a3"
#>
#> $source
#> [1] "CCSBT-Dev/sbt_2026 full ESC31 stock-assessment workflow"
manifest$objects[, c("object", "class", "dimensions")]
#> object class
#> length_mean length_mean spec_tbl_df/tbl_df/tbl/data.frame
#> length_sd length_sd spec_tbl_df/tbl_df/tbl/data.frame
#> catch catch spec_tbl_df/tbl_df/tbl/data.frame
#> catch_UA catch_UA spec_tbl_df/tbl_df/tbl/data.frame
#> scenarios_surface scenarios_surface spec_tbl_df/tbl_df/tbl/data.frame
#> scenarios_LL1 scenarios_LL1 spec_tbl_df/tbl_df/tbl/data.frame
#> POPs POPs spec_tbl_df/tbl_df/tbl/data.frame
#> POPs_v1 POPs_v1 spec_tbl_df/tbl_df/tbl/data.frame
#> paly paly array
#> HSPs HSPs spec_tbl_df/tbl_df/tbl/data.frame
#> GTs GTs spec_tbl_df/tbl_df/tbl/data.frame
#> aerial_survey aerial_survey spec_tbl_df/tbl_df/tbl/data.frame
#> aerial_cov aerial_cov matrix/array
#> troll troll spec_tbl_df/tbl_df/tbl/data.frame
#> cpue cpue spec_tbl_df/tbl_df/tbl/data.frame
#> cpue_gam22_cv cpue_gam22_cv tbl_df/tbl/data.frame
#> age_freq age_freq spec_tbl_df/tbl_df/tbl/data.frame
#> length_freq length_freq spec_tbl_df/tbl_df/tbl/data.frame
#> tag_reporting tag_reporting spec_tbl_df/tbl_df/tbl/data.frame
#> tag_releases tag_releases spec_tbl_df/tbl_df/tbl/data.frame
#> tag_recaptures tag_recaptures spec_tbl_df/tbl_df/tbl/data.frame
#> mpdat mpdat list
#> dimensions
#> length_mean 190x33
#> length_sd 31x2
#> catch 74x7
#> catch_UA 36x7
#> scenarios_surface 34x6
#> scenarios_LL1 43x4
#> POPs 9005x6
#> POPs_v1 3854x5
#> paly 17x26x11
#> HSPs 116x4
#> GTs 8x6
#> aerial_survey 20x3
#> aerial_cov 20x20
#> troll 29x3
#> cpue 57x4
#> cpue_gam22_cv 57x5
#> age_freq 88x46
#> length_freq 270x113
#> tag_reporting 49x11
#> tag_releases 36x5
#> tag_recaptures 108x10
#> mpdat 39