Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions CITATION.cff
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ authors:
given-names: "Philipp"
orcid: "https://orcid.org/0009-0002-7697-5536"
title: "pam"
version: 2.0.2
date-released: 2025-07-29
version: 2.1.0
date-released: 2026-04-11
url: "https://github.com/biotoolbox/pam"
doi: "10.32614/CRAN.package.pam"
7 changes: 6 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,9 @@ build:
buildtest:
rm -rf src/tests/testthat/results
make build
R CMD check pam_2.0.2.tar.gz
R CMD check pam_2.1.0.tar.gz

buildtestcran:
rm -rf src/tests/testthat/results
make build
R CMD check --as-cran pam_2.1.0.tar.gz
26 changes: 14 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@ Generated control plots make it possible to check each individual regression fit

## Publications using this package

- Böhm, J., Blindow, I., Gyllenstrand, N., Diewald, W., & Schubert, H. (2025). Sphaerochara canadensis (Charophyceae): A circumpolar species with a high temperature optimum. Journal of Phycology, 00, 1–11. https://doi.org/10.1111/jpy.70111
- J. Böhm, J. Trossen, I. Blindow, and H. Schubert, ‘Impact of temperature and light on the physiology and morphology of *Chara hispida* L. (Charophyceae)’, Aquatic Botany, vol. 206, p. 104022, Sep. 2026, doi: [10.1016/j.aquabot.2026.104022]( https://doi.org/10.1016/j.aquabot.2026.104022).

- J. Böhm, I. Blindow, N. Gyllenstrand, W. Diewald, and H. Schubert, ‘*Sphaerochara canadensis* (Charophyceae): A circumpolar species with a high temperature optimum’, Journal of Phycology, vol. 61, no. 6, pp. 1863–1873, Dec. 2025, doi: [10.1111/jpy.70111]( https://doi.org/10.1111/jpy.70111).

## Test coverage

Expand Down Expand Up @@ -87,7 +89,7 @@ fraction_photosystem_II = 0.5)

#### References

- Heinz Walz GmbH. (2024). *DUAL-PAM-100 DUAL-PAM/F MANUAL, 5th Edition, April 2024, Chapter 7 (pp. 162-172).* Heinz Walz GmbH, Effeltrich, Germany. Available at: [DUAL-PAM-100 Manual](https://www.walz.com/files/downloads/manuals/dual-pam-100/DualPamEd05.pdf)
- Heinz Walz GmbH. (2024). *DUAL-PAM-100 DUAL-PAM/F MANUAL, 5th Edition, April 2024, Chapter 7 (pp. 162-172).* Heinz Walz GmbH, Effeltrich, Germany. Available at: [DUAL-PAM-100 Manual](https://www.walz.com/files/downloads/dualpamed05.pdf)


### read_dual_pam_data()
Expand Down Expand Up @@ -141,7 +143,7 @@ fraction_photosystem_II = 0.5)

#### References

- Heinz Walz GmbH. (2024). *DUAL-PAM-100 DUAL-PAM/F MANUAL, 5th Edition, April 2024, Chapter 7 (pp. 162-172).* Heinz Walz GmbH, Effeltrich, Germany. Available at: [DUAL-PAM-100 Manual](https://www.walz.com/files/downloads/manuals/dual-pam-100/DualPamEd05.pdf)
- Heinz Walz GmbH. (2024). *DUAL-PAM-100 DUAL-PAM/F MANUAL, 5th Edition, April 2024, Chapter 7 (pp. 162-172).* Heinz Walz GmbH, Effeltrich, Germany. Available at: [DUAL-PAM-100 Manual](https://www.walz.com/files/downloads/dualpamed05.pdf)

### read_junior_pam_data()

Expand Down Expand Up @@ -193,7 +195,7 @@ fraction_photosystem_II = 0.5)

#### References

- Heinz Walz GmbH. (2024). *DUAL-PAM-100 DUAL-PAM/F MANUAL, 5th Edition, April 2024, Chapter 7 (pp. 162-172).* Heinz Walz GmbH, Effeltrich, Germany. Available at: [DUAL-PAM-100 Manual](https://www.walz.com/files/downloads/manuals/dual-pam-100/DualPamEd05.pdf)
- Heinz Walz GmbH. (2024). *DUAL-PAM-100 DUAL-PAM/F MANUAL, 5th Edition, April 2024, Chapter 7 (pp. 162-172).* Heinz Walz GmbH, Effeltrich, Germany. Available at: [DUAL-PAM-100 Manual](https://www.walz.com/files/downloads/dualpamed05.pdf)

### vollenweider_generate_regression_ETR_I() and vollenweider_generate_regression_ETR_II()

Expand Down Expand Up @@ -477,7 +479,7 @@ $${alpha} = \frac{{etrmax\\_with\\_photoinhibition}}{{ik\\_with\\_photoinhibitio

- **w**: Not available, here set to `NA_real_`
- **ib**: Not available, here set to `NA_real_`
- **etrmax_with_without_ratio**: Ratio of `etrmax_with_photoinhibition` to `etrmax_without_photoinhibition` and `ik_with_photoinhibition` to `ik_without_photoinhibition`, transfered as: `pmax_popt_and_ik_iik_ratio`
- **etrmax_without_with_ratio**: Ratio of `etrmax_without_photoinhibition` / `etrmax_with_photoinhibition` and `ik_without_photoinhibition` / `ik_with_photoinhibition`, transfered as: `pmax_popt_and_ik_iik_ratio`

#### Details

Expand Down Expand Up @@ -519,9 +521,9 @@ Returns a modified model result as a list with the following elements:
- **im_with_photoinhibition**: The PAR at which the maximum electron transport rate is achieved by taking photoinhibition into account, transfered as: `im`
- **w**: Not available, here set to `NA_real_`
- **ib**: Transfered unchange as: `ib`
- **etrmax_with_without_ratio**: Ratio of `etrmax_with_photoinhibition` to `etrmax_without_photoinhibition` and `ik_with_photoinhibition` to `ik_without_photoinhibition`. Calculated as:
- **etrmax_without_with_ratio**: Ratio of `etrmax_without_photoinhibition` / `etrmax_with_photoinhibition` and `ik_without_photoinhibition` / `ik_with_photoinhibition`. Calculated as:

$${{etrmax\\_with\\_without\\_ratio}} = \frac{{etrmax\\_with\\_photoinhibition}}{{etrmax\\_without\\_photoinhibition}}$$
$${{etrmax\\_without\\_with\\_ratio}} = \frac{{etrmax\\_without\\_photoinhibition}}{{etrmax\\_with\\_photoinhibition}}$$

#### Details

Expand Down Expand Up @@ -563,7 +565,7 @@ Returns a modified model result as a list with the following elements:
- **im_with_photoinhibition**: The PAR at which the maximum electron transport rate is achieved by taking photoinhibition into account, transfered as`im`
- **w**: The sharpness of the peak, transfered as `w`
- **ib**: Not available, here set to `NA_real_`
- **etrmax_with_without_ratio**: Not available, here set to `NA_real_`
- **etrmax_without_with_ratio**: Not available, here set to `NA_real_`

#### Details

Expand Down Expand Up @@ -626,9 +628,9 @@ $$ik\\_without\\_photoinhibition = \frac{etrmax\\_without\\_photoinhibition}{alp

- **w**: Not available, here set to `NA_real_`
- **ib**: Not available, here set to `NA_real_`
- **etrmax_with_without_ratio**: Ratio of `etrmax_with_photoinhibition` to `etrmax_without_photoinhibition` and `ik_with_photoinhibition` to `ik_without_photoinhibition`. Calculated as:
- **etrmax_without_with_ratio**: Ratio of `etrmax_without_photoinhibition` / `etrmax_with_photoinhibition` and `ik_without_photoinhibition` / `ik_with_photoinhibition`. Calculated as:

$${{etrmax\\_with\\_without\\_ratio}} = \frac{{etrmax\\_with\\_photoinhibition}}{{etrmax\\_without\\_photoinhibition}}$$
$${{etrmax\\_without\\_with\\_ratio}} = \frac{{etrmax\\_without\\_photoinhibition}}{{etrmax\\_with\\_photoinhibition}}$$

#### Details

Expand Down Expand Up @@ -662,7 +664,7 @@ modified |Eilers and Peeters |Platt |Walsby |Vollenweider
|im_with_photoinhibition |im |im |NA |NA |
|w |w |NA |NA |NA |
|ib |NA |ib |NA |NA |
|etrmax_with_without_ratio |NA |NA |NA |pmax_popt_and_ik_iik_ratio |
|etrmax_without_with_ratio |NA |NA |NA |pmax_popt_and_ik_iik_ratio |

#### Publication-accurate naming and the respective modified naming with additional calculations not included in the original publication

Expand All @@ -684,7 +686,7 @@ modified |Eilers and Peeters |Platt |Walsby |Vollenweider
|im_with_photoinhibition |im |im |im_with_photoinhibition |im_with_photoinhibition |
|w |w |NA |NA |NA |
|ib |NA |ib |NA |NA |
|etrmax_with_without_ratio |NA |etrmax_with_without_ratio |etrmax_with_without_ratio |pmax_popt_and_ik_iik_ratio |
|etrmax_without_with_ratio |NA |etrmax_without_with_ratio |etrmax_without_with_ratio |pmax_popt_and_ik_iik_ratio |

### compare_regression_models_ETR_I() and compare_regression_models_ETR_II()

Expand Down
4 changes: 2 additions & 2 deletions src/DESCRIPTION
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Package: pam
Type: Package
Title: Fast and Efficient Processing of PAM Data
Version: 2.0.2
Version: 2.1.0
Authors@R: c(
person(
"Julien",
Expand All @@ -26,7 +26,7 @@ LazyData: true
Suggests:
testthat (>= 3.0.0)
Config/testthat/edition: 3
RoxygenNote: 7.3.2
RoxygenNote: 7.3.3
Imports:
rlang,
data.table,
Expand Down
2 changes: 1 addition & 1 deletion src/R/eilers_peeters.R
Original file line number Diff line number Diff line change
Expand Up @@ -291,7 +291,7 @@ eilers_peeters_generate_regression_internal <- function(
#' \item \code{im_with_photoinhibition}: The PAR at which the maximum electron transport rate is achieved with photoinhibition, transferred as \code{im}.
#' \item \code{w}: The sharpness of the peak, transferred as \code{w}.
#' \item \code{ib}: Not available, set to \code{NA_real_}.
#' \item \code{etrmax_with_without_ratio}: Not available, set to \code{NA_real_}.
#' \item \code{etrmax_without_with_ratio}: Not available, set to \code{NA_real_}.
#' }
#'
#' @details
Expand Down
4 changes: 2 additions & 2 deletions src/R/platt.R
Original file line number Diff line number Diff line change
Expand Up @@ -299,7 +299,7 @@ platt_generate_regression_internal <- function(
#' \item \code{im_with_photoinhibition}: The PAR at which the maximum electron transport rate is achieved with photoinhibition, transferred as \code{im}.
#' \item \code{w}: Not available, set to \code{NA_real_}.
#' \item \code{ib}: Transferred unchanged as \code{ib}.
#' \item \code{etrmax_with_without_ratio}: Ratio of \code{etrmax_with_photoinhibition} to \code{etrmax_without_photoinhibition}, and \code{ik_with_photoinhibition} to \code{ik_without_photoinhibition}.
#' \item \code{etrmax_without_with_ratio}: Ratio of \code{etrmax_without_photoinhibition} / \code{etrmax_with_photoinhibition}, and \code{ik_without_photoinhibition} / \code{ik_with_photoinhibition}.
#' }
#'
#' @details
Expand Down Expand Up @@ -334,7 +334,7 @@ platt_modified <- function(model_result) {
im_with_photoinhibition = model_result[["im"]],
w = NA_real_,
ib = model_result[["ib"]],
etrmax_with_without_ratio = model_result[["ps"]] / model_result[["pm"]]
etrmax_without_with_ratio = model_result[["ps"]] / model_result[["pm"]]
)

return(result)
Expand Down
4 changes: 2 additions & 2 deletions src/R/util.R
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,7 @@ create_modified_model_result <- function(
im_with_photoinhibition,
w,
ib,
etrmax_with_without_ratio) {
etrmax_without_with_ratio) {
result <- list(
etr_type = etr_type,
etr_regression_data = etr_regression_data,
Expand All @@ -231,7 +231,7 @@ create_modified_model_result <- function(
im_with_photoinhibition = im_with_photoinhibition,
w = w,
ib = ib,
etrmax_with_without_ratio = etrmax_with_without_ratio
etrmax_without_with_ratio = etrmax_without_with_ratio
)
validate_modified_model_result(result)
return(result)
Expand Down
6 changes: 3 additions & 3 deletions src/R/validation.R
Original file line number Diff line number Diff line change
Expand Up @@ -259,9 +259,9 @@ validate_modified_model_result <- function(model_result) {
stop("ib is null or not a valid number")
}

if (is.null(model_result[["etrmax_with_without_ratio"]]) ||
!is.numeric(model_result[["etrmax_with_without_ratio"]])) {
stop("etrmax_with_without_ratio is null or not a valid number")
if (is.null(model_result[["etrmax_without_with_ratio"]]) ||
!is.numeric(model_result[["etrmax_without_with_ratio"]])) {
stop("etrmax_without_with_ratio is null or not a valid number")
}
},
error = function(e) {
Expand Down
12 changes: 6 additions & 6 deletions src/R/vollenweider.R
Original file line number Diff line number Diff line change
Expand Up @@ -33,14 +33,14 @@ vollenweider_default_start_value_n <- 100
#' \item \code{residual_sum_of_squares}: Difference between observed and predicted ETR values, expressed as the sum of squared residuals.
#' \item \code{root_mean_squared_error}: Difference between observed and predicted ETR values, expressed as the root mean squared error.
#' \item \code{relative_root_mean_squared_error}: Difference between observed and predicted ETR values, expressed as the relative root mean squared error, normalized by the mean.
#' \item \code{pmax}: Maximum electron transport rate (\eqn{p_{max}}).
#' \item \code{pmax}: Maximum electron transport rate without photoinhibition (\eqn{p_{max}}).
#' \item \code{a}: Parameter \eqn{a}.
#' \item \code{alpha}: Parameter \eqn{\alpha}.
#' \item \code{n}: Parameter \eqn{n}.
#' \item \code{popt}: Maximum electron transport rate with photoinhibition (\eqn{p_{opt}}).
#' \item \code{ik}: Transition point from light limitation to light saturation without photoinhibition (\eqn{I_k}).
#' \item \code{iik}: Transition point from light limitation to light saturation with photoinhibition (\eqn{I_k^\prime}).
#' \item \code{pmax_popt_and_ik_iik_ratio}: Ratio of \eqn{p_{max}} to \eqn{p_{opt}} and \eqn{I_k} to \eqn{I_k^\prime}.
#' \item \code{pmax_popt_and_ik_iik_ratio}: Ratio of \eqn{p_{max}} / \eqn{p_{opt}} and \eqn{I_k} / \eqn{I_k^\prime}.
#' }
#'
#' @references{
Expand Down Expand Up @@ -91,14 +91,14 @@ vollenweider_generate_regression_ETR_I <- function(
#' \item \code{residual_sum_of_squares}: Difference between observed and predicted ETR values, expressed as the sum of squared residuals.
#' \item \code{root_mean_squared_error}: Difference between observed and predicted ETR values, expressed as the root mean squared error.
#' \item \code{relative_root_mean_squared_error}: Difference between observed and predicted ETR values, expressed as the relative root mean squared error, normalized by the mean.
#' \item \code{pmax}: Maximum electron transport rate (\eqn{p_{max}}).
#' \item \code{pmax}: Maximum electron transport rate without photoinhibition (\eqn{p_{max}}).
#' \item \code{a}: Parameter \eqn{a}.
#' \item \code{alpha}: Parameter \eqn{\alpha}.
#' \item \code{n}: Parameter \eqn{n}.
#' \item \code{popt}: Maximum electron transport rate with photoinhibition (\eqn{p_{opt}}).
#' \item \code{ik}: Transition point from light limitation to light saturation without photoinhibition (\eqn{I_k}).
#' \item \code{iik}: Transition point from light limitation to light saturation with photoinhibition (\eqn{I_k^\prime}).
#' \item \code{pmax_popt_and_ik_iik_ratio}: Ratio of \eqn{p_{max}} to \eqn{p_{opt}} and \eqn{I_k} to \eqn{I_k^\prime}.
#' \item \code{pmax_popt_and_ik_iik_ratio}: Ratio of \eqn{p_{max}} / \eqn{p_{opt}} and \eqn{I_k} / \eqn{I_k^\prime}.
#' }
#'
#' @references{
Expand Down Expand Up @@ -301,7 +301,7 @@ vollenweider_generate_regression_internal <- function(
#' \item \code{im_with_photoinhibition}: The PAR at which the maximum electron transport rate is achieved by taking photoinhibition into account, determined using the regression data from the model.
#' \item \code{w}: Not available, here set to \code{NA_real_}.
#' \item \code{ib}: Transferred unchanged as \code{ib}.
#' \item \code{etrmax_with_without_ratio}: Ratio of \code{etrmax_with_photoinhibition} to \code{etrmax_without_photoinhibition} and \code{ik_with_photoinhibition} to \code{ik_without_photoinhibition}.
#' \item \code{etrmax_without_with_ratio}: Ratio of \code{etrmax_without_photoinhibition} / \code{etrmax_with_photoinhibition} and \code{ik_without_photoinhibition} / \code{ik_with_photoinhibition}.
#' }
#'
#' @details
Expand Down Expand Up @@ -340,7 +340,7 @@ vollenweider_modified <- function(model_result) {
im_with_photoinhibition = im_with_photoinhibition,
w = NA_real_,
ib = NA_real_,
etrmax_with_without_ratio = model_result[["pmax_popt_and_ik_iik_ratio"]]
etrmax_without_with_ratio = model_result[["pmax_popt_and_ik_iik_ratio"]]
)

return(result)
Expand Down
4 changes: 2 additions & 2 deletions src/R/walsby.R
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,7 @@ walsby_generate_regression_internal <- function(
#' \item \code{im_with_photoinhibition}: PAR at the maximum ETR with photoinhibition.
#' \item \code{w}: Not available, set to \code{NA_real_}.
#' \item \code{ib}: Not available, set to \code{NA_real_}.
#' \item \code{etrmax_with_without_ratio}: Ratio of \code{etrmax_with_photoinhibition} to \code{etrmax_without_photoinhibition}.
#' \item \code{etrmax_without_with_ratio}: Ratio of \code{etrmax_without_photoinhibition} / \code{etrmax_with_photoinhibition}.
#' }
#'
#' @details
Expand Down Expand Up @@ -273,7 +273,7 @@ walsby_modified <- function(model_result) {
im_with_photoinhibition = im_with_photoinhibition,
w = NA_real_,
ib = NA_real_,
etrmax_with_without_ratio = model_result[["etr_max"]] / etrmax_with_photoinhibition
etrmax_without_with_ratio = model_result[["etr_max"]] / etrmax_with_photoinhibition
)

return(result)
Expand Down
4 changes: 2 additions & 2 deletions src/inst/CITATION
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ citation <- bibentry(
bibtype = "Manual",
title = "pam: Fast and Efficient Processing of PAM Data",
author = c(person("Julien", "Böhm"), person("Philipp", "Schrag")),
year = 2025,
note = "R package version 2.0.2",
year = 2026,
note = "R package version 2.1.0",
url = "https://CRAN.R-project.org/package=pam",
doi = "10.32614/CRAN.package.pam"
)
2 changes: 1 addition & 1 deletion src/man/eilers_peeters_modified.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src/man/platt_modified.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions src/man/vollenweider_generate_regression_ETR_I.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions src/man/vollenweider_generate_regression_ETR_II.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading