Skip to contents

Model and source

Sjogren 2021 is not a drug model. It builds a physiologically based bridge from a healthy to a malnourished population for whole-body physiologically based pharmacokinetic (PBPK) modelling. Its own contribution is a set of physiological scaling parameters (PSPs): multiplicative factors, one per system parameter, that turn the physiology of a non-malnourished individual into that of a malnourished one at three levels of malnutrition (mild, intermediate and severe; Table 2). The authors derived the PSPs from two adult studies (Table 1), then multiplied them onto virtual pediatric populations generated by PK-Sim, and evaluated the result against six drugs studied in malnourished children.

The PSP layer is published in full as numbers and is what this package extracts. Each output of the model is a PSP; multiply it onto the matching quantity of an age-appropriate non-malnourished physiology.

What is deliberately not extracted, and why

The six drug models (caffeine, cefoxitin, ciprofloxacin, lumefantrine, pyrimethamine and sulfadoxine) were built in PK-Sim 8.0 on its generic 15-organ whole-body model, and the paper describes that structure only in prose (Methods 2.2). Table 4 gives compound-card inputs – lipophilicity, fraction unbound, pKa, solubility, intestinal permeability and elimination constants – but tissue:plasma partitioning is given only as the name of a PK-Sim method (“PK-Sim Standard” or “Rodgers and Rowland”), several inputs are “as per PK-Sim library value”, the pediatric virtual populations come from PK-Sim’s internal population algorithm, and no project file was deposited (Data Availability Statement: “Data sharing not applicable”). None of the drug layer can therefore be reproduced outside that platform. For the same reason the virtual-population z-score comparisons of Figures 2-4 and the drug profiles of Figures 5-8 are not replicated here.

Population

The PSPs were computed from two adult studies summarised in Table 1:

  • Barac-Nieto et al. (ref 18): 49 Colombian men graded into mild, intermediate and severe nutritional impairment (body weight / height 89.5 %, 82.7 % and 73.9 % of standard). Source of the serum albumin, hematocrit, fat mass and total blood volume changes.
  • Bosy-Westphal et al. (ref 19): 39 Dutch men and women, underweight vs intermediate weight. Source of the brain, heart, liver, spleen and kidney masses, bone mineral content, lean soft-tissue trunk mass and skeletal muscle mass.

No suitable data set for malnourished children was found, so the paper assumes that the relative physiological change caused by malnutrition in adults also applies to children. The ICRP 30-year-old man (176 cm, 73 kg) is the non-malnourished reference. The paper checked the scaling against 131 severely malnourished and 266 non-malnourished Malian and Nigerien children aged 6-59 months (ref 23), and chose severe malnutrition for every PK evaluation because it moved a virtual 46-48-month-old population to a mean weight-for-height z-score of about -3.

The same information is available programmatically as readModelDb("Sjogren_2021_malnutrition_physiology")()$population.

Source trace

Model element Source location Value / form
Every psp_<component>_<level> in ini() (48 values) Table 2 (page 9) One fixed value per component and level; the ‘Not Malnourished’ column is 1 throughout
psp_<component> = 1 + sum(level indicator * (psp - 1)) Table 2 layout; Methods 2.3.1 (“scaling the system parameters of each virtual individual … to the developed set of PSPs”) Mutually exclusive level indicators, 1 when not malnourished
psp_gonads, psp_intestine, psp_lung, psp_stomach share one factor Table 2 row ‘Gonads, intestines, lung, stomach’; Methods 2.3.2 (lean body mass as surrogate) psp_leanorg
psp_albumin, psp_aag share the plasma-protein factor Table 2 row ‘Plasma proteins’; Methods 2.3.2 (“Equal effect of nutrition status on alpha-1-acid glycoprotein levels as for albumin was assumed”) psp_plasmaprot
Organ PSP derivation Equation 1 (page 4) PSP = (Xr,M / Xt,M) / (Xr,N / Xt,N); recovered from the page image, the text converters drop it
Plasma-protein PSP derivation Methods 2.3.2 and Table 1 Barac-Nieto albumin over the 4.25 g/100 mL reference
Skin PSP derivation Methods 2.3.2 Ratio of Du Bois body surface area, BSA = 0.007184 * BWT^0.425 * HT^0.725
Mild / intermediate values where only severe was measured Methods 2.3.2 (“Linear extrapolations based on adjusted BWT/HT ratios”) Checked below
Consequences for a 30-year-old man Table 3 (page 9) Reproduced below

Parameter table

name est label
psp_bone_mild 0.947 PSP for bone volume, mild malnutrition (ratio)
psp_bone_mod 0.913 PSP for bone volume, intermediate malnutrition (ratio)
psp_bone_sev 0.869 PSP for bone volume, severe malnutrition (ratio)
psp_brain_mild 0.918 PSP for brain volume, mild malnutrition (ratio)
psp_brain_mod 0.865 PSP for brain volume, intermediate malnutrition (ratio)
psp_brain_sev 0.797 PSP for brain volume, severe malnutrition (ratio)
psp_fat_mild 0.817 PSP for fat (adipose) volume, mild malnutrition (ratio)
psp_fat_mod 0.822 PSP for fat (adipose) volume, intermediate malnutrition (ratio)
psp_fat_sev 0.624 PSP for fat (adipose) volume, severe malnutrition (ratio)
psp_leanorg_mild 0.936 PSP for gonads, intestines, lung and stomach volumes, mild malnutrition (ratio)
psp_leanorg_mod 0.894 PSP for gonads, intestines, lung and stomach volumes, intermediate malnutrition (ratio)
psp_leanorg_sev 0.840 PSP for gonads, intestines, lung and stomach volumes, severe malnutrition (ratio)
psp_heart_mild 0.902 PSP for heart volume, mild malnutrition (ratio)
psp_heart_mod 0.839 PSP for heart volume, intermediate malnutrition (ratio)
psp_heart_sev 0.758 PSP for heart volume, severe malnutrition (ratio)
psp_kidney_mild 0.874 PSP for kidney volume, mild malnutrition (ratio)
psp_kidney_mod 0.792 PSP for kidney volume, intermediate malnutrition (ratio)
psp_kidney_sev 0.686 PSP for kidney volume, severe malnutrition (ratio)
psp_liver_mild 0.872 PSP for liver volume, mild malnutrition (ratio)
psp_liver_mod 0.789 PSP for liver volume, intermediate malnutrition (ratio)
psp_liver_sev 0.682 PSP for liver volume, severe malnutrition (ratio)
psp_muscle_mild 0.893 PSP for muscle volume, mild malnutrition (ratio)
psp_muscle_mod 0.771 PSP for muscle volume, intermediate malnutrition (ratio)
psp_muscle_sev 0.715 PSP for muscle volume, severe malnutrition (ratio)
psp_pancreas_mild 0.936 PSP for pancreas volume, mild malnutrition (ratio)
psp_pancreas_mod 0.894 PSP for pancreas volume, intermediate malnutrition (ratio)
psp_pancreas_sev 0.840 PSP for pancreas volume, severe malnutrition (ratio)
psp_skin_mild 0.954 PSP for skin volume, mild malnutrition (ratio)
psp_skin_mod 0.922 PSP for skin volume, intermediate malnutrition (ratio)
psp_skin_sev 0.879 PSP for skin volume, severe malnutrition (ratio)
psp_spleen_mild 0.844 PSP for spleen volume, mild malnutrition (ratio)
psp_spleen_mod 0.743 PSP for spleen volume, intermediate malnutrition (ratio)
psp_spleen_sev 0.612 PSP for spleen volume, severe malnutrition (ratio)
psp_blood_art_mild 1.030 PSP for arterial blood volume, mild malnutrition (ratio)
psp_blood_art_mod 0.992 PSP for arterial blood volume, intermediate malnutrition (ratio)
psp_blood_art_sev 0.833 PSP for arterial blood volume, severe malnutrition (ratio)
psp_blood_ven_mild 1.020 PSP for venous blood volume, mild malnutrition (ratio)
psp_blood_ven_mod 0.979 PSP for venous blood volume, intermediate malnutrition (ratio)
psp_blood_ven_sev 0.822 PSP for venous blood volume, severe malnutrition (ratio)
psp_blood_portal_mild 1.020 PSP for portal-vein blood volume, mild malnutrition (ratio)
psp_blood_portal_mod 0.982 PSP for portal-vein blood volume, intermediate malnutrition (ratio)
psp_blood_portal_sev 0.825 PSP for portal-vein blood volume, severe malnutrition (ratio)
psp_plasmaprot_mild 0.894 PSP for plasma-protein (albumin, AAG) concentration, mild malnutrition (ratio)
psp_plasmaprot_mod 0.706 PSP for plasma-protein (albumin, AAG) concentration, intermediate malnutrition (ratio)
psp_plasmaprot_sev 0.494 PSP for plasma-protein (albumin, AAG) concentration, severe malnutrition (ratio)
psp_hct_mild 0.945 PSP for hematocrit, mild malnutrition (ratio)
psp_hct_mod 0.791 PSP for hematocrit, intermediate malnutrition (ratio)
psp_hct_sev 0.681 PSP for hematocrit, severe malnutrition (ratio)

