Skip to content
Snippets Groups Projects
Commit cfb49f7f authored by Rob Moss's avatar Rob Moss
Browse files

Plot reticulocyte release age curves

parent eff4f8b2
Branches
No related tags found
No related merge requests found
......@@ -28,6 +28,7 @@ This document collects sources of evidence for baseline parameter values.
```{r setup, class.source = 'fold-hide'}
library(spleenrbc, warn.conflicts = FALSE)
suppressPackageStartupMessages(library(ggplot2))
suppressPackageStartupMessages(library(here))
output_dir <- here("outputs")
......@@ -101,6 +102,10 @@ baseline <- baseline |>
dplyr::mutate(Evidence = dplyr::case_when(
Parameter == "MaxFold" ~ "[Maximum fold increase in RBC production]",
Parameter == "PMF" ~ "[Parasite multiplication]",
Parameter == "rho0" ~ "[Reticulocyte release from bone marrow]",
Parameter == "kappa" ~ "[Reticulocyte release from bone marrow]",
Parameter == "T_R" ~ "[Reticulocyte release from bone marrow]",
Parameter == "T_R_min" ~ "[Reticulocyte release from bone marrow]",
.default = ""
))
......@@ -158,6 +163,88 @@ The manuscript text also states:
> The maturation time of the reticulocyte in the peripheral blood is taken as 1 day when the PCV is 0.45±0.5, 1.5 days when the PCV is 0.35±0.05, 2 days when the PCV is 0.25±0.05, and 3 days when the PCV is 0.15±0.05 (Hillman & Finch 1967).
Accordingly, the residence time in the bone marrow decreases from 3.5 days when the PCV is 0.45±0.5, down to 1 day when the PCV is 0.15±0.05.
Accordingly, the residence time in the bone marrow decreases from 3.5 days when the PCV is 0.45±0.5, down to 1.5 day when the PCV is 0.15±0.05.
The following function provides a reasonable characterisation, while maintaining a release age of 3.5 days in the absence of anaemia:
\begin{align}
t_r &= \begin{cases}
T_R & \text{when } \mathbf{U_c} > U_{ss}
\\
T_R^{\min} + (T_R - T_R^{\min}) \cdot \left(1 +
\exp\left[- s \cdot (U_{\mathrm{frac}} - i)\right]\right)^{-1}
& \text{when } \mathbf{U_c} \le U_{ss}
\end{cases}
\\
U_{\mathrm{frac}} &= \frac{\mathbf{U_c}}{U_{ss}} \\
s &= 10 \quad \mathrm{(slope)}
\\
i &= 0.5 \quad \mathrm{(inflection)}
\end{align}
```{r plot-retic-release, class.source = 'fold-hide'}
orig_retic_release_age <- function(u_frac) {
T_R <- 3.5 * 24
T_R_min <- 24
pkg_data <- new.env()
utils::data("rbc_steady_state", package = "spleenrbc", envir = pkg_data)
u_ss <- pkg_data$rbc_steady_state
u_rbc <- pmin(u_frac * u_ss, u_ss)
scale <- log(u_ss) - log(u_rbc)
t_release <- T_R_min + (T_R - T_R_min) * exp(-100 * scale)
t_release
}
new_retic_release_age <- function(u_frac, inflection, slope) {
T_R <- 3.5 * 24
T_R_min <- 24
u_frac <- pmin(u_frac, 1)
scale <- T_R - T_R_min
T_R_min + scale / (1 + exp(- slope * (u_frac - inflection)))
}
plot_retic_release_age <- function() {
u_frac <- seq(from = 0, to = 1.0, by = 1e-3)
slope <- 10
inflection <- 0.5
orig_age <- orig_retic_release_age(u_frac)
new_age <- new_retic_release_age(u_frac, inflection, slope)
df <- data.frame(
u_pcnt = rep(100 * u_frac, 2),
age = c(orig_age, new_age),
equation = rep(c("Original", "New"), each = length(u_frac))
)
df_koepke <- data.frame(
hematocrit = c(45, 35, 25, 15),
age = 24 * c(3.5, 3.0, 2.5, 1.5)
) |> dplyr::mutate(
u_pcnt = 100 * hematocrit / 45,
equation = "Koepke & Koepke (1986)"
)
ggplot(df, aes(u_pcnt, age / 24)) +
geom_line(mapping = aes(colour = equation)) +
geom_point(data = df_koepke) +
expand_limits(y = 0) +
scale_x_continuous(
"uRBC Population (% of steady-state)",
breaks = c(0, 33, 66.7, 100),
labels = c("0%", "33%", "67%", "100%")
) +
ylab("Minimum age of release (days)") +
scale_colour_brewer(
"Equation: ",
palette = "Dark2"
) +
theme(legend.position = "top")
}
plot_retic_release_age()
```
## References {-}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment