## ----message=FALSE, echo=FALSE------------------------------------------------ library(gadget3) library(dplyr) if (nzchar(Sys.getenv('G3_TEST_TMB'))) options(gadget3.tmb.work_dir = gadget3:::vignette_base_dir('work_dir')) set.seed(123) ## ----message=FALSE, echo=FALSE------------------------------------------------ library(dplyr) area_names <- g3_areas(c('IXa', 'IXb')) fish <- g3_stock("fish", seq(5L, 25L, 5)) |> g3s_livesonareas(area_names["IXa"]) |> g3s_age(1L, 5L) ## ----------------------------------------------------------------------------- # TODO: This isn't a brilliantly-named example, something else? # Generate random data expand.grid(year = 1990:1994, step = 3, area = 'IXa') |> # Fill in a number column with total numbers in that year/step/area combination mutate(number = runif(n(), min = 10000, max = 100000)) -> dist_si_acoustic actions_likelihood_si_acoustic <- list( g3l_abundancedistribution( "dist_si_acoustic", obs_data = dist_si_acoustic, stocks = list(fish), function_f = g3l_distribution_surveyindices_log(alpha = NULL, beta = 1), area_group = area_names, report = TRUE, nll_breakdown = TRUE), NULL) ## ----------------------------------------------------------------------------- g3_distribution_preview(read.table(header = TRUE, text=" year number 1999 1000 2000 1002 2002 1004 2003 1008 ")) ## ----------------------------------------------------------------------------- g3_distribution_preview(read.table(header = TRUE, text=" year step number 1999 2 1020 2000 2 2040 2001 3 1902 ")) ## ----------------------------------------------------------------------------- g3_distribution_preview(read.table(header = TRUE, text=" year length number 1999 [0,10) 1023 1999 [10,20) 2938 1999 [20,30) 3948 1999 [30,40) 3855 2000 [0,10) 1023 2000 [10,20) 2938 # NB: No [10,30) 2000 [30,40) 3855 ")) ## ----------------------------------------------------------------------------- # Generate an unaggregated length distribution ldist.lln.raw <- data.frame( year = c(1999, 2000), length = sample(10:75, 100, replace = TRUE), number = 1, stringsAsFactors = FALSE) # Group length into 10-long bins ldist.lln.raw |> dplyr::group_by( year = year, length = cut(length, breaks = seq(10, 100, by = 10), right = FALSE) ) |> dplyr::summarise(number = sum(number), .groups = 'keep') -> ldist.lln.agg ldist.lln.agg # NB: The last 2 bins are empty, but because cut() creates a factor column, # gadget3 knows about them even though they don't appear in the data. g3_distribution_preview(ldist.lln.agg) ## ----eval=nzchar(Sys.getenv('G3_TEST_TMB'))----------------------------------- # # Import data into a temporary database # library(mfdb) # mdb <- mfdb(tempfile(fileext=".duckdb")) # ldist.lln.raw$month <- 1 # ldist.lln.raw$areacell <- 'all' # NB: We have to have an areacell mapping for MFDB # mfdb_import_area(mdb, data.frame(name = c('all'), size = c(5))) # mfdb_import_survey(mdb, ldist.lln.raw) # # # Use mfdb_sample_count to extract & group in the same manner as above # ldist.lln.agg <- mfdb_sample_count(mdb, c('length'), list( # year=1999:2000, # length = mfdb_interval("len", seq(10, 100, by = 10)) ))[[1]] # g3_distribution_preview(ldist.lln.agg, area_group = c(all=1)) # # mfdb_disconnect(mdb) ## ----------------------------------------------------------------------------- g3_distribution_preview(read.table(header = TRUE, text=" year age length number 1999 1 [0,10) 1026 1999 1 [10,20) 2936 1999 1 [20,30) 3962 1999 1 [30,40) 3863 1999 2 [0,10) 1026 1999 2 [10,20) 2936 1999 2 [20,30) 3962 1999 2 [30,40) 3863 ")) ## ----------------------------------------------------------------------------- g3_distribution_preview(read.table(header = TRUE, text=" year age length number 1999 [1,1] [0,10) 1026 1999 [1,1] [10,20) 2936 1999 [1,1] [20,30) 3962 1999 [1,1] [30,40) 3863 1999 [2,4] [0,10) 1011 # Missing [2,4] [10,20) 1999 [2,4] [20,30) 3946 1999 [2,4] [30,40) 3872 ")) ## ----------------------------------------------------------------------------- area_names <- g3_areas(c('IXa', 'IXb', 'IXc')) g3_distribution_preview(read.table(header = TRUE, text=" year area number 1999 IXa 1000 1999 IXb 4305 2000 IXa 7034 2000 IXb 2381 2001 IXb 3913 "), area_group = area_names)[length = '0:Inf',,] ## ----------------------------------------------------------------------------- st_imm <- g3_stock(c(species = 'fish', 'imm'), 1:10) st_mat <- g3_stock(c(species = 'fish', 'mat'), 1:10) g3_distribution_preview(read.table(header = TRUE, text=" year stock number 1999 fish_imm 1000 1999 fish_mat 4305 2000 fish_imm 7034 2000 fish_mat 2381 2001 fish_mat 3913 "), stocks = list(st_imm, st_mat))[length = '0:Inf',,] ## ----------------------------------------------------------------------------- stocks <- list( g3_stock(c(species = 'fish', 'imm', 'f'), 1:10), g3_stock(c(species = 'fish', 'imm', 'm'), 1:10), g3_stock(c(species = 'fish', 'mat', 'f'), 1:10), g3_stock(c(species = 'fish', 'mat', 'm'), 1:10) ) drop(g3_distribution_preview(read.table(header = TRUE, text=" year stock number 1999 imm 1000 1999 mat 4305 2000 imm 7034 2000 mat 2381 "), stocks = stocks)) ## ----------------------------------------------------------------------------- drop(g3_distribution_preview(read.table(header = TRUE, text=" year stock number 1999 fish_f 1000 1999 fish_m 4305 2000 fish_f 7034 2000 fish_m 2381 "), stocks = stocks)) ## ----------------------------------------------------------------------------- # NB: Wrong! drop(g3_distribution_preview(read.table(header = TRUE, text=" year stock number 1999 f 1000 1999 imm 4305 2000 f 7034 2000 imm 2381 "), stocks = stocks)) ## ----------------------------------------------------------------------------- fleets <- list( g3_fleet(c('comm', country = 'se')), g3_fleet(c('comm', country = 'fi')), g3_fleet(c('surv', country = 'se')) ) g3_distribution_preview(read.table(header = TRUE, text=" year fleet number 1999 comm 1000 1999 surv_se 4305 2000 comm 7034 2000 surv_se 2381 2001 surv_se 3913 "), fleets = fleets)[length = '0:Inf',,] ## ----------------------------------------------------------------------------- predators <- list( g3_stock(c('seal', 'imm', 'f'), 10:20), g3_stock(c('seal', 'mat', 'f'), 10:20), g3_stock(c('seal', 'imm', 'm'), 10:20), g3_stock(c('seal', 'mat', 'm'), 10:20) ) drop(g3_distribution_preview(read.table(header = TRUE, text=" year predator number 1999 seal_f 1000 1999 seal_m 4305 2000 seal_f 7034 2000 seal_m 2381 "), predators = predators))