Simulation

The model has no states and no time dependence. One row per malnutrition level is enough to return every PSP.

mod <- readModelDb("Sjogren_2021_malnutrition_physiology")

levels_df <- data.frame(
  id = 1:4,
  level = c("Not malnourished", "Mild", "Intermediate", "Severe"),
  MAL_NOURISH_MILD = c(0, 1, 0, 0),
  MAL_NOURISH_MOD = c(0, 0, 1, 0),
  MAL_NOURISH_SEV = c(0, 0, 0, 1)
)
ev <- levels_df |>
  dplyr::mutate(time = 0, evid = 0, amt = 0) |>
  dplyr::select(id, time, evid, amt, MAL_NOURISH_MILD, MAL_NOURISH_MOD, MAL_NOURISH_SEV)

sim <- rxode2::rxSolve(mod, ev, returnType = "data.frame", keep = "id") |>
  dplyr::left_join(levels_df[, c("id", "level")], by = "id")
#> Warning: 'keep' contains id
#> which are output when needed, ignoring these items
stopifnot(nrow(sim) == 4)

Validation

1. Exact reproduction of Table 2

components <- c(
  "bone", "brain", "fat", "leanorg", "heart", "kidney", "liver", "muscle",
  "pancreas", "skin", "spleen", "blood_art", "blood_ven", "blood_portal",
  "plasmaprot", "hct"
)
# Sjogren 2021 Table 2, columns Not Malnourished / Mild / Intermediate / Severe.
table2 <- tibble::tribble(
  ~component,     ~nm, ~mild, ~mod,  ~sev,
  "bone",         1,   0.947, 0.913, 0.869,
  "brain",        1,   0.918, 0.865, 0.797,
  "fat",          1,   0.817, 0.822, 0.624,
  "leanorg",      1,   0.936, 0.894, 0.84,
  "heart",        1,   0.902, 0.839, 0.758,
  "kidney",       1,   0.874, 0.792, 0.686,
  "liver",        1,   0.872, 0.789, 0.682,
  "muscle",       1,   0.893, 0.771, 0.715,
  "pancreas",     1,   0.936, 0.894, 0.84,
  "skin",         1,   0.954, 0.922, 0.879,
  "spleen",       1,   0.844, 0.743, 0.612,
  "blood_art",    1,   1.03,  0.992, 0.833,
  "blood_ven",    1,   1.02,  0.979, 0.822,
  "blood_portal", 1,   1.02,  0.982, 0.825,
  "plasmaprot",   1,   0.894, 0.706, 0.494,
  "hct",          1,   0.945, 0.791, 0.681
) |>
  tidyr::pivot_longer(-component, names_to = "lvl", values_to = "published") |>
  dplyr::mutate(level = c(
    nm = "Not malnourished", mild = "Mild", mod = "Intermediate", sev = "Severe"
  )[lvl])

model_psp <- sim |>
  dplyr::select(level, dplyr::all_of(paste0("psp_", components))) |>
  tidyr::pivot_longer(-level, names_to = "component", values_to = "model") |>
  dplyr::mutate(component = sub("^psp_", "", component))

chk2 <- dplyr::inner_join(table2, model_psp, by = c("component", "level"))
# 16 components x 4 levels; a lost row would make the gate pass vacuously.
stopifnot(nrow(chk2) == 64)
# Deterministic algebra on the published cells: machine precision.
stopifnot(all(abs(chk2$model - chk2$published) < 1e-12))

# The shared factors are exactly the shared rows.
stopifnot(
  all(sim$psp_gonads == sim$psp_leanorg),
  all(sim$psp_intestine == sim$psp_leanorg),
  all(sim$psp_lung == sim$psp_leanorg),
  all(sim$psp_stomach == sim$psp_leanorg),
  all(sim$psp_albumin == sim$psp_plasmaprot),
  all(sim$psp_aag == sim$psp_plasmaprot)
)
chk2 |>
  dplyr::filter(level != "Not malnourished") |>
  dplyr::mutate(
    level = factor(level, levels = c("Mild", "Intermediate", "Severe")),
    component = factor(component, levels = rev(components))
  ) |>
  ggplot(aes(x = model, y = component, colour = level)) +
  geom_vline(xintercept = 1, linetype = "dashed", colour = "grey50") +
  geom_point(size = 2.5) +
  labs(x = "Physiological scaling parameter (malnourished / non-malnourished)", y = NULL, colour = "Malnutrition") +
  theme_bw()
Replicates Table 2 of Sjogren 2021: physiological scaling parameters by component and malnutrition level (not malnourished = 1).

Replicates Table 2 of Sjogren 2021: physiological scaling parameters by component and malnutrition level (not malnourished = 1).

2. The PSPs agree with the derivations the paper describes

Three of the derivation rules in Methods 2.3.2 can be re-run from numbers the paper prints. They check the transcription of Table 2 against independent printed values (Tables 1 and 3), not against itself.

sev <- sim[sim$level == "Severe", ]
mild <- sim[sim$level == "Mild", ]
int <- sim[sim$level == "Intermediate", ]

# (a) Plasma proteins: Barac-Nieto serum albumin (Table 1: 3.8 / 3 / 2.1 g/100 mL)
#     over the 4.25 g/100 mL non-malnourished reference.
albumin_psp <- c(3.8, 3, 2.1) / 4.25
model_pp <- c(mild$psp_plasmaprot, int$psp_plasmaprot, sev$psp_plasmaprot)
stopifnot(all(abs(round(albumin_psp, 3) - model_pp) < 1e-12))

# (b) Skin: ratio of Du Bois BSA at constant height, i.e. (BWT_M / BWT_N)^0.425,
#     with the Table 3 body weights (73.0 -> 65.3 / 60.3 / 53.9 kg).
skin_psp <- (c(65.3, 60.3, 53.9) / 73)^0.425
model_skin <- c(mild$psp_skin, int$psp_skin, sev$psp_skin)
stopifnot(all(abs(round(skin_psp, 3) - model_skin) < 1e-12))

