yearling_ruleset.RmdRaw catch from the trap does not consistently differentiate between yearling and young of year (YOY) Chinook. FlowWest presented a proposed methodology at a life history diversity (LHD) ruleset workshop (see lhd shiny for workshop materials) and worked with watershed experts to define a methodology to systematically determine life history for each tributary (described below).
Approach
FlowWest proposed weekly cutoff values and used these weekly cutoff
values to generate daily values using a linear approximation function,
approxfun.
generate_cutoff <- approxfun(date, fork_length_cutoff, rule = 2)
The plot below shows the updated cutoff values with linear interpolation of weekly cutoffs for Deer Creek.
Note: You can view all code used to generate plots and tables in this markdown here.

FlowWest shared above plot for each watershed and asked stream experts to review. We incorporated feedback and modified rulesets to better separate yearlings and YOY.
FlowWest took the daily cutoff line (shown in plot above) and used it
as a threshold to classify yearling vs YOY in historical catch data. We
added an is_yearling column to the catch data and set
is_yearling = TRUE for any fish with a fork length that
exceeded the yearling cutoff on a given date.
The following code is applied in the weekly_data_summary
script.
# Note this is not the final dataset as lifestage is added below
standard_catch_unmarked_w_yearling <- rst_catch |>
filter(species %in% c("chinook", "chinook salmon")) |> # filter for only chinook
mutate(month = month(date),
day = day(date)) |>
left_join(daily_yearling_ruleset) |>
mutate(is_yearling = case_when((fork_length <= cutoff & !run %in% c("fall","late fall", "winter")) ~ F,
(fork_length > cutoff & !run %in% c("fall","late fall", "winter")) ~ T,
(run %in% c("fall","late fall", "winter")) ~ NA,
T ~ NA))