MaAsLin2 User Manual

MaAsLin2 is the next generation of MaAsLin (Microbiome Multivariable Association with Linear Models).

MaAsLin2 is comprehensive R package for efficiently determining multivariable association between clinical metadata and microbial meta-omics features. MaAsLin2 relies on general linear models to accommodate most modern epidemiological study designs, including cross-sectional and longitudinal, along with a variety of filtering, normalization, and transform methods.

If you use the MaAsLin2 software, please cite our manuscript:

Mallick H, Rahnavard A, McIver LJ, Ma S, Zhang Y, Nguyen LH, Tickle TL, Weingart G, Ren B, Schwager EH, Chatterjee S, Thompson KN, Wilkinson JE, Subramanian A, Lu Y, Waldron L, Paulson JN, Franzosa EA, Bravo HC, Huttenhower C (2021). Multivariable Association Discovery in Population-scale Meta-omics Studies. PLoS Computational Biology, 17(11):e1009442.

Check out the MaAsLin 2 tutorial for an overview of analysis options.

If you have questions, please direct it to :
MaAsLin2 Forum
Google Groups (Read only)


Description

MaAsLin2 finds associations between microbiome multi-omics features and complex metadata in population-scale epidemiological studies. The software includes multiple analysis methods (with support for multiple covariates and repeated measures), filtering, normalization, and transform options to customize analysis for your specific study.

Requirements

MaAsLin2 is an R package that can be run on the command line or as an R function.

Installation

MaAsLin2 can be run from the command line or as an R function. If only running from the command line, you do not need to install the MaAsLin2 package but you will need to install the MaAsLin2 dependencies.

From command line

  1. Download the source: MaAsLin2.tar.gz
  2. Decompress the download:
    • $ tar xzvf maaslin2.tar.gz
  3. Install the Bioconductor dependencies edgeR and metagenomeSeq.
  4. Install the CRAN dependencies:
    • $ R -q -e "install.packages(c('lmerTest','pbapply','car','dplyr','vegan','chemometrics','ggplot2','pheatmap','hash','logging','data.table','glmmTMB','MASS','cplm','pscl'), repos='http://cran.r-project.org')"
  5. Install the MaAsLin2 package (only r,equired if running as an R function):
    • $ R CMD INSTALL maaslin2

From R

Install Bioconductor and then install Maaslin2

if(!requireNamespace("BiocManager", quietly = TRUE))
    install.packages("BiocManager")
BiocManager::install("Maaslin2")

How to Run

MaAsLin2 can be run from the command line or as an R function. Both methods require the same arguments, have the same options, and use the same default settings.

Input Files

MaAsLin2 requires two input files.

  1. Data (or features) file
    • This file is tab-delimited.
    • Formatted with features as columns and samples as rows.
    • The transpose of this format is also okay.
    • Possible features in this file include taxonomy or genes.
  2. Metadata file
    • This file is tab-delimited.
    • Formatted with features as columns and samples as rows.
    • The transpose of this format is also okay.
    • Possible metadata in this file include gender or age.

The data file can contain samples not included in the metadata file (along with the reverse case). For both cases, those samples not included in both files will be removed from the analysis. Also the samples do not need to be in the same order in the two files.

NOTE: If running MaAsLin2 as a function, the data and metadata inputs can be of type data.frame instead of a path to a file.

Output Files

MaAsLin2 generates two types of output files: data and visualization.

  1. Data output files
    • all_results.tsv
      • This includes the same data as the data.frame returned.
      • This file contains all results ordered by increasing q-value.
      • The first columns are the metadata and feature names.
      • The next two columns are the value and coefficient from the model.
      • The next column is the standard deviation from the model.
      • The N column is the total number of data points.
      • The N.not.zero column is the total of non-zero data points.
      • The pvalue from the calculation is the second to last column.
      • The qvalue is computed with p.adjust with the correction method.
    • significant_results.tsv
      • This file is a subset of the results in the first file.
      • It only includes associations with q-values <= to the threshold.
    • ``features```
      • This folder includes the filtered, normalized, and transformed versions of the input feature table.
      • These steps are performed sequentially in the above order.
      • If an option is set such that a step does not change the data, the resulting table will still be output.
    • models.rds
      • This file contains a list with every model fit object.
      • It will only be generated if save_models is set to TRUE.
    • residuals.rds
      • This file contains a data frame with residuals for each feature.
    • fitted.rds
      • This file contains a data frame with fitted values for each feature.
    • ranef.rds
      • This file contains a data frame with extracted random effects for each feature (when random effects are specified).
    • maaslin2.log
      • This file contains all log information for the run.
      • It includes all settings, warnings, errors, and steps run.
  2. Visualization output files
    • heatmap.pdf
      • This file contains a heatmap of the significant associations.
    • [a-z/0-9]+.pdf
      • A plot is generated for each significant association.
      • Scatter plots are used for continuous metadata.
      • Box plots are for categorical data.
      • Data points plotted are after filtering but prior to normalization and transform.

Run a Demo

Example input files can be found in the inst/extdata folder of the MaAsLin2 source. The files provided were generated from the HMP2 data which can be downloaded from https://ibdmdb.org/ .

HMP2_taxonomy.tsv: is a tab-demilited file with species as columns and samples as rows. It is a subset of the taxonomy file so it just includes the species abundances for all samples.

HMP2_metadata.tsv: is a tab-delimited file with samples as rows and metadata as columns. It is a subset of the metadata file so that it just includes some of the fields.

Command line

$ Maaslin2.R --fixed_effects="diagnosis,dysbiosisnonIBD,dysbiosisUC,dysbiosisCD,antibiotics,age" --random_effects="site,subject" --standardize=FALSE inst/extdata/HMP2_taxonomy.tsv inst/extdata/HMP2_metadata.tsv demo_output

  • Make sure to provide the full path to the MaAsLin2 executable (ie ./R/Maaslin2.R).
  • In the demo command:
    • HMP2_taxonomy.tsv is the path to your data (or features) file
    • HMP2_metadata.tsv is the path to your metadata file
    • demo_output is the path to the folder to write the output

In R

library(Maaslin2)
input_data <- system.file(
    'extdata','HMP2_taxonomy.tsv', package="Maaslin2")
input_metadata <-system.file(
    'extdata','HMP2_metadata.tsv', package="Maaslin2")
fit_data <- Maaslin2(
    input_data, input_metadata, 'demo_output',
    fixed_effects = c('diagnosis', 'dysbiosisnonIBD','dysbiosisUC','dysbiosisCD', 'antibiotics', 'age'),
    random_effects = c('site', 'subject'),
    reference = "diagnosis,nonIBD",
    standardize = FALSE)
## [1] "Creating output folder"
## [1] "Creating output feature tables folder"
## [1] "Creating output fits folder"
## [1] "Creating output figures folder"
## 2025-01-02 19:52:55.24088 INFO::Writing function arguments to log file
## 2025-01-02 19:52:55.316757 INFO::Verifying options selected are valid
## 2025-01-02 19:52:55.388871 INFO::Determining format of input files
## 2025-01-02 19:52:55.391204 INFO::Input format is data samples as rows and metadata samples as rows
## 2025-01-02 19:52:55.404586 INFO::Formula for random effects: expr ~ (1 | site) + (1 | subject)
## 2025-01-02 19:52:55.407322 INFO::Formula for fixed effects: expr ~  diagnosis + dysbiosisnonIBD + dysbiosisUC + dysbiosisCD + antibiotics + age
## 2025-01-02 19:52:55.413077 INFO::Filter data based on min abundance and min prevalence
## 2025-01-02 19:52:55.415139 INFO::Total samples in data: 1595
## 2025-01-02 19:52:55.416925 INFO::Min samples required with min abundance for a feature not to be filtered: 159.500000
## 2025-01-02 19:52:55.426816 INFO::Total filtered features: 0
## 2025-01-02 19:52:55.429067 INFO::Filtered feature names from abundance and prevalence filtering:
## 2025-01-02 19:52:55.448379 INFO::Total filtered features with variance filtering: 0
## 2025-01-02 19:52:55.450527 INFO::Filtered feature names from variance filtering:
## 2025-01-02 19:52:55.45257 INFO::Running selected normalization method: TSS
## 2025-01-02 19:52:57.709813 INFO::Bypass z-score application to metadata
## 2025-01-02 19:52:57.711969 INFO::Running selected transform method: LOG
## 2025-01-02 19:52:57.751252 INFO::Running selected analysis method: LM
## 2025-01-02 19:52:58.51866 INFO::Fitting model to feature number 1, Bifidobacterium.adolescentis
## boundary (singular) fit: see help('isSingular')
## 2025-01-02 19:52:59.201174 INFO::Fitting model to feature number 2, Bifidobacterium.bifidum
## 2025-01-02 19:52:59.620403 INFO::Fitting model to feature number 3, Bifidobacterium.longum
## 2025-01-02 19:53:00.145499 INFO::Fitting model to feature number 4, Bifidobacterium.pseudocatenulatum
## boundary (singular) fit: see help('isSingular')
## 2025-01-02 19:53:00.452575 INFO::Fitting model to feature number 5, Collinsella.aerofaciens
## 2025-01-02 19:53:00.793329 INFO::Fitting model to feature number 6, Bacteroides.caccae
## boundary (singular) fit: see help('isSingular')
## 2025-01-02 19:53:01.128079 INFO::Fitting model to feature number 7, Bacteroides.cellulosilyticus
## 2025-01-02 19:53:01.42772 INFO::Fitting model to feature number 8, Bacteroides.dorei
## 2025-01-02 19:53:01.759178 INFO::Fitting model to feature number 9, Bacteroides.eggerthii
## 2025-01-02 19:53:02.080479 INFO::Fitting model to feature number 10, Bacteroides.faecis
## 2025-01-02 19:53:02.401219 INFO::Fitting model to feature number 11, Bacteroides.finegoldii
## boundary (singular) fit: see help('isSingular')
## Feature Bacteroides.finegoldii : simpleWarning: Model failed to converge with 1 negative eigenvalue: -7.9e+01
## 2025-01-02 19:53:02.64272 WARNING::Fitting problem for feature 11 a warning was issued
## boundary (singular) fit: see help('isSingular')
## Warning: Model failed to converge with 1 negative eigenvalue: -7.9e+01
## 2025-01-02 19:53:02.937866 INFO::Fitting model to feature number 12, Bacteroides.fragilis
## boundary (singular) fit: see help('isSingular')
## 2025-01-02 19:53:03.247085 INFO::Fitting model to feature number 13, Bacteroides.intestinalis
## boundary (singular) fit: see help('isSingular')
## 2025-01-02 19:53:03.551499 INFO::Fitting model to feature number 14, Bacteroides.massiliensis
## 2025-01-02 19:53:03.82274 INFO::Fitting model to feature number 15, Bacteroides.ovatus
## boundary (singular) fit: see help('isSingular')
## 2025-01-02 19:53:04.104368 INFO::Fitting model to feature number 16, Bacteroides.salyersiae
## 2025-01-02 19:53:04.447025 INFO::Fitting model to feature number 17, Bacteroides.stercoris
## 2025-01-02 19:53:04.740587 INFO::Fitting model to feature number 18, Bacteroides.thetaiotaomicron
## boundary (singular) fit: see help('isSingular')
## 2025-01-02 19:53:05.030291 INFO::Fitting model to feature number 19, Bacteroides.uniformis
## boundary (singular) fit: see help('isSingular')
## 2025-01-02 19:53:05.343635 INFO::Fitting model to feature number 20, Bacteroides.vulgatus
## boundary (singular) fit: see help('isSingular')
## 2025-01-02 19:53:05.632505 INFO::Fitting model to feature number 21, Bacteroides.xylanisolvens
## boundary (singular) fit: see help('isSingular')
## 2025-01-02 19:53:05.917762 INFO::Fitting model to feature number 22, Bacteroidales.bacterium.ph8
## 2025-01-02 19:53:06.224466 INFO::Fitting model to feature number 23, Barnesiella.intestinihominis
## 2025-01-02 19:53:06.517137 INFO::Fitting model to feature number 24, Coprobacter.fastidiosus
## 2025-01-02 19:53:06.819449 INFO::Fitting model to feature number 25, Odoribacter.splanchnicus
## 2025-01-02 19:53:07.110386 INFO::Fitting model to feature number 26, Parabacteroides.distasonis
## boundary (singular) fit: see help('isSingular')
## 2025-01-02 19:53:07.413365 INFO::Fitting model to feature number 27, Parabacteroides.goldsteinii
## 2025-01-02 19:53:07.747696 INFO::Fitting model to feature number 28, Parabacteroides.merdae
## 2025-01-02 19:53:08.058779 INFO::Fitting model to feature number 29, Parabacteroides.unclassified
## boundary (singular) fit: see help('isSingular')
## 2025-01-02 19:53:08.338142 INFO::Fitting model to feature number 30, Paraprevotella.clara
## 2025-01-02 19:53:08.636418 INFO::Fitting model to feature number 31, Paraprevotella.unclassified
## 2025-01-02 19:53:08.935848 INFO::Fitting model to feature number 32, Prevotella.copri
## boundary (singular) fit: see help('isSingular')
## 2025-01-02 19:53:09.248643 INFO::Fitting model to feature number 33, Alistipes.finegoldii
## boundary (singular) fit: see help('isSingular')
## 2025-01-02 19:53:09.539195 INFO::Fitting model to feature number 34, Alistipes.onderdonkii
## boundary (singular) fit: see help('isSingular')
## 2025-01-02 19:53:09.845753 INFO::Fitting model to feature number 35, Alistipes.putredinis
## boundary (singular) fit: see help('isSingular')
## 2025-01-02 19:53:10.147039 INFO::Fitting model to feature number 36, Alistipes.shahii
## 2025-01-02 19:53:10.453699 INFO::Fitting model to feature number 37, Alistipes.unclassified
## 2025-01-02 19:53:10.762611 INFO::Fitting model to feature number 38, Streptococcus.salivarius
## 2025-01-02 19:53:11.049133 INFO::Fitting model to feature number 39, Clostridium.bolteae
## boundary (singular) fit: see help('isSingular')
## 2025-01-02 19:53:11.353197 INFO::Fitting model to feature number 40, Clostridium.citroniae
## boundary (singular) fit: see help('isSingular')
## Feature Clostridium.citroniae : simpleWarning: Model failed to converge with 1 negative eigenvalue: -3.4e+01
## 2025-01-02 19:53:11.609019 WARNING::Fitting problem for feature 40 a warning was issued
## boundary (singular) fit: see help('isSingular')
## Warning: Model failed to converge with 1 negative eigenvalue: -3.4e+01
## 2025-01-02 19:53:11.913188 INFO::Fitting model to feature number 41, Clostridium.clostridioforme
## boundary (singular) fit: see help('isSingular')
## 2025-01-02 19:53:12.214133 INFO::Fitting model to feature number 42, Clostridium.hathewayi
## boundary (singular) fit: see help('isSingular')
## 2025-01-02 19:53:12.50572 INFO::Fitting model to feature number 43, Clostridium.leptum
## 2025-01-02 19:53:12.83507 INFO::Fitting model to feature number 44, Clostridium.nexile
## 2025-01-02 19:53:13.130015 INFO::Fitting model to feature number 45, Clostridium.symbiosum
## boundary (singular) fit: see help('isSingular')
## 2025-01-02 19:53:13.430613 INFO::Fitting model to feature number 46, Flavonifractor.plautii
## boundary (singular) fit: see help('isSingular')
## 2025-01-02 19:53:13.745456 INFO::Fitting model to feature number 47, Eubacterium.eligens
## 2025-01-02 19:53:14.037193 INFO::Fitting model to feature number 48, Eubacterium.hallii
## 2025-01-02 19:53:14.359737 INFO::Fitting model to feature number 49, Eubacterium.rectale
## boundary (singular) fit: see help('isSingular')
## 2025-01-02 19:53:14.667345 INFO::Fitting model to feature number 50, Eubacterium.siraeum
## boundary (singular) fit: see help('isSingular')
## 2025-01-02 19:53:14.968553 INFO::Fitting model to feature number 51, Eubacterium.sp.3.1.31
## boundary (singular) fit: see help('isSingular')
## 2025-01-02 19:53:15.274071 INFO::Fitting model to feature number 52, Eubacterium.ventriosum
## boundary (singular) fit: see help('isSingular')
## 2025-01-02 19:53:15.557706 INFO::Fitting model to feature number 53, Ruminococcus.gnavus
## boundary (singular) fit: see help('isSingular')
## 2025-01-02 19:53:15.839114 INFO::Fitting model to feature number 54, Ruminococcus.obeum
## 2025-01-02 19:53:16.140099 INFO::Fitting model to feature number 55, Ruminococcus.torques
## 2025-01-02 19:53:16.426377 INFO::Fitting model to feature number 56, Coprococcus.comes
## 2025-01-02 19:53:16.726177 INFO::Fitting model to feature number 57, Dorea.longicatena
## boundary (singular) fit: see help('isSingular')
## 2025-01-02 19:53:17.035255 INFO::Fitting model to feature number 58, Lachnospiraceae.bacterium.1.1.57FAA
## boundary (singular) fit: see help('isSingular')
## 2025-01-02 19:53:17.342362 INFO::Fitting model to feature number 59, Lachnospiraceae.bacterium.3.1.46FAA
## boundary (singular) fit: see help('isSingular')
## 2025-01-02 19:53:17.655403 INFO::Fitting model to feature number 60, Roseburia.hominis
## boundary (singular) fit: see help('isSingular')
## 2025-01-02 19:53:17.976421 INFO::Fitting model to feature number 61, Roseburia.intestinalis
## 2025-01-02 19:53:18.251789 INFO::Fitting model to feature number 62, Roseburia.inulinivorans
## boundary (singular) fit: see help('isSingular')
## 2025-01-02 19:53:18.546081 INFO::Fitting model to feature number 63, Roseburia.unclassified
## boundary (singular) fit: see help('isSingular')
## 2025-01-02 19:53:18.871064 INFO::Fitting model to feature number 64, Oscillibacter.unclassified
## 2025-01-02 19:53:19.194968 INFO::Fitting model to feature number 65, Peptostreptococcaceae.noname.unclassified
## 2025-01-02 19:53:19.500151 INFO::Fitting model to feature number 66, Faecalibacterium.prausnitzii
## 2025-01-02 19:53:19.814308 INFO::Fitting model to feature number 67, Ruminococcus.bromii
## boundary (singular) fit: see help('isSingular')
## 2025-01-02 19:53:20.106362 INFO::Fitting model to feature number 68, Ruminococcus.callidus
## 2025-01-02 19:53:20.421487 INFO::Fitting model to feature number 69, Ruminococcus.lactaris
## 2025-01-02 19:53:20.711445 INFO::Fitting model to feature number 70, Subdoligranulum.unclassified
## boundary (singular) fit: see help('isSingular')
## 2025-01-02 19:53:21.033907 INFO::Fitting model to feature number 71, Coprobacillus.unclassified
## 2025-01-02 19:53:21.322757 INFO::Fitting model to feature number 72, Acidaminococcus.unclassified
## 2025-01-02 19:53:21.632215 INFO::Fitting model to feature number 73, Dialister.invisus
## boundary (singular) fit: see help('isSingular')
## 2025-01-02 19:53:22.191865 INFO::Fitting model to feature number 74, Veillonella.atypica
## 2025-01-02 19:53:22.482072 INFO::Fitting model to feature number 75, Veillonella.dispar
## boundary (singular) fit: see help('isSingular')
## 2025-01-02 19:53:22.765342 INFO::Fitting model to feature number 76, Veillonella.parvula
## boundary (singular) fit: see help('isSingular')
## 2025-01-02 19:53:23.054302 INFO::Fitting model to feature number 77, Veillonella.unclassified
## 2025-01-02 19:53:23.338967 INFO::Fitting model to feature number 78, Burkholderiales.bacterium.1.1.47
## 2025-01-02 19:53:23.634027 INFO::Fitting model to feature number 79, Parasutterella.excrementihominis
## 2025-01-02 19:53:23.913775 INFO::Fitting model to feature number 80, Sutterella.wadsworthensis
## 2025-01-02 19:53:24.201446 INFO::Fitting model to feature number 81, Bilophila.unclassified
## 2025-01-02 19:53:24.513254 INFO::Fitting model to feature number 82, Escherichia.coli
## 2025-01-02 19:53:24.815406 INFO::Fitting model to feature number 83, Escherichia.unclassified
## 2025-01-02 19:53:25.110469 INFO::Fitting model to feature number 84, Klebsiella.pneumoniae
## boundary (singular) fit: see help('isSingular')
## 2025-01-02 19:53:25.402165 INFO::Fitting model to feature number 85, Haemophilus.parainfluenzae
## boundary (singular) fit: see help('isSingular')
## 2025-01-02 19:53:25.692324 INFO::Fitting model to feature number 86, Akkermansia.muciniphila
## 2025-01-02 19:53:25.997455 INFO::Fitting model to feature number 87, C2likevirus.unclassified
## 2025-01-02 19:53:26.401515 INFO::Counting total values for each feature
## 2025-01-02 19:53:26.495383 INFO::Writing filtered data to file demo_output/features/filtered_data.tsv
## 2025-01-02 19:53:26.736741 INFO::Writing filtered, normalized data to file demo_output/features/filtered_data_norm.tsv
## 2025-01-02 19:53:27.083712 INFO::Writing filtered, normalized, transformed data to file demo_output/features/filtered_data_norm_transformed.tsv
## 2025-01-02 19:53:27.538299 INFO::Writing residuals to file demo_output/fits/residuals.rds
## 2025-01-02 19:53:27.672977 INFO::Writing fitted values to file demo_output/fits/fitted.rds
## 2025-01-02 19:53:27.731049 INFO::Writing extracted random effects to file demo_output/fits/ranef.rds
## 2025-01-02 19:53:27.743574 INFO::Writing all results to file (ordered by increasing q-values): demo_output/all_results.tsv
## 2025-01-02 19:53:27.759411 INFO::Writing the significant results (those which are less than or equal to the threshold of 0.250000 ) to file (ordered by increasing q-values): demo_output/significant_results.tsv
## 2025-01-02 19:53:27.767183 INFO::Writing heatmap of significant results to file: demo_output/heatmap.pdf
## 2025-01-02 19:53:28.156452 INFO::Writing association plots (one for each significant association) to output folder: demo_output
## 2025-01-02 19:53:28.170212 INFO::Plotting associations from most to least significant, grouped by metadata
## 2025-01-02 19:53:28.172264 INFO::Plotting data for metadata number 1, dysbiosisCD
## 2025-01-02 19:53:28.175893 INFO::Creating boxplot for categorical data, dysbiosisCD vs Faecalibacterium.prausnitzii
## 2025-01-02 19:53:28.943405 INFO::Creating boxplot for categorical data, dysbiosisCD vs Subdoligranulum.unclassified
## 2025-01-02 19:53:29.591353 INFO::Creating boxplot for categorical data, dysbiosisCD vs Bacteroides.uniformis
## 2025-01-02 19:53:30.181801 INFO::Creating boxplot for categorical data, dysbiosisCD vs Eubacterium.rectale
## 2025-01-02 19:53:30.755539 INFO::Creating boxplot for categorical data, dysbiosisCD vs Bacteroides.vulgatus
## 2025-01-02 19:53:31.337937 INFO::Creating boxplot for categorical data, dysbiosisCD vs Bacteroides.ovatus
## 2025-01-02 19:53:31.923592 INFO::Creating boxplot for categorical data, dysbiosisCD vs Ruminococcus.obeum
## 2025-01-02 19:53:32.511901 INFO::Creating boxplot for categorical data, dysbiosisCD vs Oscillibacter.unclassified
## 2025-01-02 19:53:33.06809 INFO::Creating boxplot for categorical data, dysbiosisCD vs Roseburia.inulinivorans
## 2025-01-02 19:53:33.659198 INFO::Creating boxplot for categorical data, dysbiosisCD vs Roseburia.hominis
## 2025-01-02 19:53:34.233635 INFO::Creating boxplot for categorical data, dysbiosisCD vs Bacteroides.thetaiotaomicron
## 2025-01-02 19:53:34.820549 INFO::Creating boxplot for categorical data, dysbiosisCD vs Alistipes.putredinis
## 2025-01-02 19:53:35.40002 INFO::Creating boxplot for categorical data, dysbiosisCD vs Parabacteroides.distasonis
## 2025-01-02 19:53:36.000363 INFO::Creating boxplot for categorical data, dysbiosisCD vs Bacteroides.dorei
## 2025-01-02 19:53:36.581808 INFO::Creating boxplot for categorical data, dysbiosisCD vs Alistipes.shahii
## 2025-01-02 19:53:37.156894 INFO::Creating boxplot for categorical data, dysbiosisCD vs Bacteroides.xylanisolvens
## 2025-01-02 19:53:37.714195 INFO::Creating boxplot for categorical data, dysbiosisCD vs Clostridium.leptum
## 2025-01-02 19:53:38.284444 INFO::Creating boxplot for categorical data, dysbiosisCD vs Dorea.longicatena
## 2025-01-02 19:53:38.89841 INFO::Creating boxplot for categorical data, dysbiosisCD vs Bacteroides.caccae
## 2025-01-02 19:53:39.525864 INFO::Creating boxplot for categorical data, dysbiosisCD vs Lachnospiraceae.bacterium.3.1.46FAA
## 2025-01-02 19:53:40.128029 INFO::Creating boxplot for categorical data, dysbiosisCD vs Escherichia.coli
## 2025-01-02 19:53:40.719507 INFO::Creating boxplot for categorical data, dysbiosisCD vs Klebsiella.pneumoniae
## 2025-01-02 19:53:41.307805 INFO::Creating boxplot for categorical data, dysbiosisCD vs Bilophila.unclassified
## 2025-01-02 19:53:41.876851 INFO::Creating boxplot for categorical data, dysbiosisCD vs Alistipes.finegoldii
## 2025-01-02 19:53:42.446169 INFO::Creating boxplot for categorical data, dysbiosisCD vs Eubacterium.eligens
## 2025-01-02 19:53:43.151702 INFO::Creating boxplot for categorical data, dysbiosisCD vs Bacteroides.stercoris
## 2025-01-02 19:53:43.714918 INFO::Creating boxplot for categorical data, dysbiosisCD vs Coprococcus.comes
## 2025-01-02 19:53:44.360054 INFO::Creating boxplot for categorical data, dysbiosisCD vs Bacteroides.fragilis
## 2025-01-02 19:53:44.955046 INFO::Creating boxplot for categorical data, dysbiosisCD vs Bacteroides.finegoldii
## 2025-01-02 19:53:45.549934 INFO::Creating boxplot for categorical data, dysbiosisCD vs Eubacterium.hallii
## 2025-01-02 19:53:46.130693 INFO::Creating boxplot for categorical data, dysbiosisCD vs Bacteroides.faecis
## 2025-01-02 19:53:46.7282 INFO::Creating boxplot for categorical data, dysbiosisCD vs Paraprevotella.clara
## 2025-01-02 19:53:47.319017 INFO::Creating boxplot for categorical data, dysbiosisCD vs Eubacterium.siraeum
## 2025-01-02 19:53:47.890304 INFO::Creating boxplot for categorical data, dysbiosisCD vs Parabacteroides.merdae
## 2025-01-02 19:53:48.45866 INFO::Creating boxplot for categorical data, dysbiosisCD vs Paraprevotella.unclassified
## 2025-01-02 19:53:49.080283 INFO::Creating boxplot for categorical data, dysbiosisCD vs Collinsella.aerofaciens
## 2025-01-02 19:53:49.655403 INFO::Creating boxplot for categorical data, dysbiosisCD vs Odoribacter.splanchnicus
## 2025-01-02 19:53:50.237381 INFO::Creating boxplot for categorical data, dysbiosisCD vs Clostridium.clostridioforme
## 2025-01-02 19:53:50.817119 INFO::Creating boxplot for categorical data, dysbiosisCD vs Bacteroides.eggerthii
## 2025-01-02 19:53:51.424707 INFO::Creating boxplot for categorical data, dysbiosisCD vs Alistipes.onderdonkii
## 2025-01-02 19:53:52.041506 INFO::Creating boxplot for categorical data, dysbiosisCD vs Eubacterium.ventriosum
## 2025-01-02 19:53:52.71191 INFO::Creating boxplot for categorical data, dysbiosisCD vs Ruminococcus.lactaris
## 2025-01-02 19:53:53.274097 INFO::Creating boxplot for categorical data, dysbiosisCD vs Burkholderiales.bacterium.1.1.47
## 2025-01-02 19:53:53.854773 INFO::Creating boxplot for categorical data, dysbiosisCD vs Dialister.invisus
## 2025-01-02 19:53:54.440975 INFO::Creating boxplot for categorical data, dysbiosisCD vs Ruminococcus.bromii
## 2025-01-02 19:53:55.050423 INFO::Creating boxplot for categorical data, dysbiosisCD vs Parasutterella.excrementihominis
## 2025-01-02 19:53:55.639561 INFO::Creating boxplot for categorical data, dysbiosisCD vs Alistipes.unclassified
## 2025-01-02 19:53:56.296592 INFO::Creating boxplot for categorical data, dysbiosisCD vs Ruminococcus.torques
## 2025-01-02 19:53:56.874928 INFO::Creating boxplot for categorical data, dysbiosisCD vs Coprobacillus.unclassified
## 2025-01-02 19:53:57.487285 INFO::Creating boxplot for categorical data, dysbiosisCD vs Bacteroides.cellulosilyticus
## 2025-01-02 19:53:58.075251 INFO::Creating boxplot for categorical data, dysbiosisCD vs Roseburia.intestinalis
## 2025-01-02 19:53:58.633526 INFO::Creating boxplot for categorical data, dysbiosisCD vs Parabacteroides.unclassified
## 2025-01-02 19:53:59.258867 INFO::Creating boxplot for categorical data, dysbiosisCD vs Acidaminococcus.unclassified
## 2025-01-02 19:53:59.879911 INFO::Creating boxplot for categorical data, dysbiosisCD vs Barnesiella.intestinihominis
## 2025-01-02 19:54:00.490091 INFO::Creating boxplot for categorical data, dysbiosisCD vs Bacteroides.massiliensis
## 2025-01-02 19:54:01.052233 INFO::Creating boxplot for categorical data, dysbiosisCD vs Eubacterium.sp.3.1.31
## 2025-01-02 19:54:01.617428 INFO::Creating boxplot for categorical data, dysbiosisCD vs Bacteroides.salyersiae
## 2025-01-02 19:54:02.179021 INFO::Creating boxplot for categorical data, dysbiosisCD vs Bacteroidales.bacterium.ph8
## 2025-01-02 19:54:02.734508 INFO::Creating boxplot for categorical data, dysbiosisCD vs Clostridium.citroniae
## 2025-01-02 19:54:03.301591 INFO::Creating boxplot for categorical data, dysbiosisCD vs Flavonifractor.plautii
## 2025-01-02 19:54:03.854625 INFO::Creating boxplot for categorical data, dysbiosisCD vs Parabacteroides.goldsteinii
## 2025-01-02 19:54:04.450683 INFO::Creating boxplot for categorical data, dysbiosisCD vs Bifidobacterium.longum
## 2025-01-02 19:54:05.338697 INFO::Creating boxplot for categorical data, dysbiosisCD vs Lachnospiraceae.bacterium.1.1.57FAA
## 2025-01-02 19:54:11.818972 INFO::Plotting data for metadata number 2, dysbiosisUC
## 2025-01-02 19:54:11.823594 INFO::Creating boxplot for categorical data, dysbiosisUC vs Subdoligranulum.unclassified
## 2025-01-02 19:54:12.336675 INFO::Creating boxplot for categorical data, dysbiosisUC vs Faecalibacterium.prausnitzii
## 2025-01-02 19:54:12.851662 INFO::Creating boxplot for categorical data, dysbiosisUC vs Bacteroides.caccae
## 2025-01-02 19:54:13.414518 INFO::Creating boxplot for categorical data, dysbiosisUC vs Oscillibacter.unclassified
## 2025-01-02 19:54:13.95426 INFO::Creating boxplot for categorical data, dysbiosisUC vs Bacteroides.uniformis
## 2025-01-02 19:54:14.522495 INFO::Creating boxplot for categorical data, dysbiosisUC vs Eubacterium.siraeum
## 2025-01-02 19:54:15.094313 INFO::Creating boxplot for categorical data, dysbiosisUC vs Bacteroides.ovatus
## 2025-01-02 19:54:15.801467 INFO::Creating boxplot for categorical data, dysbiosisUC vs Bacteroides.fragilis
## 2025-01-02 19:54:16.348348 INFO::Creating boxplot for categorical data, dysbiosisUC vs Alistipes.shahii
## 2025-01-02 19:54:16.923422 INFO::Creating boxplot for categorical data, dysbiosisUC vs Eubacterium.rectale
## 2025-01-02 19:54:17.46784 INFO::Creating boxplot for categorical data, dysbiosisUC vs Roseburia.hominis
## 2025-01-02 19:54:18.020744 INFO::Creating boxplot for categorical data, dysbiosisUC vs Alistipes.putredinis
## 2025-01-02 19:54:18.589287 INFO::Creating boxplot for categorical data, dysbiosisUC vs Lachnospiraceae.bacterium.3.1.46FAA
## 2025-01-02 19:54:19.203797 INFO::Creating boxplot for categorical data, dysbiosisUC vs Eubacterium.hallii
## 2025-01-02 19:54:19.829371 INFO::Creating boxplot for categorical data, dysbiosisUC vs Bacteroides.xylanisolvens
## 2025-01-02 19:54:20.465555 INFO::Creating boxplot for categorical data, dysbiosisUC vs Bacteroides.stercoris
## 2025-01-02 19:54:21.100919 INFO::Creating boxplot for categorical data, dysbiosisUC vs Alistipes.finegoldii
## 2025-01-02 19:54:21.699397 INFO::Creating boxplot for categorical data, dysbiosisUC vs Barnesiella.intestinihominis
## 2025-01-02 19:54:22.264559 INFO::Creating boxplot for categorical data, dysbiosisUC vs Clostridium.leptum
## 2025-01-02 19:54:22.828124 INFO::Creating boxplot for categorical data, dysbiosisUC vs Ruminococcus.gnavus
## 2025-01-02 19:54:23.405532 INFO::Creating boxplot for categorical data, dysbiosisUC vs Alistipes.onderdonkii
## 2025-01-02 19:54:23.982426 INFO::Creating boxplot for categorical data, dysbiosisUC vs Flavonifractor.plautii
## 2025-01-02 19:54:24.547895 INFO::Creating boxplot for categorical data, dysbiosisUC vs Parabacteroides.merdae
## 2025-01-02 19:54:25.173352 INFO::Creating boxplot for categorical data, dysbiosisUC vs Bacteroides.cellulosilyticus
## 2025-01-02 19:54:25.761741 INFO::Creating boxplot for categorical data, dysbiosisUC vs Bifidobacterium.longum
## 2025-01-02 19:54:26.324729 INFO::Creating boxplot for categorical data, dysbiosisUC vs Klebsiella.pneumoniae
## 2025-01-02 19:54:26.894889 INFO::Creating boxplot for categorical data, dysbiosisUC vs Clostridium.citroniae
## 2025-01-02 19:54:27.472624 INFO::Creating boxplot for categorical data, dysbiosisUC vs Eubacterium.ventriosum
## 2025-01-02 19:54:28.021089 INFO::Creating boxplot for categorical data, dysbiosisUC vs Parabacteroides.distasonis
## 2025-01-02 19:54:28.593456 INFO::Creating boxplot for categorical data, dysbiosisUC vs Parabacteroides.goldsteinii
## 2025-01-02 19:54:29.153081 INFO::Creating boxplot for categorical data, dysbiosisUC vs Ruminococcus.torques
## 2025-01-02 19:54:29.732739 INFO::Creating boxplot for categorical data, dysbiosisUC vs Bacteroidales.bacterium.ph8
## 2025-01-02 19:54:30.325146 INFO::Creating boxplot for categorical data, dysbiosisUC vs Ruminococcus.obeum
## 2025-01-02 19:54:30.889357 INFO::Creating boxplot for categorical data, dysbiosisUC vs Bifidobacterium.bifidum
## 2025-01-02 19:54:31.470034 INFO::Creating boxplot for categorical data, dysbiosisUC vs Bifidobacterium.adolescentis
## 2025-01-02 19:54:32.032821 INFO::Creating boxplot for categorical data, dysbiosisUC vs Collinsella.aerofaciens
## 2025-01-02 19:54:32.631273 INFO::Creating boxplot for categorical data, dysbiosisUC vs Clostridium.hathewayi
## 2025-01-02 19:54:33.19923 INFO::Creating boxplot for categorical data, dysbiosisUC vs Bilophila.unclassified
## 2025-01-02 19:54:33.829319 INFO::Creating boxplot for categorical data, dysbiosisUC vs Eubacterium.eligens
## 2025-01-02 19:54:34.396866 INFO::Creating boxplot for categorical data, dysbiosisUC vs Bacteroides.vulgatus
## 2025-01-02 19:54:35.015403 INFO::Creating boxplot for categorical data, dysbiosisUC vs Clostridium.bolteae
## 2025-01-02 19:54:35.619024 INFO::Creating boxplot for categorical data, dysbiosisUC vs Dialister.invisus
## 2025-01-02 19:54:36.256164 INFO::Creating boxplot for categorical data, dysbiosisUC vs Ruminococcus.lactaris
## 2025-01-02 19:54:36.853093 INFO::Creating boxplot for categorical data, dysbiosisUC vs Burkholderiales.bacterium.1.1.47
## 2025-01-02 19:54:43.54702 INFO::Plotting data for metadata number 3, dysbiosisnonIBD
## 2025-01-02 19:54:43.551034 INFO::Creating boxplot for categorical data, dysbiosisnonIBD vs Faecalibacterium.prausnitzii
## 2025-01-02 19:54:44.092932 INFO::Creating boxplot for categorical data, dysbiosisnonIBD vs Eubacterium.rectale
## 2025-01-02 19:54:44.700902 INFO::Creating boxplot for categorical data, dysbiosisnonIBD vs Eubacterium.sp.3.1.31
## 2025-01-02 19:54:45.298775 INFO::Creating boxplot for categorical data, dysbiosisnonIBD vs Roseburia.hominis
## 2025-01-02 19:54:45.869998 INFO::Creating boxplot for categorical data, dysbiosisnonIBD vs Subdoligranulum.unclassified
## 2025-01-02 19:54:46.463575 INFO::Creating boxplot for categorical data, dysbiosisnonIBD vs Lachnospiraceae.bacterium.3.1.46FAA
## 2025-01-02 19:54:47.085323 INFO::Creating boxplot for categorical data, dysbiosisnonIBD vs Ruminococcus.torques
## 2025-01-02 19:54:47.751731 INFO::Creating boxplot for categorical data, dysbiosisnonIBD vs Clostridium.leptum
## 2025-01-02 19:54:48.361881 INFO::Creating boxplot for categorical data, dysbiosisnonIBD vs Odoribacter.splanchnicus
## 2025-01-02 19:54:48.974051 INFO::Creating boxplot for categorical data, dysbiosisnonIBD vs Escherichia.coli
## 2025-01-02 19:54:49.564089 INFO::Creating boxplot for categorical data, dysbiosisnonIBD vs Ruminococcus.obeum
## 2025-01-02 19:54:50.172594 INFO::Creating boxplot for categorical data, dysbiosisnonIBD vs Bilophila.unclassified
## 2025-01-02 19:54:50.810288 INFO::Creating boxplot for categorical data, dysbiosisnonIBD vs Bacteroides.uniformis
## 2025-01-02 19:54:51.433422 INFO::Creating boxplot for categorical data, dysbiosisnonIBD vs Eubacterium.eligens
## 2025-01-02 19:54:52.034616 INFO::Creating boxplot for categorical data, dysbiosisnonIBD vs Klebsiella.pneumoniae
## 2025-01-02 19:54:52.655479 INFO::Creating boxplot for categorical data, dysbiosisnonIBD vs Ruminococcus.bromii
## 2025-01-02 19:54:53.239831 INFO::Creating boxplot for categorical data, dysbiosisnonIBD vs Bacteroides.vulgatus
## 2025-01-02 19:54:53.850499 INFO::Creating boxplot for categorical data, dysbiosisnonIBD vs C2likevirus.unclassified
## 2025-01-02 19:54:54.467404 INFO::Creating boxplot for categorical data, dysbiosisnonIBD vs Bifidobacterium.adolescentis
## 2025-01-02 19:54:55.061609 INFO::Creating boxplot for categorical data, dysbiosisnonIBD vs Alistipes.finegoldii
## 2025-01-02 19:54:55.635759 INFO::Creating boxplot for categorical data, dysbiosisnonIBD vs Roseburia.inulinivorans
## 2025-01-02 19:54:56.203456 INFO::Creating boxplot for categorical data, dysbiosisnonIBD vs Alistipes.onderdonkii
## 2025-01-02 19:54:56.790541 INFO::Creating boxplot for categorical data, dysbiosisnonIBD vs Roseburia.unclassified
## 2025-01-02 19:54:57.404207 INFO::Creating boxplot for categorical data, dysbiosisnonIBD vs Eubacterium.hallii
## 2025-01-02 19:54:58.044108 INFO::Creating boxplot for categorical data, dysbiosisnonIBD vs Roseburia.intestinalis
## 2025-01-02 19:54:58.726017 INFO::Creating boxplot for categorical data, dysbiosisnonIBD vs Prevotella.copri
## 2025-01-02 19:54:59.398726 INFO::Creating boxplot for categorical data, dysbiosisnonIBD vs Bacteroides.dorei
## 2025-01-02 19:54:59.988885 INFO::Creating boxplot for categorical data, dysbiosisnonIBD vs Bacteroides.fragilis
## 2025-01-02 19:55:00.618267 INFO::Creating boxplot for categorical data, dysbiosisnonIBD vs Alistipes.shahii
## 2025-01-02 19:55:07.312909 INFO::Plotting data for metadata number 4, antibiotics
## 2025-01-02 19:55:07.357759 INFO::Creating boxplot for categorical data, antibiotics vs Roseburia.inulinivorans
## 2025-01-02 19:55:07.864816 INFO::Creating boxplot for categorical data, antibiotics vs Roseburia.hominis
## 2025-01-02 19:55:08.463842 INFO::Creating boxplot for categorical data, antibiotics vs Eubacterium.rectale
## 2025-01-02 19:55:09.050926 INFO::Creating boxplot for categorical data, antibiotics vs Dialister.invisus
## 2025-01-02 19:55:09.625286 INFO::Creating boxplot for categorical data, antibiotics vs Roseburia.intestinalis
## 2025-01-02 19:55:10.230073 INFO::Creating boxplot for categorical data, antibiotics vs Dorea.longicatena
## 2025-01-02 19:55:10.815123 INFO::Creating boxplot for categorical data, antibiotics vs Ruminococcus.callidus
## 2025-01-02 19:55:11.402267 INFO::Creating boxplot for categorical data, antibiotics vs Ruminococcus.bromii
## 2025-01-02 19:55:11.960617 INFO::Creating boxplot for categorical data, antibiotics vs Ruminococcus.obeum
## 2025-01-02 19:55:12.53856 INFO::Creating boxplot for categorical data, antibiotics vs Klebsiella.pneumoniae
## 2025-01-02 19:55:13.163528 INFO::Creating boxplot for categorical data, antibiotics vs Bifidobacterium.adolescentis
## 2025-01-02 19:55:13.735377 INFO::Creating boxplot for categorical data, antibiotics vs Faecalibacterium.prausnitzii
## 2025-01-02 19:55:14.301432 INFO::Creating boxplot for categorical data, antibiotics vs Eubacterium.hallii
## 2025-01-02 19:55:14.90296 INFO::Creating boxplot for categorical data, antibiotics vs Bilophila.unclassified
## 2025-01-02 19:55:15.474202 INFO::Creating boxplot for categorical data, antibiotics vs Clostridium.leptum
## 2025-01-02 19:55:16.0772 INFO::Creating boxplot for categorical data, antibiotics vs Lachnospiraceae.bacterium.3.1.46FAA
## 2025-01-02 19:55:16.640382 INFO::Creating boxplot for categorical data, antibiotics vs Bacteroides.finegoldii
## 2025-01-02 19:55:17.251034 INFO::Creating boxplot for categorical data, antibiotics vs Eubacterium.sp.3.1.31
## 2025-01-02 19:55:17.804892 INFO::Creating boxplot for categorical data, antibiotics vs Bacteroides.fragilis
## 2025-01-02 19:55:18.372263 INFO::Creating boxplot for categorical data, antibiotics vs Alistipes.onderdonkii
## 2025-01-02 19:55:18.900842 INFO::Creating boxplot for categorical data, antibiotics vs Sutterella.wadsworthensis
## 2025-01-02 19:55:19.441561 INFO::Creating boxplot for categorical data, antibiotics vs Eubacterium.eligens
## 2025-01-02 19:55:19.966123 INFO::Creating boxplot for categorical data, antibiotics vs Collinsella.aerofaciens
## 2025-01-02 19:55:20.526954 INFO::Creating boxplot for categorical data, antibiotics vs Bacteroides.thetaiotaomicron
## 2025-01-02 19:55:21.051474 INFO::Creating boxplot for categorical data, antibiotics vs Bacteroides.eggerthii
## 2025-01-02 19:55:21.617065 INFO::Creating boxplot for categorical data, antibiotics vs Haemophilus.parainfluenzae
## 2025-01-02 19:55:22.162383 INFO::Creating boxplot for categorical data, antibiotics vs Bifidobacterium.pseudocatenulatum
## 2025-01-02 19:55:22.70851 INFO::Creating boxplot for categorical data, antibiotics vs Ruminococcus.torques
## 2025-01-02 19:55:23.211513 INFO::Creating boxplot for categorical data, antibiotics vs Eubacterium.ventriosum
## 2025-01-02 19:55:23.774014 INFO::Creating boxplot for categorical data, antibiotics vs Parasutterella.excrementihominis
## 2025-01-02 19:55:24.272801 INFO::Creating boxplot for categorical data, antibiotics vs Peptostreptococcaceae.noname.unclassified
## 2025-01-02 19:55:24.870557 INFO::Creating boxplot for categorical data, antibiotics vs Veillonella.dispar
## 2025-01-02 19:55:25.400896 INFO::Creating boxplot for categorical data, antibiotics vs Veillonella.atypica
## 2025-01-02 19:55:25.970952 INFO::Creating boxplot for categorical data, antibiotics vs Bacteroidales.bacterium.ph8
## 2025-01-02 19:55:26.488021 INFO::Creating boxplot for categorical data, antibiotics vs Clostridium.nexile
## 2025-01-02 19:55:27.034647 INFO::Creating boxplot for categorical data, antibiotics vs Burkholderiales.bacterium.1.1.47
## 2025-01-02 19:55:27.575119 INFO::Creating boxplot for categorical data, antibiotics vs Lachnospiraceae.bacterium.1.1.57FAA
## 2025-01-02 19:55:28.114238 INFO::Creating boxplot for categorical data, antibiotics vs Akkermansia.muciniphila
## 2025-01-02 19:55:28.673123 INFO::Creating boxplot for categorical data, antibiotics vs Clostridium.citroniae
## 2025-01-02 19:55:29.225326 INFO::Creating boxplot for categorical data, antibiotics vs Odoribacter.splanchnicus
## 2025-01-02 19:55:35.10776 INFO::Plotting data for metadata number 5, age
## 2025-01-02 19:55:35.112105 INFO::Creating scatter plot for continuous data, age vs Haemophilus.parainfluenzae
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 19 rows containing missing values or values outside the scale range
## (`geom_point()`).
## 2025-01-02 19:55:35.775512 INFO::Creating scatter plot for continuous data, age vs Bifidobacterium.pseudocatenulatum
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 19 rows containing missing values or values outside the scale range
## (`geom_point()`).
## 2025-01-02 19:55:36.622119 INFO::Creating scatter plot for continuous data, age vs Faecalibacterium.prausnitzii
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 19 rows containing missing values or values outside the scale range
## (`geom_point()`).
## 2025-01-02 19:55:37.178084 INFO::Creating scatter plot for continuous data, age vs Clostridium.clostridioforme
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 19 rows containing missing values or values outside the scale range
## (`geom_point()`).
## 2025-01-02 19:55:37.786502 INFO::Creating scatter plot for continuous data, age vs Veillonella.parvula
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 19 rows containing missing values or values outside the scale range
## (`geom_point()`).
## 2025-01-02 19:55:38.354523 INFO::Creating scatter plot for continuous data, age vs Subdoligranulum.unclassified
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 19 rows containing missing values or values outside the scale range
## (`geom_point()`).
## 2025-01-02 19:55:38.932889 INFO::Creating scatter plot for continuous data, age vs Clostridium.symbiosum
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 19 rows containing missing values or values outside the scale range
## (`geom_point()`).
## 2025-01-02 19:55:39.544097 INFO::Creating scatter plot for continuous data, age vs Ruminococcus.gnavus
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 19 rows containing missing values or values outside the scale range
## (`geom_point()`).
## 2025-01-02 19:55:40.100086 INFO::Creating scatter plot for continuous data, age vs Dialister.invisus
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 19 rows containing missing values or values outside the scale range
## (`geom_point()`).
## 2025-01-02 19:55:40.703828 INFO::Creating scatter plot for continuous data, age vs Veillonella.dispar
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 19 rows containing missing values or values outside the scale range
## (`geom_point()`).
## 2025-01-02 19:55:41.270828 INFO::Creating scatter plot for continuous data, age vs Veillonella.unclassified
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 19 rows containing missing values or values outside the scale range
## (`geom_point()`).
## 2025-01-02 19:55:41.867918 INFO::Creating scatter plot for continuous data, age vs Bacteroides.thetaiotaomicron
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 19 rows containing missing values or values outside the scale range
## (`geom_point()`).
## 2025-01-02 19:55:42.463154 INFO::Creating scatter plot for continuous data, age vs Ruminococcus.bromii
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 19 rows containing missing values or values outside the scale range
## (`geom_point()`).
## 2025-01-02 19:55:43.066861 INFO::Creating scatter plot for continuous data, age vs Bacteroides.intestinalis
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 19 rows containing missing values or values outside the scale range
## (`geom_point()`).
## 2025-01-02 19:55:43.671989 INFO::Creating scatter plot for continuous data, age vs Eubacterium.siraeum
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 19 rows containing missing values or values outside the scale range
## (`geom_point()`).
## 2025-01-02 19:55:44.239264 INFO::Creating scatter plot for continuous data, age vs Prevotella.copri
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 19 rows containing missing values or values outside the scale range
## (`geom_point()`).
## 2025-01-02 19:55:44.844781 INFO::Creating scatter plot for continuous data, age vs Alistipes.unclassified
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 19 rows containing missing values or values outside the scale range
## (`geom_point()`).
## 2025-01-02 19:55:45.446721 INFO::Creating scatter plot for continuous data, age vs Bacteroidales.bacterium.ph8
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 19 rows containing missing values or values outside the scale range
## (`geom_point()`).
## 2025-01-02 19:55:46.002783 INFO::Creating scatter plot for continuous data, age vs Bifidobacterium.longum
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 19 rows containing missing values or values outside the scale range
## (`geom_point()`).
## 2025-01-02 19:55:46.602234 INFO::Creating scatter plot for continuous data, age vs Akkermansia.muciniphila
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 19 rows containing missing values or values outside the scale range
## (`geom_point()`).
## 2025-01-02 19:55:47.53124 INFO::Creating scatter plot for continuous data, age vs Collinsella.aerofaciens
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 19 rows containing missing values or values outside the scale range
## (`geom_point()`).
## 2025-01-02 19:55:48.078277 INFO::Creating scatter plot for continuous data, age vs Parabacteroides.distasonis
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 19 rows containing missing values or values outside the scale range
## (`geom_point()`).
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 19 rows containing missing values or values outside the scale range
## (`geom_point()`).
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 19 rows containing missing values or values outside the scale range
## (`geom_point()`).
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 19 rows containing missing values or values outside the scale range
## (`geom_point()`).
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 19 rows containing missing values or values outside the scale range
## (`geom_point()`).
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 19 rows containing missing values or values outside the scale range
## (`geom_point()`).
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 19 rows containing missing values or values outside the scale range
## (`geom_point()`).
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 19 rows containing missing values or values outside the scale range
## (`geom_point()`).
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 19 rows containing missing values or values outside the scale range
## (`geom_point()`).
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 19 rows containing missing values or values outside the scale range
## (`geom_point()`).
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 19 rows containing missing values or values outside the scale range
## (`geom_point()`).
## 2025-01-02 19:55:54.391712 INFO::Plotting data for metadata number 6, diagnosis
## 2025-01-02 19:55:54.396979 INFO::Creating boxplot for categorical data, diagnosis vs Bifidobacterium.adolescentis
## 2025-01-02 19:55:54.935603 INFO::Creating boxplot for categorical data, diagnosis vs Akkermansia.muciniphila
## 2025-01-02 19:55:55.521784 INFO::Creating boxplot for categorical data, diagnosis vs Clostridium.bolteae
## 2025-01-02 19:55:56.072927 INFO::Creating boxplot for categorical data, diagnosis vs Alistipes.putredinis
## 2025-01-02 19:55:56.702613 INFO::Creating boxplot for categorical data, diagnosis vs Coprobacillus.unclassified
## 2025-01-02 19:55:57.261471 INFO::Creating boxplot for categorical data, diagnosis vs Clostridium.clostridioforme
## 2025-01-02 19:55:57.831088 INFO::Creating boxplot for categorical data, diagnosis vs Alistipes.shahii
## 2025-01-02 19:55:58.38277 INFO::Creating boxplot for categorical data, diagnosis vs Ruminococcus.bromii
## 2025-01-02 19:55:58.963878 INFO::Creating boxplot for categorical data, diagnosis vs Clostridium.leptum
## 2025-01-02 19:55:59.531069 INFO::Creating boxplot for categorical data, diagnosis vs Clostridium.symbiosum
## 2025-01-02 19:56:00.126417 INFO::Creating boxplot for categorical data, diagnosis vs Roseburia.inulinivorans
## 2025-01-02 19:56:00.728592 INFO::Creating boxplot for categorical data, diagnosis vs Ruminococcus.bromii
## 2025-01-02 19:56:01.291228 INFO::Creating boxplot for categorical data, diagnosis vs Alistipes.shahii
## 2025-01-02 19:56:01.829552 INFO::Creating boxplot for categorical data, diagnosis vs Alistipes.finegoldii
## 2025-01-02 19:56:02.410484 INFO::Creating boxplot for categorical data, diagnosis vs Parabacteroides.goldsteinii
## 2025-01-02 19:56:02.983934 INFO::Creating boxplot for categorical data, diagnosis vs Bilophila.unclassified
## 2025-01-02 19:56:03.561367 INFO::Creating boxplot for categorical data, diagnosis vs Clostridium.leptum
## 2025-01-02 19:56:04.135714 INFO::Creating boxplot for categorical data, diagnosis vs Roseburia.hominis
## 2025-01-02 19:56:04.713088 INFO::Creating boxplot for categorical data, diagnosis vs Coprobacillus.unclassified
## 2025-01-02 19:56:05.289306 INFO::Creating boxplot for categorical data, diagnosis vs Alistipes.onderdonkii
## 2025-01-02 19:56:05.858384 INFO::Creating boxplot for categorical data, diagnosis vs Eubacterium.ventriosum
## 2025-01-02 19:56:06.459239 INFO::Creating boxplot for categorical data, diagnosis vs Roseburia.hominis
## 2025-01-02 19:56:07.024444 INFO::Creating boxplot for categorical data, diagnosis vs Sutterella.wadsworthensis
## 2025-01-02 19:56:07.629025 INFO::Creating boxplot for categorical data, diagnosis vs Akkermansia.muciniphila
## 2025-01-02 19:56:08.178239 INFO::Creating boxplot for categorical data, diagnosis vs Sutterella.wadsworthensis
## 2025-01-02 19:56:08.755687 INFO::Creating boxplot for categorical data, diagnosis vs Subdoligranulum.unclassified
## 2025-01-02 19:56:09.297254 INFO::Creating boxplot for categorical data, diagnosis vs Clostridium.symbiosum
## 2025-01-02 19:56:09.898243 INFO::Creating boxplot for categorical data, diagnosis vs Alistipes.onderdonkii
## 2025-01-02 19:56:10.514937 INFO::Creating boxplot for categorical data, diagnosis vs Parabacteroides.unclassified
## 2025-01-02 19:56:11.140044 INFO::Creating boxplot for categorical data, diagnosis vs Ruminococcus.lactaris
## 2025-01-02 19:56:11.756718 INFO::Creating boxplot for categorical data, diagnosis vs Ruminococcus.callidus
## 2025-01-02 19:56:12.374452 INFO::Creating boxplot for categorical data, diagnosis vs Ruminococcus.gnavus
## 2025-01-02 19:56:12.98719 INFO::Creating boxplot for categorical data, diagnosis vs Bacteroides.fragilis
## 2025-01-02 19:56:13.622776 INFO::Creating boxplot for categorical data, diagnosis vs Eubacterium.rectale
## 2025-01-02 19:56:14.324398 INFO::Creating boxplot for categorical data, diagnosis vs Odoribacter.splanchnicus
## 2025-01-02 19:56:14.963116 INFO::Creating boxplot for categorical data, diagnosis vs Parabacteroides.distasonis
## 2025-01-02 19:56:15.566505 INFO::Creating boxplot for categorical data, diagnosis vs Eubacterium.rectale
## 2025-01-02 19:56:16.202325 INFO::Creating boxplot for categorical data, diagnosis vs Bacteroides.finegoldii
## 2025-01-02 19:56:16.816061 INFO::Creating boxplot for categorical data, diagnosis vs Ruminococcus.callidus
## 2025-01-02 19:56:17.405145 INFO::Creating boxplot for categorical data, diagnosis vs Alistipes.finegoldii
## 2025-01-02 19:56:18.001666 INFO::Creating boxplot for categorical data, diagnosis vs Alistipes.putredinis
## 2025-01-02 19:56:18.628386 INFO::Creating boxplot for categorical data, diagnosis vs Clostridium.bolteae
## 2025-01-02 19:56:19.232898 INFO::Creating boxplot for categorical data, diagnosis vs Eubacterium.siraeum
Session Info

Session info from running the demo in R can be displayed with the following command.

sessionInfo()
## R version 4.4.2 (2024-10-31)
## Platform: x86_64-apple-darwin20
## Running under: macOS Monterey 12.7.6
## 
## Matrix products: default
## BLAS:   /Library/Frameworks/R.framework/Versions/4.4-x86_64/Resources/lib/libRblas.0.dylib 
## LAPACK: /Library/Frameworks/R.framework/Versions/4.4-x86_64/Resources/lib/libRlapack.dylib;  LAPACK version 3.12.0
## 
## locale:
## [1] C/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
## 
## time zone: America/New_York
## tzcode source: internal
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] Maaslin2_1.20.0
## 
## loaded via a namespace (and not attached):
##  [1] sass_0.4.9          generics_0.1.3      robustbase_0.99-4-1
##  [4] lattice_0.22-6      lme4_1.1-35.5       digest_0.6.37      
##  [7] magrittr_2.0.3      RColorBrewer_1.1-3  evaluate_1.0.1     
## [10] grid_4.4.2          mvtnorm_1.3-2       fastmap_1.2.0      
## [13] jsonlite_1.8.9      Matrix_1.7-1        DBI_1.2.3          
## [16] optparse_1.7.5      biglm_0.9-3         mgcv_1.9-1         
## [19] scales_1.3.0        pbapply_1.7-2       permute_0.9-7      
## [22] numDeriv_2016.8-1.1 getopt_1.20.4       jquerylib_0.1.4    
## [25] cli_3.6.3           rlang_1.1.4         crayon_1.5.3       
## [28] munsell_0.5.1       splines_4.4.2       withr_3.0.2        
## [31] cachem_1.1.0        yaml_2.3.10         vegan_2.6-8        
## [34] tools_4.4.2         parallel_4.4.2      nloptr_2.1.1       
## [37] minqa_1.2.8         dplyr_1.1.4         colorspace_2.1-1   
## [40] ggplot2_3.5.1       boot_1.3-31         hash_2.2.6.3       
## [43] vctrs_0.6.5         R6_2.5.1            lifecycle_1.0.4    
## [46] MASS_7.3-63         logging_0.10-108    pcaPP_2.0-5        
## [49] cluster_2.1.8       pkgconfig_2.0.3     gtable_0.3.6       
## [52] lmerTest_3.1-3      pillar_1.10.0       bslib_0.8.0        
## [55] Rcpp_1.0.13-1       data.table_1.16.4   glue_1.8.0         
## [58] DEoptimR_1.1-3-1    xfun_0.49           tibble_3.2.1       
## [61] tidyselect_1.2.1    knitr_1.49          farver_2.1.2       
## [64] htmltools_0.5.8.1   nlme_3.1-166        labeling_0.4.3     
## [67] rmarkdown_2.29      pheatmap_1.0.12     compiler_4.4.2

Options

Run MaAsLin2 help to print a list of the options and the default settings.

$ Maaslin2.R –help Usage: ./R/Maaslin2.R options <data.tsv> <metadata.tsv>

Options: -h, –help Show this help message and exit

-a MIN_ABUNDANCE, --min_abundance=MIN_ABUNDANCE
    The minimum abundance for each feature [ Default: 0 ]

-p MIN_PREVALENCE, --min_prevalence=MIN_PREVALENCE
    The minimum percent of samples for which a feature 
    is detected at minimum abundance [ Default: 0.1 ]

-b MIN_VARIANCE, --min_variance=MIN_VARIANCE
    Keep features with variance greater than [ Default: 0.0 ]

-s MAX_SIGNIFICANCE, --max_significance=MAX_SIGNIFICANCE
    The q-value threshold for significance [ Default: 0.25 ]

-n NORMALIZATION, --normalization=NORMALIZATION
    The normalization method to apply [ Default: TSS ]
    [ Choices: TSS, CLR, CSS, NONE, TMM ]

-t TRANSFORM, --transform=TRANSFORM
    The transform to apply [ Default: LOG ]
    [ Choices: LOG, LOGIT, AST, NONE ]

-m ANALYSIS_METHOD, --analysis_method=ANALYSIS_METHOD
    The analysis method to apply [ Default: LM ]
    [ Choices: LM, CPLM, NEGBIN, ZINB ]

-r RANDOM_EFFECTS, --random_effects=RANDOM_EFFECTS
    The random effects for the model, comma-delimited
    for multiple effects [ Default: none ]

-f FIXED_EFFECTS, --fixed_effects=FIXED_EFFECTS
    The fixed effects for the model, comma-delimited
    for multiple effects [ Default: all ]

-c CORRECTION, --correction=CORRECTION
    The correction method for computing the 
    q-value [ Default: BH ]

-z STANDARDIZE, --standardize=STANDARDIZE
    Apply z-score so continuous metadata are 
    on the same scale [ Default: TRUE ]

-l PLOT_HEATMAP, --plot_heatmap=PLOT_HEATMAP
    Generate a heatmap for the significant 
    associations [ Default: TRUE ]

-i HEATMAP_FIRST_N, --heatmap_first_n=HEATMAP_FIRST_N
    In heatmap, plot top N features with significant 
    associations [ Default: TRUE ]

-o PLOT_SCATTER, --plot_scatter=PLOT_SCATTER
    Generate scatter plots for the significant
    associations [ Default: TRUE ]
    
-g MAX_PNGS, --max_pngs=MAX_PNGS
    The maximum number of scatter plots for signficant associations 
    to save as png files [ Default: 10 ]

-O SAVE_SCATTER, --save_scatter=SAVE_SCATTER
    Save all scatter plot ggplot objects
    to an RData file [ Default: FALSE ]

-e CORES, --cores=CORES
    The number of R processes to run in parallel
    [ Default: 1 ]
    
-j SAVE_MODELS --save_models=SAVE_MODELS
    Return the full model outputs and save to an RData file
    [ Default: FALSE ]

-d REFERENCE, --reference=REFERENCE
    The factor to use as a reference level for a categorical variable 
    provided as a string of 'variable,reference', semi-colon delimited for 
    multiple variables. Not required if metadata is passed as a factor or 
    for variables with less than two levels but can be set regardless.
    [ Default: NA ] 

Troubleshooting

  1. Question: When I run from the command line I see the error Maaslin2.R: command not found. How do I fix this?
    • Answer: Provide the full path to the executable when running Maaslin2.R.
  2. Question: When I run as a function I see the error Error in library(Maaslin2): there is no package called 'Maaslin2'. How do I fix this?
    • Answer: Install the R package and then try loading the library again.
  3. Question: When I try to install the R package I see errors about dependencies not being installed. Why is this?
    • Answer: Installing the R package will not automatically install the packages MaAsLin2 requires. Please install the dependencies and then install the MaAsLin2 R package.