GUIbiont is a no-code application for quality control, curve fitting, trajectory clustering and metadata-linked analysis of plate-reader data. Interactive sessions export as Julia scripts, so browser analyses can be reproduced or extended outside the interface.
Workflow
Each step is interactive and inspectable, and each result can be exported as Julia code that reproduces the underlying Kinbiont.jl calls.
Analysis modules
Each tab is a self-contained analysis environment operating on the same imported experiment.
Built on Kinbiont.jl
Kinbiont.jl is a Julia package for microbial growth analysis covering preprocessing, model-based inference, segmented fitting and downstream machine learning. GUIbiont assembles the data, handles the interface and delegates the analysis.
# The call GUIbiont delegates to using Kinbiont # Curves from a Kinbiont-convention CSV: # first column times, one column per curve data = GrowthData("well_A3.csv") # Candidate models and initial guesses spec = ModelSpec( [MODEL_REGISTRY["logistic"], MODEL_REGISTRY["gompertz"]], [[0.01, 0.5, 1.2], [0.01, 0.5, 1.2, 0.5]], ) opts = FitOptions( smooth = true, smooth_method = :lowess, blank_subtraction = false, ) results = kinbiont_fit(data, spec, opts) r = results[1] println(r.best_model) # selected by AICc println(r.best_params) println(r.best_aic)
Growth models
GUIbiont exposes the models in Kinbiont's library, which currently contains over 30 parametric and ODE-based growth models, including the adjusted Heterogeneous Population Model.
Validation
GUIbiont was evaluated on a genome-scale knockout screen and a chemically defined media screen, recovering known auxotrophic and nutrient-dependent phenotypes.
3,885 single-gene deletion strains grown in rich LB and M63 minimal medium, with replicates averaged by strain and medium.
Per-strain mean curves for each medium, from up to six biological replicates measured at 15-minute intervals.
Evaluated over the complete 0.25–50 h trajectories. Identified 97 non-growing trajectories in M63 and none in LB; all remained below OD600 = 0.018 throughout.
WCSS evaluated for k = 1…10 on z-score-normalized trajectories. k = 2 selected for LB and k = 3 for M63, the latter comprising two dynamic clusters plus the separate non-growing class.
Of the 97 non-growing strains, 82 (84.5%) carried deletions in amino-acid, cofactor or nucleotide biosynthesis genes, including 49 in amino-acid biosynthesis — enriched 11.8-fold and 19.1-fold respectively (one-sided Fisher exact tests, both P < 10⁻⁶). The pre-screen recovered this auxotrophy signature without using genotype annotations.
E. coli BW25113 grown in 1,029 chemically defined media varying in the concentrations of 44 compounds, fitted with the model-free log-linear sliding-window estimator.
Run per experimental round through the batch log-linear endpoint with rolling-average smoothing. Records without a usable fit are retained in the output with their fit status rather than dropped.
Fitted parameters matched by curve label to medium identifier, with replicate estimates averaged so each medium contributes one parameter row and one feature row of 44 compound concentrations.
Spearman correlations, cross-validated random-forest regression and permutation importance for μmax and Nmax, with replicate averaging applied before cross-validation so each medium occurs in one fold.
Code export
GUI operations are not confined to an opaque session. Single-curve fits, batch runs and clustering analyses download as Julia scripts that rerun the workflow from local source files, so results can be audited, scaled and shared.
# Growth curve fitting — exported from GUIbiont # Reruns the workflow from local source files; no # GUI curve or GUI result is embedded in the script. using Kinbiont using Statistics const CLEAN_DATA_PATH = "path/to/Clean_data" const EXPERIMENT = "experiment_01" const WELL = "A3" # (loader block abbreviated: the exported script # reads CLEAN_DATA_PATH and locates WELL as `idx`) data = GrowthData( reshape(vec(source.data.curves[idx, :]), 1, :), source.data.times, [WELL]) fit = kinbiont_batch_fit( data; experiment = EXPERIMENT, labels = [WELL], type_of_smoothing = "rolling_avg", pt_avg = 7, ) r = only(fit.results) println("Model: ", r["model"]) println("Parameters: ", r["parameters"]) println("AICc: ", r["aic"]) println("RMSE: ", r["loss_rmse"])
GUIbiont runs locally on any machine with Julia. Source code, documentation and example datasets are on GitHub.
Citation
If GUIbiont contributes to work you publish, please cite the manuscript and the software release, and cite Kinbiont.jl for the underlying methods.
Alvarenga E.Z., Oltolini E., Pinheiro F. No-code microbial growth phenotyping with GUIbiont. Preprint.
GUIbiont v1.1.0, archived at 10.5281/zenodo.21921432. Citation metadata in CITATION.cff. See the releases page.
Angaroni F. et al. Kinbiont.jl. github.com/pinheiroGroup/Kinbiont.jl
Scripts for the two case studies: ecoli-knockout-growth-atlas and chemical-media-analysis.