ComBatFamQC
Streamline interactive batch effect diagnostics, harmonization, and post-harmonization downstream analysis to greatly simplify the data harmonization process and improve transparency and reproducibility.
Science Score: 26.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (13.2%) to scientific vocabulary
Keywords
Repository
Streamline interactive batch effect diagnostics, harmonization, and post-harmonization downstream analysis to greatly simplify the data harmonization process and improve transparency and reproducibility.
Basic Info
Statistics
- Stars: 3
- Watchers: 2
- Forks: 4
- Open Issues: 1
- Releases: 0
Topics
Metadata Files
README.md
ComBatFamQC
<!-- badges: start -->
<!-- badges: end -->
The ComBatFamQC package is a powerful tool designed to streamline interactive batch effect diagnostics, harmonization, and post-harmonization downstream analysis. This package is specifically tailored to provide both interactive qualitative visualization and statistical testing for batch effects diagnostics, as well as to offer various easily-used built-in harmonization techniques to facilitate a better harmonization process.
Additionally, the package provides life span age trends of brain structures and residual datasets, eliminating specific covariates' effects to better conduct post-harmonization downstream analysis. For the final delivery, the package offers interactive visualizations through R Shiny for batch effect diagnostics and age trend visualization. For users who wish to save a copy of the diagnostic report, the package also includes an option to generate a Quarto report (if Quarto is installed). Furthermore, it integrates the harmonization process and can provide a harmonized dataset, a fitted ComBat model, a residual dataset, a fitted regression model, and more.
To make the harmonization process more accessible to users from diverse backgrounds, two unified command-line interfaces have been developed for different stages of the processing pipeline (located in the inst folder):
- CombatQC_CLI.R: Batch Effect Diagnostics & Harmonization Stage
- Offers interactive diagnostics for batch effects
- Export the batch effect diagnosis report
- Performs data harmonization to adjust for batch effects
- post_CLI.R: Post-Harmonization Stage
- Visualizes age trends across brain structures over the lifespan
- Generates a residual dataset with unwanted covariate effects removed
Note: Detailed information and tutorials can be found: https://zheng206.github.io/ComBatQC-Web/
Diagram