# (c) Linear extrapolation in the adjusted BWT/HT ratio for the organs measured
#     only at severe malnutrition: PSP = 1 - slope * (1 - r), with r the
#     Barac-Nieto percent of standard BWT/HT (Table 1: 89.5 / 82.7 / 73.9 %).
r <- c(mild = 0.895, int = 0.827, sev = 0.739)
lin_organs <- c("bone", "brain", "leanorg", "heart", "kidney", "liver", "pancreas", "spleen")
lin <- do.call(rbind, lapply(lin_organs, function(o) {
  p_sev <- sev[[paste0("psp_", o)]]
  slope <- (1 - p_sev) / (1 - r[["sev"]])
  data.frame(
    component = o,
    mild_pred = 1 - slope * (1 - r[["mild"]]),
    mild_pub = mild[[paste0("psp_", o)]],
    int_pred = 1 - slope * (1 - r[["int"]]),
    int_pub = int[[paste0("psp_", o)]]
  )
}))
stopifnot(nrow(lin) == length(lin_organs))
# Rounding of the 3-decimal published PSPs allows at most ~1 unit in the
# last place after propagation through the slope.
stopifnot(
  all(abs(lin$mild_pred - lin$mild_pub) <= 0.0015),
  all(abs(lin$int_pred - lin$int_pub) <= 0.0015)
)
lin |>
  dplyr::rename(
    "Component" = component,
    "Mild, extrapolated" = mild_pred, "Mild, Table 2" = mild_pub,
    "Intermediate, extrapolated" = int_pred, "Intermediate, Table 2" = int_pub
  ) |>
  knitr::kable(digits = 3)
Component Mild, extrapolated Mild, Table 2 Intermediate, extrapolated Intermediate, Table 2
bone 0.947 0.947 0.913 0.913
brain 0.918 0.918 0.865 0.865
leanorg 0.936 0.936 0.894 0.894
heart 0.903 0.902 0.840 0.839
kidney 0.874 0.874 0.792 0.792
liver 0.872 0.872 0.789 0.789
pancreas 0.936 0.936 0.894 0.894
spleen 0.844 0.844 0.743 0.743

Muscle and fat are not on the line (muscle mild 0.893 vs 0.885 extrapolated, intermediate 0.771 vs 0.811): the paper adjusted those two PSPs so that the scaled organ weights add up to the target body weight (Methods 2.3.2). The hematocrit PSPs imply a constant non-malnourished reference hematocrit, which the paper does not print:

hct_ref <- c(44.4, 37.2, 32) / c(mild$psp_hct, int$psp_hct, sev$psp_hct)
round(hct_ref, 2)
#> [1] 46.98 47.03 46.99
# One reference for all three levels, to within the 3-decimal rounding.
stopifnot(diff(range(hct_ref)) < 0.1)

3. Reproducing Table 3 by chaining a registry physiology

Table 3 applies the PSPs to the ICRP 30-year-old man of PK-Sim (176 cm, 73 kg). The organ masses of that same individual are the 30-year male knot of Schlender_2016_aging_physiology, the PK-Sim adult physiology already in this package. Multiplying each Schlender organ mass by its Sjogren PSP, and summing, should return the Table 3 body weights – which the paper states were the design target (mild, intermediate and severe losses of 11 %, 17 % and 26 %).

phys <- readModelDb("Schlender_2016_aging_physiology")
man30 <- rxode2::rxSolve(
  phys,
  data.frame(id = 1, time = 30, evid = 0, amt = 0, SEXF = 0),
  returnType = "data.frame"
)
stopifnot(nrow(man30) == 1, abs(man30$bw - 73) < 1e-9, abs(man30$ht - 176) < 1e-9)

# Schlender organ -> Sjogren PSP. Schlender pools arterial, venous and
# portal blood into one mass; the venous PSP (the largest pool) is used.
# The constant GI mass is stomach + intestines.
organ_map <- c(
  mass_blood = "psp_blood_ven", mass_bone = "psp_bone", mass_brain = "psp_brain",
  mass_fat = "psp_fat", mass_gonads = "psp_gonads", mass_heart = "psp_heart",
  mass_kidney = "psp_kidney", mass_liver = "psp_liver", mass_lung = "psp_lung",
  mass_muscle = "psp_muscle", mass_pancreas = "psp_pancreas", mass_skin = "psp_skin",
  mass_spleen = "psp_spleen", mass_gi = "psp_intestine"
)
masses <- unlist(man30[names(organ_map)])
remainder_g <- 1000 * man30$bw - sum(masses)
remainder_g
#> [1] 155.5

table3 <- sim |>
  dplyr::rowwise() |>
  dplyr::mutate(
    bwt = (sum(masses * unlist(dplyr::pick(dplyr::all_of(unname(organ_map))))) + remainder_g) / 1000
  ) |>
  dplyr::ungroup() |>
  dplyr::mutate(
    ht = man30$ht,
    bmi = bwt / (ht / 100)^2,
    bwt_ht = bwt / (ht / 100),
    bsa = 0.007184 * bwt^0.425 * ht^0.725
  ) |>
  dplyr::select(level, bwt, ht, bmi, bwt_ht, bsa)

published3 <- data.frame(
  level = c("Not malnourished", "Mild", "Intermediate", "Severe"),
  bwt_pub = c(73.0, 65.3, 60.3, 53.9),
  bmi_pub = c(23.6, 21.1, 19.5, 17.4),
  bwt_ht_pub = c(41.4, 37.1, 34.3, 30.6),
  bsa_pub = c(1.9, 1.8, 1.7, 1.7)
)
chk3 <- dplyr::inner_join(table3, published3, by = "level")
stopifnot(nrow(chk3) == 4)

chk3 |>
  dplyr::mutate(bwt_pct_diff = 100 * (bwt - bwt_pub) / bwt_pub) |>
  dplyr::select(level, bwt, bwt_pub, bwt_pct_diff, bmi, bmi_pub, bwt_ht, bwt_ht_pub, bsa, bsa_pub) |>
  dplyr::rename(
    "Level" = level, "BWT (kg)" = bwt, "BWT, Table 3" = bwt_pub, "BWT % diff" = bwt_pct_diff,
    "BMI" = bmi, "BMI, Table 3" = bmi_pub, "BWT/HT (kg/m)" = bwt_ht,
    "BWT/HT, Table 3" = bwt_ht_pub, "BSA (m2)" = bsa, "BSA, Table 3" = bsa_pub
  ) |>
  knitr::kable(digits = 2)
Level BWT (kg) BWT, Table 3 BWT % diff BMI BMI, Table 3 BWT/HT (kg/m) BWT/HT, Table 3 BSA (m2) BSA, Table 3
Not malnourished 73.00 73.0 0.00 23.57 23.6 41.48 41.4 1.89 1.9
Mild 65.32 65.3 0.04 21.09 21.1 37.12 37.1 1.80 1.8
Intermediate 60.36 60.3 0.09 19.49 19.5 34.29 34.3 1.74 1.7
Severe 53.95 53.9 0.08 17.42 17.4 30.65 30.6 1.66 1.7

# A mis-transcribed muscle or fat PSP (together ~65 % of body weight) moves the
# total by kilograms; the chained reconstruction must land within 0.5 %.
mal3 <- chk3[chk3$level != "Not malnourished", ]
stopifnot(
  nrow(mal3) == 3,
  all(abs(chk3$bwt - chk3$bwt_pub) / chk3$bwt_pub < 0.005),
  all(abs(round(chk3$bmi, 1) - chk3$bmi_pub) <= 0.1),
  all(abs(round(mal3$bwt_ht, 1) - mal3$bwt_ht_pub) <= 0.1),
  all(round(chk3$bsa, 1) == chk3$bsa_pub)
)
# The printed non-malnourished BWT/HT (41.4) is the paper's own rounding
# slip: 73.0 kg / 1.76 m = 41.48, which rounds to 41.5, and the same row's
# BMI (23.6) confirms 73.0 kg. Gate the discrepancy so a later edit cannot
# silently hide or change it.
stopifnot(
  round(73.0 / 1.76, 1) == 41.5,
  chk3$bwt_ht_pub[chk3$level == "Not malnourished"] == 41.4
)

