From 4666debd169d72d36f5ea997855a95b3c2109eda Mon Sep 17 00:00:00 2001 From: Gustav W Delius Date: Sat, 22 Nov 2025 09:25:55 +0000 Subject: [PATCH 1/2] Convert manipulate_species functions to S3 methods --- NAMESPACE | 8 +++++ R/manipulate_species.R | 68 +++++++++++++++++++++++++++++++++++++----- 2 files changed, 68 insertions(+), 8 deletions(-) diff --git a/NAMESPACE b/NAMESPACE index 96b5af2f..74d5226e 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -4,6 +4,8 @@ S3method(age_mat,MizerParams) S3method(age_mat_vB,MizerParams) S3method(age_mat_vB,data.frame) S3method(age_mat_vB,default) +S3method(addSpecies,MizerParams) +S3method(addSpecies,default) S3method(plotBiomass,MizerSim) S3method(plotDiet,MizerParams) S3method(plotDiet,MizerSim) @@ -19,6 +21,12 @@ S3method(plotSpectra,MizerParams) S3method(plotSpectra,MizerSim) S3method(plotYield,MizerSim) S3method(plotYieldGear,MizerSim) +S3method(removeSpecies,MizerParams) +S3method(removeSpecies,default) +S3method(renameGear,MizerParams) +S3method(renameGear,default) +S3method(renameSpecies,MizerParams) +S3method(renameSpecies,default) export("catchability<-") export("diffusion<-") export("ext_encounter<-") diff --git a/R/manipulate_species.R b/R/manipulate_species.R index 2ebf23c1..757f29be 100644 --- a/R/manipulate_species.R +++ b/R/manipulate_species.R @@ -45,8 +45,6 @@ #' The new species will have a reproduction level of 1/4, this can then be #' changed with [setBevertonHolt()] #' -#' @seealso [removeSpecies()] -#' @export #' @examples #' params <- newTraitParams() #' species_params <- data.frame( @@ -61,9 +59,18 @@ #' ) #' params <- addSpecies(params, species_params) #' plotSpectra(params) -addSpecies <- function(params, species_params, - gear_params = data.frame(), initial_effort, - interaction) { +#' @seealso [removeSpecies()] +#' @export +#' @rdname addSpecies +addSpecies <- function(params, ...) { + UseMethod("addSpecies") +} + +#' @rdname addSpecies +#' @export +addSpecies.MizerParams <- function(params, species_params, + gear_params = data.frame(), initial_effort, + interaction) { # check validity of parameters ---- params <- validParams(params) given_species_params <- validGivenSpeciesParams(species_params) @@ -303,6 +310,12 @@ addSpecies <- function(params, species_params, return(p) } +#' @rdname addSpecies +#' @export +addSpecies.default <- function(params, ...) { + stop("The first argument to addSpecies() must be a MizerParams object.") +} + #' Remove species #' @@ -320,12 +333,19 @@ addSpecies <- function(params, species_params, #' #' @return An object of type \linkS4class{MizerParams} #' @export +#' @rdname removeSpecies #' @examples #' params <- NS_params #' species_params(params)$species #' params <- removeSpecies(params, c("Cod", "Haddock")) #' species_params(params)$species -removeSpecies <- function(params, species) { +removeSpecies <- function(params, ...) { + UseMethod("removeSpecies") +} + +#' @rdname removeSpecies +#' @export +removeSpecies.MizerParams <- function(params, species) { params <- validParams(params) species <- valid_species_arg(params, species, return.logical = TRUE) @@ -386,6 +406,12 @@ removeSpecies <- function(params, species) { return(p) } +#' @rdname removeSpecies +#' @export +removeSpecies.default <- function(params, ...) { + stop("The first argument to removeSpecies() must be a MizerParams object.") +} + #' Rename species #' @@ -401,11 +427,18 @@ removeSpecies <- function(params, species) { #' #' @return An object of type \linkS4class{MizerParams} #' @export +#' @rdname renameSpecies #' @examples #' replace <- c(Cod = "Kabeljau", Haddock = "Schellfisch") #' params <- renameSpecies(NS_params, replace) #' species_params(params)$species -renameSpecies <- function(params, replace) { +renameSpecies <- function(params, ...) { + UseMethod("renameSpecies") +} + +#' @rdname renameSpecies +#' @export +renameSpecies.MizerParams <- function(params, replace) { params <- validParams(params) replace[] <- as.character(replace) to_replace <- names(replace) @@ -471,6 +504,12 @@ renameSpecies <- function(params, replace) { return(params) } +#' @rdname renameSpecies +#' @export +renameSpecies.default <- function(params, ...) { + stop("The first argument to renameSpecies() must be a MizerParams object.") +} + #' Rename gears #' @@ -487,11 +526,18 @@ renameSpecies <- function(params, replace) { #' #' @return An object of type \linkS4class{MizerParams} #' @export +#' @rdname renameGear #' @examples #' replace <- c(Industrial = "Trawl", Otter = "Beam_Trawl") #' params <- renameGear(NS_params, replace) #' gear_params(params)$gear -renameGear <- function(params, replace) { +renameGear <- function(params, ...) { + UseMethod("renameGear") +} + +#' @rdname renameGear +#' @export +renameGear.MizerParams <- function(params, replace) { params <- validParams(params) replace[] <- as.character(replace) to_replace <- names(replace) @@ -531,3 +577,9 @@ renameGear <- function(params, replace) { params@time_modified <- lubridate::now() return(params) } + +#' @rdname renameGear +#' @export +renameGear.default <- function(params, ...) { + stop("The first argument to renameGear() must be a MizerParams object.") +} From 7c59ce20855552c436c1d9f8e2f6c5a9bd42494f Mon Sep 17 00:00:00 2001 From: Gustav Delius Date: Sat, 22 Nov 2025 09:39:46 +0000 Subject: [PATCH 2/2] Document and add default method for `age_mat()` --- NAMESPACE | 5 +++-- R/age_mat.R | 11 ++++++++--- man/addSpecies.Rd | 8 +++++++- man/age_mat.Rd | 7 +++++-- man/removeSpecies.Rd | 8 +++++++- man/renameGear.Rd | 8 +++++++- man/renameSpecies.Rd | 8 +++++++- 7 files changed, 44 insertions(+), 11 deletions(-) diff --git a/NAMESPACE b/NAMESPACE index 74d5226e..ef9f30cb 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -1,11 +1,12 @@ # Generated by roxygen2: do not edit by hand +S3method(addSpecies,MizerParams) +S3method(addSpecies,default) S3method(age_mat,MizerParams) +S3method(age_mat,default) S3method(age_mat_vB,MizerParams) S3method(age_mat_vB,data.frame) S3method(age_mat_vB,default) -S3method(addSpecies,MizerParams) -S3method(addSpecies,default) S3method(plotBiomass,MizerSim) S3method(plotDiet,MizerParams) S3method(plotDiet,MizerSim) diff --git a/R/age_mat.R b/R/age_mat.R index 17792bae..6d9bcf1b 100644 --- a/R/age_mat.R +++ b/R/age_mat.R @@ -66,14 +66,13 @@ age_mat_vB.default <- function(object, ...) { #' age_mat(NS_params) #' @rdname age_mat #' @export -age_mat <- function(object, ...) { +age_mat <- function(params, ...) { UseMethod("age_mat") } #' @rdname age_mat #' @export -age_mat.MizerParams <- function(object, ...) { - params <- object +age_mat.MizerParams <- function(params, ...) { sp <- params@species_params no_sp <- nrow(sp) @@ -87,3 +86,9 @@ age_mat.MizerParams <- function(object, ...) { a_mat } + +#' @rdname age_mat +#' @export +age_mat.default <- function(params, ...) { + stop("The first argument must be a MizerParams object.") +} diff --git a/man/addSpecies.Rd b/man/addSpecies.Rd index f1433eff..80ec2001 100644 --- a/man/addSpecies.Rd +++ b/man/addSpecies.Rd @@ -2,15 +2,21 @@ % Please edit documentation in R/manipulate_species.R \name{addSpecies} \alias{addSpecies} +\alias{addSpecies.MizerParams} +\alias{addSpecies.default} \title{Add new species} \usage{ -addSpecies( +addSpecies(params, ...) + +\method{addSpecies}{MizerParams}( params, species_params, gear_params = data.frame(), initial_effort, interaction ) + +\method{addSpecies}{default}(params, ...) } \arguments{ \item{params}{A mizer params object for the original system.} diff --git a/man/age_mat.Rd b/man/age_mat.Rd index b3e8778e..5be1b1c6 100644 --- a/man/age_mat.Rd +++ b/man/age_mat.Rd @@ -3,11 +3,14 @@ \name{age_mat} \alias{age_mat} \alias{age_mat.MizerParams} +\alias{age_mat.default} \title{Calculate age at maturity} \usage{ -age_mat(object, ...) +age_mat(params, ...) -\method{age_mat}{MizerParams}(object, ...) +\method{age_mat}{MizerParams}(params, ...) + +\method{age_mat}{default}(params, ...) } \arguments{ \item{params}{A MizerParams object} diff --git a/man/removeSpecies.Rd b/man/removeSpecies.Rd index 1d971537..d8d0933e 100644 --- a/man/removeSpecies.Rd +++ b/man/removeSpecies.Rd @@ -2,9 +2,15 @@ % Please edit documentation in R/manipulate_species.R \name{removeSpecies} \alias{removeSpecies} +\alias{removeSpecies.MizerParams} +\alias{removeSpecies.default} \title{Remove species} \usage{ -removeSpecies(params, species) +removeSpecies(params, ...) + +\method{removeSpecies}{MizerParams}(params, species) + +\method{removeSpecies}{default}(params, ...) } \arguments{ \item{params}{A mizer params object for the original system.} diff --git a/man/renameGear.Rd b/man/renameGear.Rd index a798021f..5ac9324e 100644 --- a/man/renameGear.Rd +++ b/man/renameGear.Rd @@ -2,9 +2,15 @@ % Please edit documentation in R/manipulate_species.R \name{renameGear} \alias{renameGear} +\alias{renameGear.MizerParams} +\alias{renameGear.default} \title{Rename gears} \usage{ -renameGear(params, replace) +renameGear(params, ...) + +\method{renameGear}{MizerParams}(params, replace) + +\method{renameGear}{default}(params, ...) } \arguments{ \item{params}{A mizer params object} diff --git a/man/renameSpecies.Rd b/man/renameSpecies.Rd index 8d7b9c08..23e8fb99 100644 --- a/man/renameSpecies.Rd +++ b/man/renameSpecies.Rd @@ -2,9 +2,15 @@ % Please edit documentation in R/manipulate_species.R \name{renameSpecies} \alias{renameSpecies} +\alias{renameSpecies.MizerParams} +\alias{renameSpecies.default} \title{Rename species} \usage{ -renameSpecies(params, replace) +renameSpecies(params, ...) + +\method{renameSpecies}{MizerParams}(params, replace) + +\method{renameSpecies}{default}(params, ...) } \arguments{ \item{params}{A mizer params object}