Description
Variance-Aware Michaelis-Menten Estimation and Inference.
Description
Variance-aware Michaelis-Menten estimation, model screening, grouped enzyme-kinetic analyses, and clustered repeated-measurement workflows. The package implements profile-score estimators under working variance functions, together with a lightweight cluster-aware working-covariance extension, Wald and bootstrap confidence intervals, prediction utilities, and simulation helpers. Related methodology is discussed by Kim and Ma (2012) <doi:10.1007/s10463-011-0332-y>, Kim (2023) <doi:10.1002/sta4.606>, and Ma and Genton (2010) <doi:10.1111/j.1467-9868.2010.00741.x>.
README.md
inferMM
inferMM provides variance-aware Michaelis-Menten estimation and inference for enzyme-kinetic data with concentration-dependent heteroscedasticity.
The package is designed around a compact workflow:
- fit one curve with
fit_mm() - compare working variance models with
screen_mm() - repeat that workflow across many enzymes with
group_mm() - fit repeated or clustered assays with
cluster_mm() - summarize and plot fitted objects with standard S3 methods plus
report_mm()
Installation
# install.packages("remotes")
remotes::install_github("mijeong-kim/inferMM")
Bundled data
The package ships with two demo datasets.
sdl_demo: self-driving laboratory Michaelis-Menten panelalves_demo: filtered soil exoenzyme kinetics panel from Alves et al. (2021)
library(inferMM)
data(sdl_demo)
data(alves_demo)
Minimal example
library(inferMM)
one_curve <- subset(sdl_demo, enzyme == "1111")
fit <- fit_mm(
x = one_curve$s_uM,
y = one_curve$v_uM_per_min,
variance = "sqrt"
)
summary(fit)
confint(fit)
Screening working variance models
screen <- screen_mm(
x = one_curve$s_uM,
y = one_curve$v_uM_per_min,
quiet = TRUE
)
screen$table[, c("model", "selected_model", "quasi_aic", "quasi_bic", "rmse")]
Grouped analyses
grouped <- group_mm(
data = sdl_demo,
s = "s_uM",
v = "v_uM_per_min",
groups = "enzyme",
variance_models = c("constant", "log", "sqrt", "cuberoot"),
quiet = TRUE
)
grouped$comparison$best_by_group[
, c("group_label", "model", "selected_model", "quasi_aic", "quasi_bic", "rmse")
]
Clustered analyses
cluster_fit <- cluster_mm(
data = subset(alves_demo, enzyme == "BG"),
s = "substrate_conc",
v = "activity",
cluster = "core",
variance = "sqrt"
)
summary(cluster_fit)
confint(cluster_fit)
For sparse clustered fits, default interval reporting is intentionally cautious: printed summaries may suppress intervals, and bootstrap intervals should be read as sensitivity analyses rather than routine default inference.
Reporting and plotting
report_mm(fit, interval_type = "confidence")
plot(grouped, interval_type = "confidence")
predict(fit, newdata = seq(0, 80, length.out = 6), interval = "prediction")
Repository contents
R/: package source codeman/: function documentationdata/: bundled.rdademo datainst/extdata/: raw CSV mirrors of the demo datavignettes/: end-to-end workflow vignettetests/: unit tests
For manuscript-oriented simulation code and saved paper outputs, see the separate repository inferMM-cils-repro.