
Generate Alpha Diversity Change Boxplot (Paired)
Source:R/generate_alpha_change_boxplot_pair.R
generate_alpha_change_boxplot_pair.RdGenerates boxplots comparing the change in alpha diversity indices between two time points (paired design), with optional grouping and stratification.
Usage
generate_alpha_change_boxplot_pair(
data.obj,
alpha.obj = NULL,
alpha.name = c("shannon", "observed_species"),
depth = NULL,
subject.var,
time.var,
group.var = NULL,
strata.var = NULL,
adj.vars = NULL,
change.base = NULL,
alpha.change.func = c("log fold change"),
base.size = 16,
theme.choice = "bw",
custom.theme = NULL,
palette = NULL,
pdf = TRUE,
file.ann = NULL,
pdf.wid = 11,
pdf.hei = 8.5,
...
)Arguments
- data.obj
A MicrobiomeStat data object, which is a list containing at minimum the following components:
feature.tab: A matrix of feature abundances (taxa/genes as rows, samples as columns)meta.dat: A data frame of sample metadata (samples as rows)
Optional components include:
feature.ann: A matrix/data frame of feature annotations (e.g., taxonomy)tree: A phylogenetic tree object (class "phylo")feature.agg.list: Pre-aggregated feature tables by taxonomy
Data objects can be created using converters like
mStat_convert_phyloseq_to_data_objor importers likemStat_import_qiime2_as_data_obj.- alpha.obj
A list containing pre-calculated alpha diversity indices. If NULL and alpha diversity is needed, it will be calculated automatically. Names should match the alpha.name parameter (e.g., "shannon", "simpson"). See
mStat_calculate_alpha_diversity.- alpha.name
Character vector specifying which alpha diversity indices to analyze. Options include:
"shannon": Shannon diversity index
"simpson": Simpson diversity index
"observed_species": Observed species richness
"chao1": Chao1 richness estimator
"ace": ACE richness estimator
"pielou": Pielou's evenness
"faith_pd": Faith's phylogenetic diversity (requires a tree)
- depth
Numeric value or NULL. Rarefaction depth for rarefaction workflows. If NULL, uses the minimum sample depth.
- subject.var
Character string specifying the column name in meta.dat that uniquely identifies each subject or sample unit. Required for longitudinal and paired designs to track repeated measurements.
- time.var
Character string specifying the column name in meta.dat containing the time variable. Required for longitudinal and paired analyses. Supports character/factor labels (e.g., "baseline", "week4") and numeric values. Some trend/volatility methods require numeric or coercible-to-numeric time values.
- group.var
Character string specifying the column name in meta.dat containing the grouping variable (e.g., treatment, condition, phenotype). Used for between-group comparisons.
- strata.var
Character string specifying the column name in meta.dat for stratification. When provided, analyses and visualizations will be performed separately within each stratum (e.g., by site, batch, or sex).
- adj.vars
Character vector specifying column names in meta.dat to be used as covariates for adjustment in statistical models. These variables will be included as fixed effects.
- change.base
The base time for calculating the change in alpha diversity.
- alpha.change.func
Function or method for calculating change in alpha diversity between two timepoints. Options include 'log fold change', 'absolute change', or a custom function taking two arguments (t, t0).
- base.size
Numeric value specifying the base font size for plot text elements. Default is typically 16.
- theme.choice
Character string specifying the ggplot2 theme to use. Options include:
"bw": Black and white theme (theme_bw)
"classic": Classic theme (theme_classic)
"gray": Gray theme (theme_gray)
"light": Light theme (theme_light)
"dark": Dark theme (theme_dark)
"minimal": Minimal theme (theme_minimal)
"void": Void theme (theme_void)
"prism": GraphPad Prism-like theme
Can also use a custom ggplot2 theme object via custom.theme.
- custom.theme
A custom ggplot2 theme object to override theme.choice. Should be created using ggplot2::theme() or a complete theme function.
- palette
Character vector of colors or a named palette for the plot. If NULL, uses default MicrobiomeStat color scheme. Can be:
A vector of color codes (e.g., c("#E41A1C", "#377EB8"))
A palette name recognized by the plotting function
Logical. If TRUE, saves the plot(s) to PDF file(s) in the current working directory. Default is TRUE.
- file.ann
Character string for additional annotation to append to output filenames. Useful for distinguishing multiple outputs.
- pdf.wid
Numeric value specifying the width of PDF output in inches. Default is typically 11.
- pdf.hei
Numeric value specifying the height of PDF output in inches. Default is typically 8.5.
- ...
(Optional) Additional arguments to pass to the plotting function.
Value
A boxplot displaying the change in the specified alpha diversity index between two time points, stratified by the specified grouping and/or strata variables (if provided). The boxplot will be saved as a PDF if `pdf` is set to `TRUE`.
Examples
if (FALSE) { # \dontrun{
library(vegan)
data(peerj32.obj)
# Example 1: Both group.var and strata.var are NULL
generate_alpha_change_boxplot_pair(
data.obj = peerj32.obj,
alpha.obj = NULL,
alpha.name = "simpson",
subject.var = "subject",
time.var = "time",
group.var = NULL,
strata.var = NULL,
adj.vars = NULL,
change.base = "1",
alpha.change.func = "absolute change",
base.size = 16,
theme.choice = "bw",
palette = "lancet",
pdf = TRUE,
file.ann = "no_groups",
pdf.wid = 11,
pdf.hei = 8.5
)
# Example 2: Only group.var is non-NULL
generate_alpha_change_boxplot_pair(
data.obj = peerj32.obj,
alpha.obj = NULL,
alpha.name = "simpson",
subject.var = "subject",
time.var = "time",
group.var = "group",
strata.var = NULL,
adj.vars = NULL,
change.base = "1",
alpha.change.func = "log fold change",
base.size = 16,
theme.choice = "classic",
palette = "npg",
pdf = TRUE,
file.ann = "group_only",
pdf.wid = 11,
pdf.hei = 8.5
)
# Example 3: Both group.var and strata.var are non-NULL
generate_alpha_change_boxplot_pair(
data.obj = peerj32.obj,
alpha.obj = NULL,
alpha.name = "simpson",
subject.var = "subject",
time.var = "time",
group.var = "group",
strata.var = "sex",
adj.vars = NULL,
change.base = "1",
alpha.change.func = "log fold change",
base.size = 16,
theme.choice = "gray",
palette = "aaas",
pdf = TRUE,
file.ann = "group_and_strata",
pdf.wid = 11,
pdf.hei = 8.5
)
# Example 4: Both group.var and adj.vars are non-NULL, strata.var is NULL
generate_alpha_change_boxplot_pair(
data.obj = peerj32.obj,
alpha.obj = NULL,
alpha.name = "simpson",
subject.var = "subject",
time.var = "time",
group.var = "group",
strata.var = NULL,
adj.vars = c("sex"),
change.base = "1",
alpha.change.func = "absolute change",
base.size = 16,
theme.choice = "minimal",
palette = "jama",
pdf = TRUE,
file.ann = "group_and_adj",
pdf.wid = 11,
pdf.hei = 8.5
)
data("subset_pairs.obj")
generate_alpha_change_boxplot_pair(
data.obj = subset_pairs.obj,
alpha.obj = NULL,
alpha.name = c("simpson"),
subject.var = "MouseID",
time.var = "Antibiotic",
group.var = "Sex",
strata.var = NULL,
adj.vars = NULL,
change.base = "Baseline",
alpha.change.func = "log fold change",
base.size = 16,
theme.choice = "bw",
palette = "lancet",
pdf = TRUE,
file.ann = NULL,
pdf.wid = 11,
pdf.hei = 8.5
)
} # }