Package Features
The ComBatFamQC package offers the following five key functionalities:
- Interactive Batch Effect Diagnostics & Harmonization
Batch Effect Diagnostics: ComBatFamQC provides two types of batch effect diagnostics methods for both individual batch effects and global batch effects: 1) Qualitative Visualization and 2) Statistical Testing. It simplifies the process of performing statistical analyses to detect potential batch effects and provides all relevant statistical test results for batch effect visualization and evaluation.
Harmonization: ComBatFamQC also provides four types of commonly used harmonization techniques, integrated through the ComBatFamily package developed by Dr. Andrew Chen, for users to consider. The four harmonization techniques include:
- Original ComBat (Johnson et al., 2007)
- Longitudinal ComBat (Beer et al., 2020)
- ComBat-GAM (Pomponio et al., 2020)
- CovBat (Chen et al., 2021)
Interactive Visualization through R Shiny: The ComBatFamQC package comes with an interactive visualization tool built on R Shiny, providing an intuitive user interface to explore and evaluate batch effects, as well as conduct interactive harmonization if needed. The output is organized into multiple tabs, which includes:
- Data Overview: Complete data overview and exploratory analysis
- Summary: Sample Size and Covariate Distribution
- Residual Plot: Additive and Multiplicative Batch Effect
- Diagnosis of Global Batch Effect: PCA, T-SNE and MDMR
- Diagnosis of Individual Batch Effect:
- Statistical Tests for Additive Batch Effect: Kenward-Roger (liner mix model), ANOVA, Kruskal-Wallis
- Statistical Tests for Multiplicative Batch Effect: Fligner-Killeen, Levene's Test, Bartlett's Test
- Harmonization Interactive Harmonization if needed
- Post-Harmonization Downstream Analysis
Age Trajectory \ Generate age trend of each brain structure (ROI), adjusting sex and ICV. Customized centiles are enabled as well.
- Age Trend Plots
- Age Trend Table
Residual Generation \ Generate residual data set, removing specific covariates' effetcs.
Installation
CRAN
{r}
install.packages("ComBatFamQC")
GitHub
The GitHub build is one release ahead of CRAN and includes out-of-sample harmonization for CovBat.
```{r}
if (!require("devtools", quietly = TRUE)) {
install.packages("devtools")
}
library(devtools)
devtools::installgithub("Zheng206/ComBatFamQC", buildvignettes = TRUE) ```
Tutorial
{r}
vignette("ComBatQC")
vignette("Post-Harmonization")
Command-line Interface
```{bash} RSCRIPT=${RSCRIPT:-$(command -v Rscript)} combatqccli="$($RSCRIPT -e 'cat(system.file("combatQCCLI.R", package="ComBatFamQC"))')" postcli="$($RSCRIPT -e 'cat(system.file("postCLI.R", package="ComBatFamQC"))')"
Rscript $combatqccli -h Rscript $postcli -h ```
Owner
- Name: Zheng Ren
- Login: Zheng206
- Kind: user
- Repositories: 1
- Profile: https://github.com/Zheng206
CodeMeta (codemeta.json)
{
"@context": "https://doi.org/10.5063/schema/codemeta-2.0",
"@type": "SoftwareSourceCode",
"identifier": "ComBatFamQC",
"description": "Provides a comprehensive framework for batch effect diagnostics, harmonization, and post-harmonization downstream analysis. Features include interactive visualization tools, robust statistical tests, and a range of harmonization techniques. Additionally, 'ComBatFamQC' enables the creation of life-span age trend plots with estimated age-adjusted centiles and facilitates the generation of covariate-corrected residuals for analytical purposes. Methods for harmonization are based on approaches described in Johnson et al., (2007) <doi:10.1093/biostatistics/kxj037>, Beer et al., (2020) <doi:10.1016/j.neuroimage.2020.117129>, Pomponio et al., (2020) <doi:10.1016/j.neuroimage.2019.116450>, and Chen et al., (2021) <doi:10.1002/hbm.25688>.",
"name": "ComBatFamQC: Comprehensive Batch Effect Diagnostics and Harmonization",
"relatedLink": "https://zheng206.github.io/ComBatQC-Web/",
"codeRepository": "https://github.com/Zheng206/ComBatFamQC",
"issueTracker": "https://github.com/Zheng206/ComBatFamQC/issues",
"license": "https://spdx.org/licenses/MIT",
"version": "1.0.6",
"programmingLanguage": {
"@type": "ComputerLanguage",
"name": "R",
"url": "https://r-project.org"
},
"runtimePlatform": "R version 4.4.1 (2024-06-14)",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"author": [
{
"@type": "Person",
"givenName": "Zheng",
"familyName": "Ren",
"email": "zren1422@gmail.com",
"@id": "https://orcid.org/0009-0006-2430-4625"
},
{
"@type": "Person",
"givenName": "Andrew",
"familyName": "Chen",
"email": "chen1764@gmail.com",
"@id": "https://orcid.org/0000-0002-5027-6422"
}
],
"contributor": [
{
"@type": "Person",
"givenName": "Elizabeth",
"familyName": "Horwath",
"email": "elizabeth.horwath@pennmedicine.upenn.edu",
"@id": "https://orcid.org/0009-0009-1224-6984"
}
],
"copyrightHolder": [
{
"@type": "Person",
"givenName": "Zheng",
"familyName": "Ren",
"email": "zren1422@gmail.com",
"@id": "https://orcid.org/0009-0006-2430-4625"
},
{
"@type": "Person",
"givenName": "Andrew",
"familyName": "Chen",
"email": "chen1764@gmail.com",
"@id": "https://orcid.org/0000-0002-5027-6422"
}
],
"maintainer": [
{
"@type": "Person",
"givenName": "Zheng",
"familyName": "Ren",
"email": "zren1422@gmail.com",
"@id": "https://orcid.org/0009-0006-2430-4625"
}
],
"softwareSuggestions": [
{
"@type": "SoftwareApplication",
"identifier": "knitr",
"name": "knitr",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=knitr"
},
{
"@type": "SoftwareApplication",
"identifier": "rmarkdown",
"name": "rmarkdown",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=rmarkdown"
},
{
"@type": "SoftwareApplication",
"identifier": "devtools",
"name": "devtools",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=devtools"
},
{
"@type": "SoftwareApplication",
"identifier": "testthat",
"name": "testthat",
"version": ">= 3.0.0",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=testthat"
},
{
"@type": "SoftwareApplication",
"identifier": "remotes",
"name": "remotes",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=remotes"
},
{
"@type": "SoftwareApplication",
"identifier": "plotly",
"name": "plotly",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=plotly"
},
{
"@type": "SoftwareApplication",
"identifier": "quarto",
"name": "quarto",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=quarto"
},
{
"@type": "SoftwareApplication",
"identifier": "spelling",
"name": "spelling",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=spelling"
},
{
"@type": "SoftwareApplication",
"identifier": "systemfonts",
"name": "systemfonts",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=systemfonts"
}
],
"softwareRequirements": {
"1": {
"@type": "SoftwareApplication",
"identifier": "tidyr",
"name": "tidyr",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=tidyr"
},
"2": {
"@type": "SoftwareApplication",
"identifier": "dplyr",
"name": "dplyr",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=dplyr"
},
"3": {
"@type": "SoftwareApplication",
"identifier": "magrittr",
"name": "magrittr",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=magrittr"
},
"4": {
"@type": "SoftwareApplication",
"identifier": "ggplot2",
"name": "ggplot2",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=ggplot2"
},
"5": {
"@type": "SoftwareApplication",
"identifier": "DT",
"name": "DT",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=DT"
},
"6": {
"@type": "SoftwareApplication",
"identifier": "shiny",
"name": "shiny",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=shiny"
},
"7": {
"@type": "SoftwareApplication",
"identifier": "car",
"name": "car",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=car"
},
"8": {
"@type": "SoftwareApplication",
"identifier": "broom",
"name": "broom",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=broom"
},
"9": {
"@type": "SoftwareApplication",
"identifier": "pbkrtest",
"name": "pbkrtest",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=pbkrtest"
},
"10": {
"@type": "SoftwareApplication",
"identifier": "parallel",
"name": "parallel"
},
"11": {
"@type": "SoftwareApplication",
"identifier": "Rtsne",
"name": "Rtsne",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=Rtsne"
},
"12": {
"@type": "SoftwareApplication",
"identifier": "MDMR",
"name": "MDMR",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=MDMR"
},
"13": {
"@type": "SoftwareApplication",
"identifier": "gamlss",
"name": "gamlss",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=gamlss"
},
"14": {
"@type": "SoftwareApplication",
"identifier": "lme4",
"name": "lme4",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=lme4"
},
"15": {
"@type": "SoftwareApplication",
"identifier": "mgcv",
"name": "mgcv",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=mgcv"
},
"16": {
"@type": "SoftwareApplication",
"identifier": "bslib",
"name": "bslib",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=bslib"
},
"17": {
"@type": "SoftwareApplication",
"identifier": "shinydashboard",
"name": "shinydashboard",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=shinydashboard"
},
"18": {
"@type": "SoftwareApplication",
"identifier": "methods",
"name": "methods"
},
"19": {
"@type": "SoftwareApplication",
"identifier": "gamlss.dist",
"name": "gamlss.dist",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=gamlss.dist"
},
"20": {
"@type": "SoftwareApplication",
"identifier": "invgamma",
"name": "invgamma",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=invgamma"
},
"21": {
"@type": "SoftwareApplication",
"identifier": "openxlsx",
"name": "openxlsx",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=openxlsx"
},
"22": {
"@type": "SoftwareApplication",
"identifier": "R",
"name": "R",
"version": ">= 4.1.0"
},
"SystemRequirements": null
},
"fileSize": "4872.282KB",
"releaseNotes": "https://github.com/Zheng206/ComBatFamQC/blob/master/NEWS.md",
"readme": "https://github.com/Zheng206/ComBatFamQC/blob/main/README.md",
"contIntegration": [
"https://github.com/Zheng206/ComBatFamQC/actions/workflows/R-CMD-check.yaml",
"https://app.codecov.io/gh/Zheng206/ComBatFamQC"
],
"keywords": [
"harmonization",
"diagnostic-tool",
"rshinyapp"
]
}
GitHub Events
Total
- Watch event: 2
- Member event: 2
- Push event: 225
- Public event: 1
- Fork event: 3
- Create event: 1
Last Year
- Watch event: 2
- Member event: 2
- Push event: 225
- Public event: 1
- Fork event: 3
- Create event: 1
Packages
- Total packages: 1
-
Total downloads:
- cran 208 last-month
- Total dependent packages: 0
- Total dependent repositories: 0
- Total versions: 4
- Total maintainers: 1
cran.r-project.org: ComBatFamQC
Comprehensive Batch Effect Diagnostics and Harmonization
- Homepage: https://github.com/Zheng206/ComBatFamQC
- Documentation: http://cran.r-project.org/web/packages/ComBatFamQC/ComBatFamQC.pdf
- License: MIT + file LICENSE
-
Latest release: 1.0.6
published 11 months ago
Rankings
Maintainers (1)
Dependencies
- R >= 3.5.0 depends
- ComBatFamily * imports
- DT * imports
- MDMR * imports
- Rtsne * imports
- broom * imports
- bsicons * imports
- bslib * imports
- car * imports
- dplyr * imports
- gamlss * imports
- gamlss.dist * imports
- ggplot2 * imports
- invgamma * imports
- lme4 * imports
- methods * imports
- mgcv * imports
- parallel * imports
- pbkrtest * imports
- shiny * imports
- shinydashboard * imports
- tidyr * imports
- tidyverse * imports
- devtools * suggests
- knitr * suggests
- remotes * suggests
- rmarkdown * suggests
- testthat * suggests
- actions/checkout v4 composite
- r-lib/actions/check-r-package v2 composite
- r-lib/actions/setup-pandoc v2 composite
- r-lib/actions/setup-r v2 composite
- r-lib/actions/setup-r-dependencies v2 composite
- jgehrcke/github-repo-stats RELEASE composite
- actions/checkout v4 composite
- actions/upload-artifact v4 composite
- codecov/codecov-action v4 composite
- r-lib/actions/setup-r v2 composite
- r-lib/actions/setup-r-dependencies v2 composite