Skip to content

commfish/BSAIcrabR

Repository files navigation

BSAIcrabR: A simple R workflow for accessing and summarizing ADF&G BSAI crab observer and dockside sampling data

Installation

devtools::install_github("commfish/BSAIcrabR")

Data Access

Data access features under construction. Eventually, data access will be through the load_* series of functions. Use of these functions to download data will require connected to an ADF&G network and an OceanAK account (fish ticket data).

Example

Below is an example workflow for summarizing fishery data necessary for the BBRKC stock assessment:

# load

library(BSAIcrabR)

# data ----

## count pot data
pot_sum <- load_pot_dump("./bbrkc/data/RKC-1990-2023_potsum.csv", stock = "BBRKC", clean = T)

## measure pot data
obs_meas <- load_crab_dump("./bbrkc/data/RKC-1990-2023_crab_dump.csv", stock = "BBRKC", clean = T)

## dockside data
dock <- load_dockside("./bbrkc/data/RKC-1990-2023_retained_size_freq.csv", stock = "BBRKC", clean = T)

## timeseries of directed effort
dir_effort_prerat <- read_csv("./misc/data/fish_ticket_timeseries/directed_effort_timeseries_DP.csv") 

## fish ticket summary by stat area
readRDS("../adfg_crab_observer/misc/data/fish_ticket_timeseries/fish_ticket_stat_area_summary.RDS") %>%
  mutate(fishery = gsub("XR", "TR", fishery)) %>%
  filter(substring(fishery, 1, 2) == "TR") %>%
  mutate(fishery = substring(fishery, 1, 4)) %>%
  # add crab year
  add_crab_year(., date_correct = F) %>%
  # rename fields
  rename(live_n = live_number,
         deadloss_n = deadloss_number,
         live_lb = live_lbs,
         deadloss_lb = deadloss_lbs) -> ft_statarea

## incidental-directected fish ticket report
read_csv("../adfg_crab_observer/misc/data/fish_ticket_timeseries/Q_dir_inc_fish_ticket.csv", skip = 2) %>%
  janitor::clean_names() %>%
  filter(grepl("Total", seasons)) %>%
  filter(!grepl("Grand", seasons)) %>%
  mutate(year = substring(seasons, 3, 4)) %>%
  transmute(year, QT = wbt_directed_effort, QO = bss_directed_effort) %>%
  left_join(read_csv("../adfg_crab_observer/misc/data/fish_ticket_timeseries/T_dir_inc_fish_ticket.csv", skip = 2) %>%
              janitor::clean_names() %>%
              filter(grepl("Total", seasons)) %>% 
              filter(!grepl("Grand", seasons)) %>%
              mutate(year = substring(seasons, 3, 4)) %>%
              transmute(year, TT = ebt_directed_effort, TR = bbr_directed_effort) %>%
              full_join(readRDS("../adfg_crab_observer/misc/data/fish_ticket_timeseries/fish_ticket_stat_area_summary_2_21_25.RDS") %>%
                           filter(substring(fishery, 1, 2) == "XR") %>%
                           mutate(year = substring(fishery, 3, 4)) %>%
                           group_by(year) %>%
                           summarise(XR = sum(pots, na.rm = T))), by = "year") %>%
  pivot_longer(2:ncol(.), names_to = "fish", values_to = "effort") %>%
  mutate(fish = gsub("XR", "TR", fish)) %>%
  mutate(fishery = paste0(fish, year)) %>%
  group_by(fishery) %>%
  summarise(effort = sum(effort, na.rm = T)) %>%
  # join to prerationalized doug pengilly data
  bind_rows(dir_effort_prerat) %>%
  # add crab year
  add_crab_year(date_correct = F) %>%
  # other fisheries
  bind_rows(readRDS("../adfg_crab_observer/misc/data/fish_ticket_timeseries/fish_ticket_stat_area_summary_2_21_25.RDS") %>%
              filter(!(substring(fishery, 1, 2) %in% c("QO", "TT", "TR", "QT", "XR"))) %>%
              group_by(fishery, crab_year) %>%
              summarise(effort = sum(pots, na.rm = T)) %>% ungroup) %>%
  arrange(fishery) %>%
  # temporarily add CP98 (as QP)
  add_row(fishery = "QP98", effort = 89500, crab_year = 1998) %>%
  group_by(fishery, crab_year) %>%
  summarise(effort = sum(effort, na.rm = T)) %>%
  ungroup -> dir_effort


# retained catch ----

get_retained_catch(ft_data = ft_statarea) %>% 
  write_csv("./bbrkc/output/2025/retained_catch.csv")

# total catch ----

get_total_catch(pot_data = pot_sum, crab_data = obs_meas, ft_data = dir_effort, stock = "BBRKC") %>%
  write_csv("./bbrkc/output/2025/total_catch.csv")

# crab fishery discards ----

get_discards(retained_catch = get_retained_catch(ft_data = ft_statarea),
             total_catch = get_total_catch(pot_data = pot_sum, crab_data = obs_meas, ft_data = dir_effort, stock = "BBRKC"),
             stock = "BBRKC") %>%
  write_csv("./bbrkc/output/2025/discards.csv")

# retained size comp ----

get_dockside_comp(data = dock, by = NULL) %>% 
  write_csv("./bbrkc/output/2025/retained_catch_composition.csv")

# observer size comp ----

get_observer_comp(data = obs_meas, by = "sex") -> obs_comp

## directed fishery
obs_comp %>% filter(substring(fishery, 1, 2) == "TR") %>%
  write_csv("./bbrkc/output/2025/directed_total_composition.csv")

## e166 tanner crab
obs_comp %>% filter(substring(fishery, 1, 2) == "TT") %>%
  write_csv("./bbrkc/output/2025/tanner_bycatch_composition.csv")

About

R library for summary of BSAI crab fishery data from fish tickets and the shellfish observer program

Resources

License

Unknown, MIT licenses found

Licenses found

Unknown
LICENSE
MIT
LICENSE.md

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages