Skip to content

Commit

Permalink
mbar, fbar, zbar now accept min and max arguments
Browse files Browse the repository at this point in the history
  • Loading branch information
iagomosqueira committed Jul 11, 2024
1 parent 50239b7 commit 5dac550
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 67 deletions.
2 changes: 1 addition & 1 deletion DESCRIPTION
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Package: FLCore
Title: Core Package of FLR, Fisheries Modelling in R
Version: 2.6.20.9201
Version: 2.6.20.9204
Authors@R: c(
person("Iago", "Mosqueira", email = "iago.mosqueira@wur.nl",
role = "cre", comment=c(c(ORCID = "0000-0002-3252-0591"))),
Expand Down
105 changes: 39 additions & 66 deletions R/FLStock.R
Original file line number Diff line number Diff line change
Expand Up @@ -411,48 +411,38 @@ setMethod("tb", signature(object="FLStock"),

# fbar {{{
setMethod("fbar", signature(object="FLStock"),
function(object, ...) {

rng <- range(object)
function(object, min=range(object, 'minfbar'), max=range(object, 'maxfbar')) {

if (is.na(rng["minfbar"]))
rng["minfbar"] <- rng["min"]
if(is.na(min))
min <- range(object, 'min')

if (is.na(rng["maxfbar"]))
rng["maxfbar"] <- rng["max"]
if(is.na(max))
max <- range(object, 'max')

rng["minfbar"] <- max(rng["min"], min(rng["max"], rng["minfbar"]))
rng["maxfbar"] <- max(rng["min"], min(rng["max"], rng["maxfbar"]))

if(units(harvest(object)) == 'f' || units(harvest(object)) == 'hr')
{
return(quantMeans(harvest(object)[as.character(rng["minfbar"]:rng["maxfbar"]),]))
} else
stop("Correct units (f or hr) not specified in the harvest slot")
}
if(units(harvest(object)) == 'f' || units(harvest(object)) == 'hr') {
return(quantMeans(harvest(object)[as.character(seq(min, max)),]))
} else {
stop("Correct units (f or hr) not specified in the harvest slot")
}
}
) # }}}

# zbar {{{
setMethod("zbar", signature(object="FLStock"),
function(object, ...) {
function(object, min=range(object, 'minfbar'), max=range(object, 'maxfbar')) {

rng <- range(object)

if (is.na(rng["minfbar"]))
rng["minfbar"] <- rng["min"]
if(is.na(min))
min <- range(object, 'min')

if (is.na(rng["maxfbar"]))
rng["maxfbar"] <- rng["max"]

rng["minfbar"] <- max(rng["min"], min(rng["max"], rng["minfbar"]))
rng["maxfbar"] <- max(rng["min"], min(rng["max"], rng["maxfbar"]))
if(is.na(max))
max <- range(object, 'max')

if(units(harvest(object)) == 'f' || units(harvest(object)) == 'hr')
{
return(quantMeans(z(object)[as.character(rng["minfbar"]:rng["maxfbar"]),]))
} else
stop("Correct units (f or hr) not specified in the harvest slot")
}
if(units(harvest(object)) == 'f' || units(harvest(object)) == 'hr') {
return(quantMeans(z(object)[as.character(seq(min, max)),]))
} else {
stop("Correct units (f or hr) not specified in the harvest slot")
}
}
) # }}}

# hr {{{
Expand Down Expand Up @@ -482,40 +472,19 @@ setMethod("hr", signature(object="FLStock"),
)
# }}}

# mbar {{{

#' Computes the mean natural mortality acros the fully selected ages
#'
#' Equivalent to the mean fishing mortality metric returned by 'fbar', 'mbar'
#' calculates the mean natural mortality across the ages inside the range defined
#' by 'minfbar' and 'maxfbar'.
#'
#' @param object An object of class 'FLStock'.
#'
#' @return An object of class 'FLQuant'.
#'
#' @author The FLR Team, proposal by H. Winker.
#' @seealso \link{fbar}
#' @examples
#' data(ple4)
#' mbar(ple4)
# mbar {{{
setMethod("mbar", signature(object="FLStock"),
function(object, min=range(object, 'minfbar'), max=range(object, 'maxfbar')) {

mbar <- function(object, ...) {

rng <- range(object)

if (is.na(rng["minfbar"]))
rng["minfbar"] <- rng["min"]

if (is.na(rng["maxfbar"]))
rng["maxfbar"] <- rng["max"]
if(is.na(min))
min <- range(object, 'min')

rng["minfbar"] <- max(rng["min"], min(rng["max"], rng["minfbar"]))
rng["maxfbar"] <- max(rng["min"], min(rng["max"], rng["maxfbar"]))
if(is.na(max))
max <- range(object, 'max')

return(quantMeans(m(object)[as.character(rng["minfbar"]:rng["maxfbar"]),]))
}
# }}}
return(quantMeans(m(object)[as.character(seq(min, max)),]))
}
) # }}}

# meanage {{{

Expand Down Expand Up @@ -1829,10 +1798,14 @@ biomass_spawn <- function(x) {
harvest.spwn(x) + m(x) * m.spwn(x))) * stock.wt(x)))
}

biomass <- function(x) {
stock(x)
}
# }}}

# biomass {{{
setMethod("biomass", signature(x="FLStock"),
function(x) {
stock(x)
}
)
# }}}

# production {{{
Expand Down
4 changes: 4 additions & 0 deletions R/genericMethods.R
Original file line number Diff line number Diff line change
Expand Up @@ -867,6 +867,10 @@ setGeneric("computeHarvest", function(object, catch, ...)
setGeneric("fbar", function(object, ...)
standardGeneric("fbar"))

# mbar
setGeneric("mbar", function(object, ...)
standardGeneric("mbar"))

# zbar
setGeneric("zbar", function(object, ...)
standardGeneric("zbar"))
Expand Down

0 comments on commit 5dac550

Please sign in to comment.