From f18a123e8662ef8fec46d210473bdc69609e7ca9 Mon Sep 17 00:00:00 2001 From: Gustav Delius Date: Tue, 30 Jun 2026 11:06:43 +0100 Subject: [PATCH 1/2] Refactor get_gamma_default, get_f0_default, and get_ks_default to S3 generics --- NAMESPACE | 3 ++ R/species_params.R | 41 ++++++++++++++++++++++------ man/get_f0_default.Rd | 5 ++-- man/get_gamma_default.Rd | 3 +- man/get_ks_default.Rd | 5 ++-- tests/testthat/test-species_params.R | 5 ++++ 6 files changed, 48 insertions(+), 14 deletions(-) diff --git a/NAMESPACE b/NAMESPACE index c7e805858..5b0c96c98 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -136,9 +136,12 @@ S3method(getYield,MizerParams) S3method(getYield,MizerSim) S3method(getYieldGear,MizerParams) S3method(getYieldGear,MizerSim) +S3method(get_f0_default,MizerParams) +S3method(get_gamma_default,MizerParams) S3method(get_h_default,MizerParams) S3method(get_h_default,data.frame) S3method(get_h_default,species_params) +S3method(get_ks_default,MizerParams) S3method(given_species_params,MizerParams) S3method(given_species_params,MizerSim) S3method(given_species_params,data.frame) diff --git a/R/species_params.R b/R/species_params.R index d4a021ac8..6faffbaaf 100644 --- a/R/species_params.R +++ b/R/species_params.R @@ -637,8 +637,15 @@ get_h_default.data.frame <- function(object) { #' @export #' @concept helper #' @family functions calculating defaults -get_gamma_default <- function(params) { - assert_that(is(params, "MizerParams")) +get_gamma_default <- function(object) { + UseMethod("get_gamma_default") +} + +#' @rdname get_gamma_default +#' @usage NULL +#' @export +get_gamma_default.MizerParams <- function(object) { + params <- object species_params <- params@species_params %>% set_species_param_default("f0", 0.6) if (!("gamma" %in% colnames(species_params))) { @@ -683,6 +690,7 @@ get_gamma_default <- function(params) { return(species_params$gamma) } + #' Get default value for f0 #' #' Fills in any missing values for f0 so that if the prey abundance was @@ -695,13 +703,20 @@ get_gamma_default <- function(params) { #' parameter data frame, the `f0` values is kept as provided in the species #' parameter data frame or it is set to 0.6 if it is not provided. #' -#' @param params A MizerParams object +#' @param object A MizerParams object #' @return A vector with the values of f0 for all species #' @export #' @concept helper #' @family functions calculating defaults -get_f0_default <- function(params) { - assert_that(is(params, "MizerParams")) +get_f0_default <- function(object) { + UseMethod("get_f0_default") +} + +#' @rdname get_f0_default +#' @usage NULL +#' @export +get_f0_default.MizerParams <- function(object) { + params <- object species_params <- params@species_params %>% set_species_param_default("f0", 0.6) if (!("gamma" %in% colnames(species_params))) { @@ -736,6 +751,7 @@ get_f0_default <- function(params) { return(species_params$f0) } + #' Get default value for `ks` #' #' Fills in any missing values for `ks` so that the critical feeding level needed @@ -743,14 +759,21 @@ get_f0_default <- function(params) { #' parameter data frame. If that column is not provided the default critical #' feeding level \eqn{f_c = 0.2} is used. #' -#' @param params A MizerParams object +#' @param object A MizerParams object #' @return A vector with the values of ks for all species #' @export #' @concept helper #' @family functions calculating defaults -get_ks_default <- function(params) { - assert_that(is(params, "MizerParams"), - "n" %in% names(params@species_params), +get_ks_default <- function(object) { + UseMethod("get_ks_default") +} + +#' @rdname get_ks_default +#' @usage NULL +#' @export +get_ks_default.MizerParams <- function(object) { + params <- object + assert_that("n" %in% names(params@species_params), "p" %in% names(params@species_params)) if (!"h" %in% names(params@species_params) || any(is.na(params@species_params[["h"]]))) { diff --git a/man/get_f0_default.Rd b/man/get_f0_default.Rd index df7e0d6dd..9dd3958ec 100644 --- a/man/get_f0_default.Rd +++ b/man/get_f0_default.Rd @@ -2,12 +2,13 @@ % Please edit documentation in R/species_params.R \name{get_f0_default} \alias{get_f0_default} +\alias{get_f0_default.MizerParams} \title{Get default value for f0} \usage{ -get_f0_default(params) +get_f0_default(object) } \arguments{ -\item{params}{A MizerParams object} +\item{object}{A MizerParams object} } \value{ A vector with the values of f0 for all species diff --git a/man/get_gamma_default.Rd b/man/get_gamma_default.Rd index e14571b1f..66c3efb07 100644 --- a/man/get_gamma_default.Rd +++ b/man/get_gamma_default.Rd @@ -2,9 +2,10 @@ % Please edit documentation in R/species_params.R \name{get_gamma_default} \alias{get_gamma_default} +\alias{get_gamma_default.MizerParams} \title{Get default value for gamma} \usage{ -get_gamma_default(params) +get_gamma_default(object) } \arguments{ \item{params}{A MizerParams object} diff --git a/man/get_ks_default.Rd b/man/get_ks_default.Rd index 12fbd0eab..abc8eb2f0 100644 --- a/man/get_ks_default.Rd +++ b/man/get_ks_default.Rd @@ -2,12 +2,13 @@ % Please edit documentation in R/species_params.R \name{get_ks_default} \alias{get_ks_default} +\alias{get_ks_default.MizerParams} \title{Get default value for \code{ks}} \usage{ -get_ks_default(params) +get_ks_default(object) } \arguments{ -\item{params}{A MizerParams object} +\item{object}{A MizerParams object} } \value{ A vector with the values of ks for all species diff --git a/tests/testthat/test-species_params.R b/tests/testthat/test-species_params.R index 4de130eaa..1569349b2 100644 --- a/tests/testthat/test-species_params.R +++ b/tests/testthat/test-species_params.R @@ -334,4 +334,9 @@ test_that("get_h_default S3 methods work", { expect_equal(h_params, h_sp) expect_equal(h_params, h_df) + + # Test other default S3 generics + expect_equal(get_gamma_default(params), get_gamma_default.MizerParams(params)) + expect_equal(get_f0_default(params), get_f0_default.MizerParams(params)) + expect_equal(get_ks_default(params), get_ks_default.MizerParams(params)) }) From c5fa1dd03d9e869fb789d80017dfbdc985e967ef Mon Sep 17 00:00:00 2001 From: Gustav Delius Date: Tue, 30 Jun 2026 11:25:46 +0100 Subject: [PATCH 2/2] Update roxygen param doc for get_gamma_default to match signature --- R/species_params.R | 2 +- man/get_gamma_default.Rd | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/R/species_params.R b/R/species_params.R index 6faffbaaf..5106a3752 100644 --- a/R/species_params.R +++ b/R/species_params.R @@ -632,7 +632,7 @@ get_h_default.data.frame <- function(object) { #' spectrum described by the power law \eqn{\kappa w^{-\lambda}} achieve a #' feeding level \eqn{f_0}. Only for internal use. #' -#' @param params A MizerParams object +#' @param object A MizerParams object #' @return A vector with the values of gamma for all species #' @export #' @concept helper diff --git a/man/get_gamma_default.Rd b/man/get_gamma_default.Rd index 66c3efb07..2ac5fa470 100644 --- a/man/get_gamma_default.Rd +++ b/man/get_gamma_default.Rd @@ -8,7 +8,7 @@ get_gamma_default(object) } \arguments{ -\item{params}{A MizerParams object} +\item{object}{A MizerParams object} } \value{ A vector with the values of gamma for all species