View source: R/correct_blood_volume.R
| correct_blood_volume | R Documentation |
Normalises mNIRS channels for the effects of blood volume changes, following the sample-wise iterative method of Beever & Tripp et al, 2020.
correct_blood_volume(
data,
oxy_channel = NULL,
deoxy_channel = NULL,
total_channel = NULL,
verbose = TRUE
)
data |
A data frame of class "mnirs" containing time series data and metadata, a list of data frames, or a grouped data frame (see Details). |
oxy_channel |
A character vector naming the |
deoxy_channel |
A character vector naming the |
total_channel |
A character vector naming the |
verbose |
Logical. |
At least two of oxy_channel, deoxy_channel, and total_channel must
be specified to calculate the blood volume correction factor. Best practice
is to specify all existing channels in data. Missing channels are derived
from the specified pair before the correction is applied.
total = oxy + deoxy
oxy = total - deoxy
deoxy = total - oxy
Multiple channel pairs can be corrected in one call by passing equal-length
vectors, with each element number forming a pair (e.g.
oxy_channel = c(o2hb_1, o2hb_2), deoxy_channel = c(hhb_1, hhb_2)).
NOTE: the returned data frame will ONLY include corrected values for
the specified channels. Non-specified channels will remain uncorrected and
will therefore no longer be comparable to corrected channels. Best practice
is to specify all existing channels in data.
If any NIRS channels have negative values, all specified channels will be
ensemble-shifted by a common offset so that all channels contain only
positive values. Relative scaling across channels is preserved. This is
modified from the method in Beever & Tripp et al, 2020 to properly
calculate total[haem] and the blood volume correction factor beta when
there are negative NIRS values.
The correction factor beta is effectively the single-channel fractional
(%) oxygen saturation used to normalise oxy[haem] and deoxy[haem]
relative to an adjusted invariant total[haem]. This is computed as the
cumulative sum of adjusted incremental differences:
\Delta\text{O2Hb}_c = \Delta\text{O2Hb} - \beta \cdot \Delta\text{THb}
\Delta\text{HHb}_c = \Delta\text{HHb} -
(1 - \beta) \cdot \Delta\text{THb}
After correction, total[haem] is zero (blood volume changes are
normalised).
A tibble of class "mnirs" with blood
volume-corrected channels written back to the specified columns, and with
metadata available with attributes(). For list or grouped data frame
input, returns a named list of "mnirs" tibbles, one per interval.
mnirs processing functions accept data in multiple formats:
A single "mnirs" data frame is processed and returned directly.
A list of "mnirs" data frames: each interval is processed separately and returned as a named list.
A grouped "mnirs" data frame, e.g. with dplyr::group_by(): the
data frame is split by grouping levels and each group is processed as
a separate interval, returned as a named list.
Beever AT, Tripp TR, Zhang J, MacInnis MJ (2020) Nirs-Derived Skeletal Muscle Oxidative Capacity Is Correlated with Aerobic Fitness and Independent of Sex. J Appl Physiol (1985). \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1152/japplphysiol.00017.2020")}
Ryan TE, Erickson ML, Brizendine JT, et al. (2012) Noninvasive Evaluation of Skeletal Muscle Mitochondrial Capacity with near-Infrared Spectroscopy: Correcting for Blood Volume Changes. J Appl Physiol (1985). \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1152/japplphysiol.00319.2012")}
data <- read_mnirs(
file_path = example_mnirs("artinis"),
nirs_channels = c(o2hb = 2, hhb = 3),
time_channel = c(sample = 1),
verbose = FALSE,
)
plot(data)
result <- correct_blood_volume(
data,
oxy_channel = "o2hb",
deoxy_channel = "hhb", ## thb will be derived from o2hb + hhb
)
plot(result)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.