Skip to contents

A reproducible teaching example loosely based on 3Ps cod, with three fisheries and two surveys of one spatially distributed population. All fisheries are active. The example is based on recognizable fishing and monitoring practices, not a reconstruction of the official assessment or a stock-status evaluation.

Usage

sim_cod_obs

sim_cod_truth

Format

sim_cod_obs is a tam_data list (see as_tam_data()) of tidy input tables:

  • catch: estimated catch numbers at age, with year, age, fleet, obs, unit and mean_length. Fleets are Gillnet, Longline and Trawl.

  • index: estimated abundance indices with year, age, survey, samp_time, obs, unit and mean_length. Both programs observe the same annual population snapshot (samp_time = 0).

  • weight: assumed-known stock and fleet-specific catch weights at age, distinguished by type and fleet. Average weights are in kg.

  • maturity: assumed-known proportion mature at age.

  • pop_covariates: a complete year-age table containing M0, an assumed-known natural-mortality baseline (per year).

mean_length is the expected population length at age (cm), calculated from the generating growth distribution. It is constant across years and is not a mean calculated from selected catches or survey samples.

Catch and abundance indices are in thousand fish; their product with kg gives biomass or yield in tonnes. Survey totals refer to their own footprints, not an extrapolation of coastal density over the whole population. sim_cod_truth is a list containing:

  • population: year, age, abundance N (thousand fish), Z, total F and remaining M (per year), weight (kg), maturity, B and SSB (tonnes).

  • annual: total N, B, SSB, recruitment (thousand fish) and yield (tonnes).

  • fleet: reference and realized catches (thousand fish), F_reference, F_realized, catch weights (kg) and yield (tonnes).

  • surveys: regional and total abundance, selection, expected regional index (all abundances in thousand fish) and the regional availability fraction.

  • footprint: cell coordinates (km), depth (m), area (square km), strata and logical access columns for each fishery and survey.

  • selectivity: curves by component and length (cm).

  • fishery_annual and monitoring: operation, sampling, reporting and termination summaries in native counts of fish, operations and samples.

  • allocations: base and effective fleet shares, access fractions and selectivity-weighted expected deaths in native fish counts.

  • survey_precision: estimated total-index SEs in thousand fish.

  • survey_monitoring: annual set, catch, length and age sample counts.

  • checks and provenance: tail losses, shortfalls, unsupported observations, settings, source revision, software versions and retained warnings. Realized population states remain separate from the fitting inputs.

An object of class list of length 13.

Source

Generated by data-raw/sim_cod_obs.R using a recorded development revision of SimSurvey. The generator retains its settings, seed, software versions and warnings. SimSurvey is needed only to regenerate the data, not to use them.

Details

The teaching scenario uses seed 438 and retains the recruitment process, growth centres, total-mortality log-scale centre and mortality correlations from Regular et al. (2020). It reduces the total-mortality innovation log-SD from 0.2 to 0.1 and length-at-age log-SD from 0.1 to 0.03. These are deliberate teaching simplifications, not the original paper's demographic settings. The data use a 20-by-20 grid and one spatial field shared by all ages and years. Its spatial SD remains 2.8. Sharing the field removes changing regional availability as an additional source of catchability variation. Age/year correlation inputs are zero because only one grouped field is drawn. Whole-fish rounding can introduce small differences in availability when abundances are low. These are deliberate simplifications of the paper's finer grid and age- and time-varying fields. Fisheries divide existing deaths among fleets; their operations do not change the future pre-generated population. Reference F and realized Baranov-equivalent F therefore have different meanings. The simulator has finite ages rather than a biological plus group; the retained tail and its losses are recorded. Annual allocations scale each base share by the fraction of selectivity-weighted expected deaths inside the fleet's accessible grounds. This prevents a coastal target from being allocated on inaccessible fish. It does not guarantee equal exploitation among cells or ages. Allocation uses simulation truth to construct the operating scenario. It does not rescale observed indices or substitute realized mortality in the fitting inputs. A common multiplier on fleet allocations sets the geometric mean of M0 to 0.30 per year. The calculation uses the declared total-mortality log-scale centre, exp(log(0.5)), and the remaining reference fraction after fleet selection. It does not use fitted estimates or realized remaining mortality. M0 is a baseline, not the realized M in sim_cod_truth$population. Its geometric centre is not a target for arithmetic realized M; the separate realized-M summary is retained in provenance.

Gillnet and longline fisheries concentrate near the synthetic northern coast; trawling occurs offshore. The RV-like survey samples a broad offshore footprint. The denser Sentinel-gillnet-like survey samples a restricted coastal footprint with dome-shaped selectivity. Both surveys use swept-area sampling: the latter does not reproduce gillnet saturation or fish-per-net CPUE. Geographic access and depth restrictions are illustrative, not regulatory boundaries. Nominal set densities are two per 1,000 square km for RV and four for Sentinel, with a minimum of two sets per sampled stratum. Actual set counts are retained.

Commercial catch-at-age is raised from biological samples and calibrated to reported totals. It is not the simulator's true catch-at-age. Survey indices are stratified estimates within each footprint. Age compositions and regional availability can introduce dependence and variation that a simple independent lognormal assessment does not describe. Genuine sampled zeros remain in the inputs; tinyAM excludes them from its lognormal observation likelihood. Length-based selectivity integrates over the generating length distribution within each age. Evaluating a fitted curve at mean_length approximates that expectation: a nonlinear curve at mean length need not equal mean selectivity. Differences can be more apparent near steep portions of the curves.

Weight and age-based maturity are supplied without sampling uncertainty to keep the example focused on fleets and surveys. Fitted confidence intervals consequently condition on these biological inputs. M0 is also supplied as a known baseline; assuming deterministic M equal to it is a model hypothesis. The seed was fixed before fitting; warnings and failures are retained.

References

Regular, P.M. et al. (2020). SimSurvey: An R package for comparing the design and analysis of surveys by simulating spatially-correlated populations. PLOS ONE 15(5): e0232822. doi:10.1371/journal.pone.0232822

Varkey, D.A. et al. (2024). Report of the data-review meeting in preparation for the assessment framework of 3Ps Cod stock in southern Newfoundland. Canadian Data Report of Fisheries and Aquatic Sciences 1381. https://publications.gc.ca/collections/collection_2024/mpo-dfo/Fs97-13-1381-eng.pdf

Kumar, R. et al. (2026). Standardized Indices and Biological Information for 3Ps Cod from the Sentinel Gillnet and Linetrawl Surveys using the 'Rsentinel' R-Package. DFO Research Document 2026/056. https://publications.gc.ca/collections/collection_2026/mpo-dfo/fs70-5/Fs70-5-2026-056-eng.pdf

Examples

data(sim_cod_obs)
check_tam_data(sim_cod_obs)
#> ✔ Input data passed validation.
#> ℹ Years 1-20; ages 1-20; fleets: 3; surveys: 2.
unique(sim_cod_obs$catch$fleet)
#> [1] "Gillnet"  "Longline" "Trawl"   
unique(sim_cod_obs$index$survey)
#> [1] "RV"       "Sentinel"