Skip to contents

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 1cae9822c147187c49ea047a89d26dd512d6e589a78ed31fd0e088c32499d943

Data 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         39

Grid 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] 2000

The 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  1409

The 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] 2000

Provenance 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