The non-malnourished row closes by construction (the unscaled remainder is defined from it). The three malnourished rows are genuine predictions: the Schlender organ masses come from a different paper, and only the PSPs come from Sjogren 2021.

Using the PSPs

Each PSP multiplies the corresponding non-malnourished quantity. For a PBPK model with explicit organ volumes, scale each volume by its PSP; scale albumin and alpha-1-acid glycoprotein concentrations by psp_albumin / psp_aag and the hematocrit by psp_hct. The paper keeps tissue composition (the volume fractions of water, lipids and proteins used to compute partition coefficients) out of the PSP set (Methods 2.3.2), and Table 2 has no blood-flow rows.

# Severely malnourished organ masses of the 30-year-old reference man (g).
sev_masses <- masses * unlist(sim[sim$level == "Severe", unname(organ_map)])
data.frame(
  organ = sub("^mass_", "", names(masses)),
  not_malnourished_g = masses,
  severe_g = sev_masses
) |>
  dplyr::rename("Organ" = organ, "Not malnourished (g)" = not_malnourished_g, "Severe (g)" = severe_g) |>
  knitr::kable(digits = 1, row.names = FALSE)
Organ Not malnourished (g) Severe (g)
blood 2264.6 1861.5
bone 11817.8 10269.7
brain 1508.8 1202.5
fat 14868.0 9277.6
gonads 40.3 33.9
heart 417.2 316.2
kidney 437.7 300.3
liver 2357.8 1608.0
lung 1294.3 1087.2
muscle 32338.6 23122.1
pancreas 190.3 159.9
skin 3760.9 3305.8
spleen 243.4 149.0
gi 1304.8 1096.0

Assumptions and deviations

  • Only the physiology layer is extracted. The six drug models are PK-Sim models whose partition coefficients, pediatric populations and several inputs are platform-internal, with no project file deposited; see “What is deliberately not extracted” above.
  • Malnutrition level is encoded as three mutually exclusive indicators (MAL_NOURISH_MILD, MAL_NOURISH_MOD, MAL_NOURISH_SEV; all 0 = not malnourished). The paper’s “intermediate” level is carried on the _MOD member of the severity-suffix family. Setting more than one indicator to 1 is not meaningful and is not trapped by the model.
  • Fat PSP is not monotone in severity as printed (mild 0.817, intermediate 0.822). The paper adjusted fat and muscle to make the scaled organ weights add up to the target body weight, so the printed values are kept.
  • The severe organ PSPs cannot be re-derived here. Equation 1 corrects the Bosy-Westphal organ ratios for the height difference between study groups with ICRP height-typical organ values, which the paper does not print. The mild and intermediate values of those organs are checked, as linear extrapolations of the severe value (section 2).
  • The reference hematocrit is not printed; the three hematocrit PSPs imply one reference of about 47 % (section 2).
  • Table 3 reconstruction. The organ masses come from Schlender_2016_aging_physiology (the PK-Sim ICRP 30-year-old man). That model pools arterial, venous and portal blood, which is scaled here with the venous PSP; the arterial (0.833) or portal (0.825) value changes the severe body weight by at most 0.03 kg. The 0.16 kg by which the Schlender organ masses fall short of 73 kg is left unscaled. The intermediate body weight reconstructs to 60.4 kg against a printed 60.3 kg (0.1 %).
  • Table 3 erratum (non-malnourished BWT/HT). The paper prints 41.4 kg/m for the non-malnourished man, but its own 73.0 kg and 176 cm give 41.48 kg/m (41.5), and the BMI of 23.6 on the same row confirms 73.0 kg. The three malnourished BWT/HT values reproduce; the 41.4 is treated as a rounding slip in the paper.
  • Adult data, applied to children. The PSPs are derived from adults; their application to pediatric populations is the paper’s own assumption (Methods 2.3.2), not something this model adds.
  • No variability. The paper applies the PSPs as fixed factors to every virtual individual; this model returns them as typical values.