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.
Format
sim_cod_obs is a tam_data list (see as_tam_data()) of tidy input tables:
catch: estimated catch numbers at age, withyear,age,fleet,obs,unitandmean_length. Fleets are Gillnet, Longline and Trawl.index: estimated abundance indices withyear,age,survey,samp_time,obs,unitandmean_length. Both programs observe the same annual population snapshot (samp_time = 0).weight: assumed-known stock and fleet-specific catch weights at age, distinguished bytypeandfleet. Average weights are in kg.maturity: assumed-known proportion mature at age.pop_covariates: a completeyear-agetable containingM0, 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, abundanceN(thousand fish),Z, totalFand remainingM(per year),weight(kg),maturity,BandSSB(tonnes).annual: totalN,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_annualandmonitoring: 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.checksandprovenance: 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"