Skip to content

Commit e250c76

Browse files
committed
Additional error messages in matchBiomasses() and matchNumbers()
1 parent a763a7f commit e250c76

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

R/match.R

+25
Original file line numberDiff line numberDiff line change
@@ -48,16 +48,27 @@ matchBiomasses <- function(params, species = NULL) {
4848
if (length(species) == 0) {
4949
return(params)
5050
}
51+
52+
error_message <- ""
5153
for (sp in seq_len(nrow(params@species_params))[species]) {
5254
cutoff <- params@species_params$biomass_cutoff[[sp]]
5355
if (is.null(cutoff) || is.na(cutoff)) {
5456
cutoff <- 0
5557
}
5658
total <- sum((params@initial_n[sp, ] * params@w * params@dw)
5759
[params@w >= cutoff])
60+
if (!(total > 0)) {
61+
error_message <- paste(
62+
error_message, params@species_params$species[[sp]],
63+
"does not grow up to the biomass_cutoff size of",
64+
cutoff, "grams.\n")
65+
}
5866
factor <- params@species_params$biomass_observed[[sp]] / total
5967
params@initial_n[sp, ] <- params@initial_n[sp, ] * factor
6068
}
69+
if (error_message != "") {
70+
stop(error_message)
71+
}
6172

6273
setBevertonHolt(params)
6374
}
@@ -112,16 +123,30 @@ matchNumbers <- function(params, species = NULL) {
112123
return.logical = TRUE) &
113124
!is.na(params@species_params$number_observed) &
114125
params@species_params$number_observed > 0
126+
if (length(species) == 0) {
127+
return(params)
128+
}
129+
130+
error_message <- ""
115131
for (sp in seq_len(nrow(params@species_params))[species]) {
116132
cutoff <- params@species_params$number_cutoff[[sp]]
117133
if (is.null(cutoff) || is.na(cutoff)) {
118134
cutoff <- 0
119135
}
120136
total <- sum((params@initial_n[sp, ] * params@dw)
121137
[params@w >= cutoff])
138+
if (!(total > 0)) {
139+
error_message <- paste(
140+
error_message, params@species_params$species[[sp]],
141+
"does not grow up to the biomass_cutoff size of",
142+
cutoff, "grams.\n")
143+
}
122144
factor <- params@species_params$number_observed[[sp]] / total
123145
params@initial_n[sp, ] <- params@initial_n[sp, ] * factor
124146
}
147+
if (error_message != "") {
148+
stop(error_message)
149+
}
125150

126151
setBevertonHolt(params)
127152
}

tests/testthat/test-match.R

+7
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,14 @@ test_that("matchBiomasses works", {
55
expect_identical(matchBiomasses(params), params)
66
species_params(params)$biomass_observed <- NA
77
expect_unchanged(matchBiomasses(params), params)
8+
89
# Does nothing if observed already equals model
910
species_params(params)$biomass_cutoff <- 1e-4
1011
biomass_actual <-
1112
rowSums(sweep(params@initial_n, 2, params@w * params@dw, "*"))
1213
species_params(params)$biomass_observed <- biomass_actual
1314
expect_unchanged(matchBiomasses(params), params)
15+
1416
# Even if only partially observed
1517
species_params(params)$biomass_observed[1:5] <- NA
1618
expect_unchanged(matchBiomasses(params), params)
@@ -25,6 +27,11 @@ test_that("matchBiomasses works", {
2527
expect_equal(params2@initial_n[1:5, ], params@initial_n[1:5, ])
2628
# and unselected species don't change
2729
expect_equal(params2@initial_n[10:12, ], params@initial_n[10:12, ])
30+
31+
# Throws an error if biomass_cutoff > w_max
32+
params@species_params$biomass_cutoff[6] <- 1e16
33+
expect_error(matchBiomasses(params),
34+
"Whiting does not grow up to the biomass_cutoff")
2835
})
2936

3037
test_that("matchNumbers works", {

0 commit comments

Comments
 (0)