Parallel Factor Analysis Modelling of Longitudinal Microbiome Data

Creation and selection of PARAllel FACtor Analysis (PARAFAC) models of longitudinal microbiome data. You can import your own data with our import functions or use one of the example datasets to create your own PARAFAC models. Selection of the optimal number of components can be done using assessModelQuality() and assessModelStability(). The selected model can then be plotted using plotPARAFACmodel(). The Parallel Factor Analysis method was originally described by Caroll and Chang (1970) and Harshman (1970) < https://www.psychology.uwo.ca/faculty/harshman/wpppfac0.pdf>.


parafac4microbiome parafac4microbiome website

Codecov testcoverage R-CMD-check CRAN/METACRANVersion GitHubRelease GitHub R packageversion DOI

Overview

The parafac4microbiome package enables R users with an easy way to create Parallel Factor Analysis (PARAFAC) models for longitudinal microbiome data.

  • processDataCube() can be used to process the microbiome count data appropriately for a multi-way data array.
  • parafac() allows the user to create a Parallel Factor Analysis model of the multi-way data array.
  • assessModelQuality() helps the user select the appropriate number of components by randomly initializing many PARAFAC models and inspecting various metrics of interest.
  • assessModelStability() helps the user select the appropriate number of components by bootstrapping or jack-knifing samples and inspecting if the model outcome is similar.
  • plotPARAFACmodel() helps visually inspect the PARAFAC model.

This package also comes with three example datasets.

Documentation

A basic introduction to the package is given in vignette("Introduction") and modelling the example datasets are elaborated in their respective vignettes vignette("Fujita2023"), vignette("Shao2019") and vignette("vanderPloeg2024").

These vignettes and all function documentation can be found here.

Installation

The parafac4microbiome package can be installed from CRAN using:

install.packages("parafac4microbiome")

Development version

You can install the development version of parafac4microbiome from GitHub with:

# install.packages("devtools")
devtools::install_github("GRvanderPloeg/parafac4microbiome")

Citation

Please use the following citation when using this package:

  • van der Ploeg, G. R., Westerhuis, J., Heintz-Buschart, A., & Smilde, A. (2025). parafac4microbiome: Exploratory analysis of longitudinal microbiome data using Parallel Factor Analysis. mSystems 10:e00472-25. https://doi.org/10.1128/msystems.00472-25

Usage

library(parafac4microbiome)
set.seed(123)

# Process the data cube
processedFujita = processDataCube(Fujita2023,
                                  sparsityThreshold=0.99,
                                  CLR=TRUE,
                                  centerMode=1,
                                  scaleMode=2)

# Make a PARAFAC model
model = parafac(processedFujita$data, nfac=3, nstart=10, output="best")

# Sign flip components to make figure interpretable and comparable to the paper.
# This has no effect on the model or the fit.
model$Fac[[1]][,2] = -1 * model$Fac[[1]][,2] # sign flip mode 1 component 2
model$Fac[[2]][,1] = -1 * model$Fac[[2]][,1] # sign flip mode 2 component 1
model$Fac[[2]][,3] = -1 * model$Fac[[2]][,3] # sign flip mode 2 component 3
model$Fac[[3]] = -1 * model$Fac[[3]]         # sign flip all of mode 3

# Plot the PARAFAC model using some metadata
plotPARAFACmodel(model$Fac, processedFujita,
                 numComponents = 3,
                 colourCols = c("", "Genus", ""),
                 legendTitles = c("", "Genus", ""),
                 xLabels = c("Replicate", "Feature index", "Time point"),
                 legendColNums = c(0,5,0),
                 arrangeModes = c(FALSE, TRUE, FALSE),
                 continuousModes = c(FALSE,FALSE,TRUE),
                 overallTitle = "Fujita PARAFAC model")

Getting help

If you encounter an unexpected error or a clear bug, please file an issue with a minimal reproducible example here on Github. For questions or other types of feedback, feel free to send an email.

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.

install.packages("parafac4microbiome")

1.3.3 by Geert Roelof van der Ploeg, 2 months ago


https://grvanderploeg.com/parafac4microbiome/, https://github.com/GRvanderPloeg/parafac4microbiome/


Report a bug at https://github.com/GRvanderPloeg/parafac4microbiome/issues


Browse source code at https://github.com/cran/parafac4microbiome


Authors: Geert Roelof van der Ploeg [aut, cre] (ORCID: , Johan Westerhuis [ctb] , Anna Heintz-Buschart [ctb] (ORCID: , Age Smilde [ctb] , University of Amsterdam [cph, fnd]


Documentation:   PDF Manual  


MIT + file LICENSE license


Imports compositions, cowplot, doParallel, dplyr, foreach, ggplot2, ggpubr, lifecycle, magrittr, methods, multiway, parallel, pracma, rlang, rTensor, stats, tidyr

Suggests knitr, phyloseq, rmarkdown, TreeSummarizedExperiment, SummarizedExperiment, testthat, withr, readr, stringr, scales, ggpattern


Imported by NPLStoolbox.

Suggested by CMTFtoolbox.


See at CRAN