calcO2crit: Calculate the critical oxygen level (O2crit) of a fish or...

Description Usage Arguments Details Value Warning Author(s) References Examples

View source: R/calcO2crit.R

Description

This requires that the Standard Metabolic Rate of the animal be known. Typically all data available for animal, such as those obtained to estimate MMr and SMR and those obtained to estimate O2crit, are used together, because this can improve the estimation of O2crit in some cases.

Usage

1
calcO2crit(Data, SMR, lowestMO2 = NA)

Arguments

Data

Data.frame with at least these 2 variables: MO2 (values of oxygen uptake) and DO (Dissolved oxygen measured with each value of oxygen uptake). DO can only have % saturation units with the current version of the function.

SMR

A single value representing SMR [not the list created by calcSMR].

lowestMO2

A low value of MO2 which suggest that the animal's oxygen consumption may be limited by hypoxia; values lower than SMR are not rare in normoxia, so a value that is rarely observed in normoxia is required. It can be entered by the user, otherwise the quantile (p = 0.05) of MO2 values observed in normoxia (DO > 80% sat.) is used automatically.

Details

At first glance, estimating O2crit is an easy task: MO2 becomes lower than SMR and proportional to DO at very low DO levels. A regression between MO2 and DO can be fitted to these low MO2 values, and the intersection of this regression line with the horizontal line is O2crit.

Indeed the code to calculate O2crit in an experiment when DO decreased slowly, many MO2 values are available during the period of DO decrease, and in particular, there is a MO2 value close to SMR near the putative O2crit.

This function tries to salvage experiments that are suboptimal, either because of manipulation error or lack of cooperation from the animal. To achieve this, some assumptions are made. First, the regression line calculated for the MO2 values, when extended to high DO levels, must pass above or on the highest MO2 values. Second, positive intercepts are not possible (i.e. no fish or invertebrate should have a MO2 > 0 at 0% sat.)

It is up to the user to decide if the data are too poor for the determination of O2crit to be usable. But at least, there is less user interpretation in calculating O2crit in such circumstances.

This function is not meant to estimate O2crit from experiments when the maximum metabolic rate (MMR) is measured in normoxia and at progressively declining DO levels, until the level of no excess activity (MMR = SMR) is reached, although it may work with such data: I did not have datasets to check this out.

Typically, the same experiment is used to estimate both the SMR (and even MMR) and O2crit. The conditions for the determination of SMR are documented elsewhere (Chabot et al., 2016). Briefly, the fish should be acclimated to the respirometer and to the experimental temperature, in postabsorptive state and protected from stimuli that may elicit increases in MO2. The experimental conditions should remain the same for the determination of O2crit, except for the progressively declining DO level. If the fish’s SMR has been determined in a separate experiment, it is possible to estimate O2crit from a shorter experiment in which DO is declining from normoxia to below O2crit within a few hours. However, it is advantageous to determine SMR and O2crit during a single experiment because the elevated values of MO2 obtained when the fish is first placed into the respirometer are useful to check the quality of the O2crit determination.

This function has been updated and simplified in 2018 and the description in an appendix to Claireaux and Chabot (2016) is no longer accurate.

Value

Returns a list containing the estimated values of O2crit and additional results that can be useful to assess the quality of the estimate and in producing plots.

The details of the output components are as follows:

o2crit

The estimated value of O2crit.

SMR

The value of SMR used in estimating O2crit, same as entered in the function call.

$origData

The original data.frame with some new variables added. This is used by plotO2crit.

$Method

Indicates if a standard least-square regression (LS_reg) was used to estimate O2crit. When the intercept is positive, indicating a positive MO2 when DO is zero, which does not make sense, a regression passing through the origin is used instead (through_origin).

$mod

The output of the lm function used to estimate the regression between MO2 and DO.

r2

The R2 of the regression MO2 and DO.

P

The p-level of the regression MO2 and DO.

lethalPoints

The index of the MO2 values identified as conforming to ambient DO.

AddedPoints

The index of the MO2 value added to the regression, if necessary, to insure that it cleared MMR.

Warning

Any observation with missing values is removed. If variables that are not used to calculate O2crit (any variable other than MO2 and DO) are frequently missing when the main variables are present, it is better to remove these variables from Data before calling calcO2crit.

Author(s)

Denis Chabot, Maurice-Lamontagne Institute, DFO, Canada.

References

Claireaux, Guy and Chabot, Denis (2016) Responses by fishes to environmental hypoxia: integration through Fry's concept of aerobic metabolic scope. Journal of Fish Biology 88, 232-251. doi:doi:10.1111/jfb.1283

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Data = data.frame(
    MO2 = c(rnorm(25, 150, 5), rnorm(50, 90, 3), rnorm(100, 50, 2),
          50*c(0.9, 0.8, 0.7)),
    DO = c(rnorm(168, 90, 3), seq(80, 18, length.out=10))
)
smr = calcSMR(Data$MO2[1:168])  # 10 values recorded when DO was decreasing
                                # SHOULD NOT be included when calculating SMR
SMR = as.numeric(ifelse(smr$CVmlnd > 5.4, smr$quant[4], smr$mlnd))
                                     # as recommended in Chabot et al. 2016
MyO2crit = calcO2crit(Data, SMR)
MyO2crit$o2crit # to display only O2crit, without the other elements of the list object

# with real data
data(GrHalO2crit)
# this dataset already contains the two required variables with the two
#    required names, MO2 and DO
# first calculate SMR
# remove a 10-h acclimation period and the last 11 h, when DO was decreasing
#    to calculate O2crit. There were no low R^2s that required removal
smrData = subset(GrHalO2crit, DateTime >= DateTime[1] + 10*60*60 &
DateTime <= DateTime[nrow(GrHalO2crit)] - 11*60*60)
smr = calcSMR(smrData$MO2); smr
SMR = as.numeric(ifelse(smr$CVmlnd > 5.4, smr$quant[4], smr$mlnd))
SMR # as recommended in Chabot et al. 2016
# ready to calculate O2crit
MyO2crit = calcO2crit(GrHalO2crit, SMR)
MyO2crit$o2crit

denis-chabot/fishMO2 documentation built on July 16, 2020, 1:53 a.m.