Repository files navigation

ComBat Family of Harmonization Methods

Author: Andrew A. Chen, chenandr@musc.edu

Maintainers:
Andrew A. Chen, chenandr@musc.edu
Haochang Shou, hshou@pennmedicine.upenn.edu
Margaret Gardner, margaret.gardner@pennmedicine.upenn.edu
Zheng Ren, zheng.ren@pennmedicine.upenn.edu

License: Artistic License 2.0

The ComBat Family extends the original ComBat methodology to enable flexible covariate modeling, leveraging efficient R implementations of regression models. A method that belongs in the ComBat Family satisfies the following conditions:

  • Modeling of covariate effects in location and scale
  • Batch effects in location and scale of measurements
  • Empirical Bayes step for borrowing information across features

ComBat Family methods include:

  1. ComBat (Johnson et al., 2007)
  2. ComBat-GAM (Pomponio et al., 2020)
  3. Longitudinal ComBat (Beer et al., 2020)
  4. Robust ComBat (Work-in-progress)
  5. ComBatLS (Gardner et al., preprint)

This package also includes the CovBat Family, which likewise extends the original CovBat methodology to enable flexible covariate modeling while removing batch effects in the mean and covariance of measurements.

This package also includes ComBat-Predict, which provides an out-of-sample extension to any ComBat Family method. If you use this method, please cite Yao et al., 2026.

NOTE: This package is still a work-in-progress and will be updated to include the following features:

  • Nonparametric Empirical Bayes step
  • Empirical Bayes step leveraging non-Gaussian data distributions
  • Functions for evaluating batch effects before and after harmonization

1. Installation

The R package can be installed via devtools by running the following code

# install.packages("remotes")
remotes::install_github("andy1764/ComBatFamily")

Then, you can load this package via

library(ComBatFamily)

2. Usage

Vignettes are provided for both the ComBat family comfam and the CovBat family covfam. To install with vignettes, first install the suggested dependencies via

remotes::install_github("jcbeer/longCombat")
remotes::install_github("andy1764/CovBat_Harmonization/R")
remotes::install_github("jfortin1/neuroCombat_Rpackage")

Then install the ComBatFamily package with vignettes via

remotes::install_github("andy1764/ComBatFamily", build_vignettes = TRUE)

Vignettes can then be accessed through

vignette("comfam")
vignette("covfam")

Example ComBat Family calls for iris data, treating Species as batch:

# Original ComBat
comfam(iris[,1:2], iris$Species, covar = iris[3:4], lm, y ~ Petal.Length + Petal.Width)
# ComBat-GAM
comfam(iris[,1:2], iris$Species, covar = iris[3:4], gam, y ~ s(Petal.Length) + Petal.Width)
# Alternative shorthand functions
combat(iris[,1:2], iris$Species, covar = iris[3:4], y ~ Petal.Length + Petal.Width)
combat_gam(iris[,1:2], iris$Species, covar = iris[3:4], y ~ s(Petal.Length) + Petal.Width)

Note that non-Gaussian data distributions are supported by functions such as glm and gamlss; however, the batch effect correction may produce harmonized data outside the original range of values. For now, specification of non-Gaussian distributions will generate a warning. This support is still a work-in-progress.

3. Additional features

On top of unifying existing harmonization packages, we include additional features in this package.

For out-of-sample harmonization, we provide ComBat-Predict (predict.comfam) to apply estimated harmonization to a new sample. This function will estimate new batch adjustment parameters if needed, otherwise it will apply existing estimates. predict.comfam has been validated for linear models (lm) and generalized additive models (gam) in Xin et al., 2026. It may give errors for other chosen models. Below is an example call:

com_out <- comfam(iris[1:75,1:2], iris$Species[1:75])
# out-of-sample with new batch
out_pred <- predict(com_out, iris[76:150,1:2], iris$Species[76:150])
# in-sample
in_pred <- predict(com_out, iris[1:25,1:2], iris$Species[1:25])
max(in_pred$dat.combat - com_out$dat.combat[1:25,])

We also provide a wrapper to access model fit diagnostic plots, plot.comfam. Other additional features are in active development.

4. Citations

The original ComBat methodology is implemented in R, Matlab, and Python at https://github.com/Jfortin1/ComBatHarmonization. When using ComBat, please cite the following papers:

Fortin, J.-P., Cullen, N., Sheline, Y. I., Taylor, W. D., Aselcioglu, I., Cook, P. A., Adams, P., Cooper, C., Fava, M., McGrath, P. J., McInnis, M., Phillips, M. L., Trivedi, M. H., Weissman, M. M., & Shinohara, R. T. (2018). Harmonization of cortical thickness measurements across scanners and sites. NeuroImage, 167, 104–120. https://doi.org/10.1016/j.neuroimage.2017.11.024

Fortin, J.-P., Parker, D., Tunç, B., Watanabe, T., Elliott, M. A., Ruparel, K., Roalf, D. R., Satterthwaite, T. D., Gur, R. C., Gur, R. E., Schultz, R. T., Verma, R., & Shinohara, R. T. (2017). Harmonization of multi-site diffusion tensor imaging data. NeuroImage, 161, 149–170. https://doi.org/10.1016/j.neuroimage.2017.08.047

Johnson, W. E., Li, C., & Rabinovic, A. (2007). Adjusting batch effects in microarray expression data using empirical Bayes methods. Biostatistics, 8(1), 118–127. https://doi.org/10.1093/biostatistics/kxj037

The original CovBat method is available at https://github.com/andy1764/CovBat_Harmonization. If implemented, please cite the original article:

Chen, A. A., Beer, J. C., Tustison, N. J., Cook, P. A., Shinohara, R. T., Shou, H., & Initiative, T. A. D. N. (2022). Mitigating site effects in covariance for machine learning in neuroimaging data. Human Brain Mapping, 43(4), 1179–1195. https://doi.org/10.1002/hbm.25688

For longitudinal ComBat, the original R package is available at https://github.com/jcbeer/longCombat with corresponding paper:

Beer, J. C., Tustison, N. J., Cook, P. A., Davatzikos, C., Sheline, Y. I., Shinohara, R. T., & Linn, K. A. (2020). Longitudinal ComBat: A method for harmonizing longitudinal multi-scanner imaging data. NeuroImage, 220, 117129. https://doi.org/10.1016/j.neuroimage.2020.117129

For ComBat-GAM, the Python implementation is available via https://github.com/rpomponio/neuroHarmonize with corresponding paper:

Pomponio, R., Erus, G., Habes, M., Doshi, J., Srinivasan, D., Mamourian, E., Bashyam, V., Nasrallah, I. M., Satterthwaite, T. D., Fan, Y., Launer, L. J., Masters, C. L., Maruff, P., Zhuo, C., Völzke, H., Johnson, S. C., Fripp, J., Koutsouleris, N., Wolf, D. H., … Shou, H., Davatzikos, C. (2020). Harmonization of large MRI datasets for the analysis of brain imaging patterns throughout the lifespan. NeuroImage, 208, 116450. https://doi.org/10.1016/j.neuroimage.2019.116450

For ComBatLS, please cite the following paper:

Gardner, M., Shinohara, R. T., Bethlehem, R. A., Romero‐Garcia, R., Warrier, V., Dorfschmidt, L., ... Alexander-Bloch, A. F. & Chen, A. A. (2025). ComBatLS: A Location‐and Scale‐Preserving Method for Multi‐Site Image Harmonization. Human Brain Mapping, 46(8), e70197. https://doi.org/10.1002/hbm.70197

For ComBat-Predict, please cite the following paper:

Xin, Y., Gardner, M., Tustison, N. J., Cook, P., Gee, J., Benitez, A., ... & Chen, A. A. (2026). ComBat‐Predict Enhances Generalizability of Neuroimaging Models to New Sites. Human Brain Mapping, 47(8), e70546.

About

ComBat Family of Harmonization Methods

Resources

Stars

35 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

ComBat Family of Harmonization Methods

Author: Andrew A. Chen, chenandr@musc.edu

Maintainers:
Andrew A. Chen, chenandr@musc.edu
Haochang Shou, hshou@pennmedicine.upenn.edu
Margaret Gardner, margaret.gardner@pennmedicine.upenn.edu
Zheng Ren, zheng.ren@pennmedicine.upenn.edu

License: Artistic License 2.0

The ComBat Family extends the original ComBat methodology to enable flexible covariate modeling, leveraging efficient R implementations of regression models. A method that belongs in the ComBat Family satisfies the following conditions:

  • Modeling of covariate effects in location and scale
  • Batch effects in location and scale of measurements
  • Empirical Bayes step for borrowing information across features

ComBat Family methods include:

  1. ComBat (Johnson et al., 2007)
  2. ComBat-GAM (Pomponio et al., 2020)
  3. Longitudinal ComBat (Beer et al., 2020)
  4. Robust ComBat (Work-in-progress)
  5. ComBatLS (Gardner et al., preprint)

This package also includes the CovBat Family, which likewise extends the original CovBat methodology to enable flexible covariate modeling while removing batch effects in the mean and covariance of measurements.

This package also includes ComBat-Predict, which provides an out-of-sample extension to any ComBat Family method. If you use this method, please cite Yao et al., 2026.

NOTE: This package is still a work-in-progress and will be updated to include the following features:

  • Nonparametric Empirical Bayes step
  • Empirical Bayes step leveraging non-Gaussian data distributions
  • Functions for evaluating batch effects before and after harmonization

1. Installation

The R package can be installed via devtools by running the following code

# install.packages("remotes")
remotes::install_github("andy1764/ComBatFamily")

Then, you can load this package via

library(ComBatFamily)

2. Usage

Vignettes are provided for both the ComBat family comfam and the CovBat family covfam. To install with vignettes, first install the suggested dependencies via

remotes::install_github("jcbeer/longCombat")
remotes::install_github("andy1764/CovBat_Harmonization/R")
remotes::install_github("jfortin1/neuroCombat_Rpackage")

Then install the ComBatFamily package with vignettes via

remotes::install_github("andy1764/ComBatFamily", build_vignettes = TRUE)

Vignettes can then be accessed through

vignette("comfam")
vignette("covfam")

Example ComBat Family calls for iris data, treating Species as batch:

# Original ComBat
comfam(iris[,1:2], iris$Species, covar = iris[3:4], lm, y ~ Petal.Length + Petal.Width)
# ComBat-GAM
comfam(iris[,1:2], iris$Species, covar = iris[3:4], gam, y ~ s(Petal.Length) + Petal.Width)
# Alternative shorthand functions
combat(iris[,1:2], iris$Species, covar = iris[3:4], y ~ Petal.Length + Petal.Width)
combat_gam(iris[,1:2], iris$Species, covar = iris[3:4], y ~ s(Petal.Length) + Petal.Width)

Note that non-Gaussian data distributions are supported by functions such as glm and gamlss; however, the batch effect correction may produce harmonized data outside the original range of values. For now, specification of non-Gaussian distributions will generate a warning. This support is still a work-in-progress.

3. Additional features

On top of unifying existing harmonization packages, we include additional features in this package.

For out-of-sample harmonization, we provide ComBat-Predict (predict.comfam) to apply estimated harmonization to a new sample. This function will estimate new batch adjustment parameters if needed, otherwise it will apply existing estimates. predict.comfam has been validated for linear models (lm) and generalized additive models (gam) in Xin et al., 2026. It may give errors for other chosen models. Below is an example call:

com_out <- comfam(iris[1:75,1:2], iris$Species[1:75])
# out-of-sample with new batch
out_pred <- predict(com_out, iris[76:150,1:2], iris$Species[76:150])
# in-sample
in_pred <- predict(com_out, iris[1:25,1:2], iris$Species[1:25])
max(in_pred$dat.combat - com_out$dat.combat[1:25,])

We also provide a wrapper to access model fit diagnostic plots, plot.comfam. Other additional features are in active development.

4. Citations

The original ComBat methodology is implemented in R, Matlab, and Python at https://github.com/Jfortin1/ComBatHarmonization. When using ComBat, please cite the following papers:

Fortin, J.-P., Cullen, N., Sheline, Y. I., Taylor, W. D., Aselcioglu, I., Cook, P. A., Adams, P., Cooper, C., Fava, M., McGrath, P. J., McInnis, M., Phillips, M. L., Trivedi, M. H., Weissman, M. M., & Shinohara, R. T. (2018). Harmonization of cortical thickness measurements across scanners and sites. NeuroImage, 167, 104–120. https://doi.org/10.1016/j.neuroimage.2017.11.024

Fortin, J.-P., Parker, D., Tunç, B., Watanabe, T., Elliott, M. A., Ruparel, K., Roalf, D. R., Satterthwaite, T. D., Gur, R. C., Gur, R. E., Schultz, R. T., Verma, R., & Shinohara, R. T. (2017). Harmonization of multi-site diffusion tensor imaging data. NeuroImage, 161, 149–170. https://doi.org/10.1016/j.neuroimage.2017.08.047

Johnson, W. E., Li, C., & Rabinovic, A. (2007). Adjusting batch effects in microarray expression data using empirical Bayes methods. Biostatistics, 8(1), 118–127. https://doi.org/10.1093/biostatistics/kxj037

The original CovBat method is available at https://github.com/andy1764/CovBat_Harmonization. If implemented, please cite the original article:

Chen, A. A., Beer, J. C., Tustison, N. J., Cook, P. A., Shinohara, R. T., Shou, H., & Initiative, T. A. D. N. (2022). Mitigating site effects in covariance for machine learning in neuroimaging data. Human Brain Mapping, 43(4), 1179–1195. https://doi.org/10.1002/hbm.25688

For longitudinal ComBat, the original R package is available at https://github.com/jcbeer/longCombat with corresponding paper:

Beer, J. C., Tustison, N. J., Cook, P. A., Davatzikos, C., Sheline, Y. I., Shinohara, R. T., & Linn, K. A. (2020). Longitudinal ComBat: A method for harmonizing longitudinal multi-scanner imaging data. NeuroImage, 220, 117129. https://doi.org/10.1016/j.neuroimage.2020.117129

For ComBat-GAM, the Python implementation is available via https://github.com/rpomponio/neuroHarmonize with corresponding paper:

Pomponio, R., Erus, G., Habes, M., Doshi, J., Srinivasan, D., Mamourian, E., Bashyam, V., Nasrallah, I. M., Satterthwaite, T. D., Fan, Y., Launer, L. J., Masters, C. L., Maruff, P., Zhuo, C., Völzke, H., Johnson, S. C., Fripp, J., Koutsouleris, N., Wolf, D. H., … Shou, H., Davatzikos, C. (2020). Harmonization of large MRI datasets for the analysis of brain imaging patterns throughout the lifespan. NeuroImage, 208, 116450. https://doi.org/10.1016/j.neuroimage.2019.116450

For ComBatLS, please cite the following paper:

Gardner, M., Shinohara, R. T., Bethlehem, R. A., Romero‐Garcia, R., Warrier, V., Dorfschmidt, L., ... Alexander-Bloch, A. F. & Chen, A. A. (2025). ComBatLS: A Location‐and Scale‐Preserving Method for Multi‐Site Image Harmonization. Human Brain Mapping, 46(8), e70197. https://doi.org/10.1002/hbm.70197

For ComBat-Predict, please cite the following paper:

Xin, Y., Gardner, M., Tustison, N. J., Cook, P., Gee, J., Benitez, A., ... & Chen, A. A. (2026). ComBat‐Predict Enhances Generalizability of Neuroimaging Models to New Sites. Human Brain Mapping, 47(8), e70546.

About

ComBat Family of Harmonization Methods

Resources

Stars

35 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

ComBat Family of Harmonization Methods

Author: Andrew A. Chen, chenandr@musc.edu

Maintainers:
Andrew A. Chen, chenandr@musc.edu
Haochang Shou, hshou@pennmedicine.upenn.edu
Margaret Gardner, margaret.gardner@pennmedicine.upenn.edu
Zheng Ren, zheng.ren@pennmedicine.upenn.edu

License: Artistic License 2.0

The ComBat Family extends the original ComBat methodology to enable flexible covariate modeling, leveraging efficient R implementations of regression models. A method that belongs in the ComBat Family satisfies the following conditions:

  • Modeling of covariate effects in location and scale
  • Batch effects in location and scale of measurements
  • Empirical Bayes step for borrowing information across features

ComBat Family methods include:

  1. ComBat (Johnson et al., 2007)
  2. ComBat-GAM (Pomponio et al., 2020)
  3. Longitudinal ComBat (Beer et al., 2020)
  4. Robust ComBat (Work-in-progress)
  5. ComBatLS (Gardner et al., preprint)

This package also includes the CovBat Family, which likewise extends the original CovBat methodology to enable flexible covariate modeling while removing batch effects in the mean and covariance of measurements.

This package also includes ComBat-Predict, which provides an out-of-sample extension to any ComBat Family method. If you use this method, please cite Yao et al., 2026.

NOTE: This package is still a work-in-progress and will be updated to include the following features:

  • Nonparametric Empirical Bayes step
  • Empirical Bayes step leveraging non-Gaussian data distributions
  • Functions for evaluating batch effects before and after harmonization

1. Installation

The R package can be installed via devtools by running the following code

# install.packages("remotes")
remotes::install_github("andy1764/ComBatFamily")

Then, you can load this package via

library(ComBatFamily)

2. Usage

Vignettes are provided for both the ComBat family comfam and the CovBat family covfam. To install with vignettes, first install the suggested dependencies via

remotes::install_github("jcbeer/longCombat")
remotes::install_github("andy1764/CovBat_Harmonization/R")
remotes::install_github("jfortin1/neuroCombat_Rpackage")

Then install the ComBatFamily package with vignettes via

remotes::install_github("andy1764/ComBatFamily", build_vignettes = TRUE)

Vignettes can then be accessed through

vignette("comfam")
vignette("covfam")

Example ComBat Family calls for iris data, treating Species as batch:

# Original ComBat
comfam(iris[,1:2], iris$Species, covar = iris[3:4], lm, y ~ Petal.Length + Petal.Width)
# ComBat-GAM
comfam(iris[,1:2], iris$Species, covar = iris[3:4], gam, y ~ s(Petal.Length) + Petal.Width)
# Alternative shorthand functions
combat(iris[,1:2], iris$Species, covar = iris[3:4], y ~ Petal.Length + Petal.Width)
combat_gam(iris[,1:2], iris$Species, covar = iris[3:4], y ~ s(Petal.Length) + Petal.Width)

Note that non-Gaussian data distributions are supported by functions such as glm and gamlss; however, the batch effect correction may produce harmonized data outside the original range of values. For now, specification of non-Gaussian distributions will generate a warning. This support is still a work-in-progress.

3. Additional features

On top of unifying existing harmonization packages, we include additional features in this package.

For out-of-sample harmonization, we provide ComBat-Predict (predict.comfam) to apply estimated harmonization to a new sample. This function will estimate new batch adjustment parameters if needed, otherwise it will apply existing estimates. predict.comfam has been validated for linear models (lm) and generalized additive models (gam) in Xin et al., 2026. It may give errors for other chosen models. Below is an example call:

com_out <- comfam(iris[1:75,1:2], iris$Species[1:75])
# out-of-sample with new batch
out_pred <- predict(com_out, iris[76:150,1:2], iris$Species[76:150])
# in-sample
in_pred <- predict(com_out, iris[1:25,1:2], iris$Species[1:25])
max(in_pred$dat.combat - com_out$dat.combat[1:25,])

We also provide a wrapper to access model fit diagnostic plots, plot.comfam. Other additional features are in active development.

4. Citations

The original ComBat methodology is implemented in R, Matlab, and Python at https://github.com/Jfortin1/ComBatHarmonization. When using ComBat, please cite the following papers:

Fortin, J.-P., Cullen, N., Sheline, Y. I., Taylor, W. D., Aselcioglu, I., Cook, P. A., Adams, P., Cooper, C., Fava, M., McGrath, P. J., McInnis, M., Phillips, M. L., Trivedi, M. H., Weissman, M. M., & Shinohara, R. T. (2018). Harmonization of cortical thickness measurements across scanners and sites. NeuroImage, 167, 104–120. https://doi.org/10.1016/j.neuroimage.2017.11.024

Fortin, J.-P., Parker, D., Tunç, B., Watanabe, T., Elliott, M. A., Ruparel, K., Roalf, D. R., Satterthwaite, T. D., Gur, R. C., Gur, R. E., Schultz, R. T., Verma, R., & Shinohara, R. T. (2017). Harmonization of multi-site diffusion tensor imaging data. NeuroImage, 161, 149–170. https://doi.org/10.1016/j.neuroimage.2017.08.047

Johnson, W. E., Li, C., & Rabinovic, A. (2007). Adjusting batch effects in microarray expression data using empirical Bayes methods. Biostatistics, 8(1), 118–127. https://doi.org/10.1093/biostatistics/kxj037

The original CovBat method is available at https://github.com/andy1764/CovBat_Harmonization. If implemented, please cite the original article:

Chen, A. A., Beer, J. C., Tustison, N. J., Cook, P. A., Shinohara, R. T., Shou, H., & Initiative, T. A. D. N. (2022). Mitigating site effects in covariance for machine learning in neuroimaging data. Human Brain Mapping, 43(4), 1179–1195. https://doi.org/10.1002/hbm.25688

For longitudinal ComBat, the original R package is available at https://github.com/jcbeer/longCombat with corresponding paper:

Beer, J. C., Tustison, N. J., Cook, P. A., Davatzikos, C., Sheline, Y. I., Shinohara, R. T., & Linn, K. A. (2020). Longitudinal ComBat: A method for harmonizing longitudinal multi-scanner imaging data. NeuroImage, 220, 117129. https://doi.org/10.1016/j.neuroimage.2020.117129

For ComBat-GAM, the Python implementation is available via https://github.com/rpomponio/neuroHarmonize with corresponding paper:

Pomponio, R., Erus, G., Habes, M., Doshi, J., Srinivasan, D., Mamourian, E., Bashyam, V., Nasrallah, I. M., Satterthwaite, T. D., Fan, Y., Launer, L. J., Masters, C. L., Maruff, P., Zhuo, C., Völzke, H., Johnson, S. C., Fripp, J., Koutsouleris, N., Wolf, D. H., … Shou, H., Davatzikos, C. (2020). Harmonization of large MRI datasets for the analysis of brain imaging patterns throughout the lifespan. NeuroImage, 208, 116450. https://doi.org/10.1016/j.neuroimage.2019.116450

For ComBatLS, please cite the following paper:

Gardner, M., Shinohara, R. T., Bethlehem, R. A., Romero‐Garcia, R., Warrier, V., Dorfschmidt, L., ... Alexander-Bloch, A. F. & Chen, A. A. (2025). ComBatLS: A Location‐and Scale‐Preserving Method for Multi‐Site Image Harmonization. Human Brain Mapping, 46(8), e70197. https://doi.org/10.1002/hbm.70197

For ComBat-Predict, please cite the following paper:

Xin, Y., Gardner, M., Tustison, N. J., Cook, P., Gee, J., Benitez, A., ... & Chen, A. A. (2026). ComBat‐Predict Enhances Generalizability of Neuroimaging Models to New Sites. Human Brain Mapping, 47(8), e70546.

About

ComBat Family of Harmonization Methods

Resources

Stars

35 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

ComBat Family of Harmonization Methods

Author: Andrew A. Chen, chenandr@musc.edu

Maintainers:
Andrew A. Chen, chenandr@musc.edu
Haochang Shou, hshou@pennmedicine.upenn.edu
Margaret Gardner, margaret.gardner@pennmedicine.upenn.edu
Zheng Ren, zheng.ren@pennmedicine.upenn.edu

License: Artistic License 2.0

The ComBat Family extends the original ComBat methodology to enable flexible covariate modeling, leveraging efficient R implementations of regression models. A method that belongs in the ComBat Family satisfies the following conditions:

  • Modeling of covariate effects in location and scale
  • Batch effects in location and scale of measurements
  • Empirical Bayes step for borrowing information across features

ComBat Family methods include:

  1. ComBat (Johnson et al., 2007)
  2. ComBat-GAM (Pomponio et al., 2020)
  3. Longitudinal ComBat (Beer et al., 2020)
  4. Robust ComBat (Work-in-progress)
  5. ComBatLS (Gardner et al., preprint)

This package also includes the CovBat Family, which likewise extends the original CovBat methodology to enable flexible covariate modeling while removing batch effects in the mean and covariance of measurements.

This package also includes ComBat-Predict, which provides an out-of-sample extension to any ComBat Family method. If you use this method, please cite Yao et al., 2026.

NOTE: This package is still a work-in-progress and will be updated to include the following features:

  • Nonparametric Empirical Bayes step
  • Empirical Bayes step leveraging non-Gaussian data distributions
  • Functions for evaluating batch effects before and after harmonization

1. Installation

The R package can be installed via devtools by running the following code

# install.packages("remotes")
remotes::install_github("andy1764/ComBatFamily")

Then, you can load this package via

library(ComBatFamily)

2. Usage

Vignettes are provided for both the ComBat family comfam and the CovBat family covfam. To install with vignettes, first install the suggested dependencies via

remotes::install_github("jcbeer/longCombat")
remotes::install_github("andy1764/CovBat_Harmonization/R")
remotes::install_github("jfortin1/neuroCombat_Rpackage")

Then install the ComBatFamily package with vignettes via

remotes::install_github("andy1764/ComBatFamily", build_vignettes = TRUE)

Vignettes can then be accessed through

vignette("comfam")
vignette("covfam")

Example ComBat Family calls for iris data, treating Species as batch:

# Original ComBat
comfam(iris[,1:2], iris$Species, covar = iris[3:4], lm, y ~ Petal.Length + Petal.Width)
# ComBat-GAM
comfam(iris[,1:2], iris$Species, covar = iris[3:4], gam, y ~ s(Petal.Length) + Petal.Width)
# Alternative shorthand functions
combat(iris[,1:2], iris$Species, covar = iris[3:4], y ~ Petal.Length + Petal.Width)
combat_gam(iris[,1:2], iris$Species, covar = iris[3:4], y ~ s(Petal.Length) + Petal.Width)

Note that non-Gaussian data distributions are supported by functions such as glm and gamlss; however, the batch effect correction may produce harmonized data outside the original range of values. For now, specification of non-Gaussian distributions will generate a warning. This support is still a work-in-progress.

3. Additional features

On top of unifying existing harmonization packages, we include additional features in this package.

For out-of-sample harmonization, we provide ComBat-Predict (predict.comfam) to apply estimated harmonization to a new sample. This function will estimate new batch adjustment parameters if needed, otherwise it will apply existing estimates. predict.comfam has been validated for linear models (lm) and generalized additive models (gam) in Xin et al., 2026. It may give errors for other chosen models. Below is an example call:

com_out <- comfam(iris[1:75,1:2], iris$Species[1:75])
# out-of-sample with new batch
out_pred <- predict(com_out, iris[76:150,1:2], iris$Species[76:150])
# in-sample
in_pred <- predict(com_out, iris[1:25,1:2], iris$Species[1:25])
max(in_pred$dat.combat - com_out$dat.combat[1:25,])

We also provide a wrapper to access model fit diagnostic plots, plot.comfam. Other additional features are in active development.

4. Citations

The original ComBat methodology is implemented in R, Matlab, and Python at https://github.com/Jfortin1/ComBatHarmonization. When using ComBat, please cite the following papers:

Fortin, J.-P., Cullen, N., Sheline, Y. I., Taylor, W. D., Aselcioglu, I., Cook, P. A., Adams, P., Cooper, C., Fava, M., McGrath, P. J., McInnis, M., Phillips, M. L., Trivedi, M. H., Weissman, M. M., & Shinohara, R. T. (2018). Harmonization of cortical thickness measurements across scanners and sites. NeuroImage, 167, 104–120. https://doi.org/10.1016/j.neuroimage.2017.11.024

Fortin, J.-P., Parker, D., Tunç, B., Watanabe, T., Elliott, M. A., Ruparel, K., Roalf, D. R., Satterthwaite, T. D., Gur, R. C., Gur, R. E., Schultz, R. T., Verma, R., & Shinohara, R. T. (2017). Harmonization of multi-site diffusion tensor imaging data. NeuroImage, 161, 149–170. https://doi.org/10.1016/j.neuroimage.2017.08.047

Johnson, W. E., Li, C., & Rabinovic, A. (2007). Adjusting batch effects in microarray expression data using empirical Bayes methods. Biostatistics, 8(1), 118–127. https://doi.org/10.1093/biostatistics/kxj037

The original CovBat method is available at https://github.com/andy1764/CovBat_Harmonization. If implemented, please cite the original article:

Chen, A. A., Beer, J. C., Tustison, N. J., Cook, P. A., Shinohara, R. T., Shou, H., & Initiative, T. A. D. N. (2022). Mitigating site effects in covariance for machine learning in neuroimaging data. Human Brain Mapping, 43(4), 1179–1195. https://doi.org/10.1002/hbm.25688

For longitudinal ComBat, the original R package is available at https://github.com/jcbeer/longCombat with corresponding paper:

Beer, J. C., Tustison, N. J., Cook, P. A., Davatzikos, C., Sheline, Y. I., Shinohara, R. T., & Linn, K. A. (2020). Longitudinal ComBat: A method for harmonizing longitudinal multi-scanner imaging data. NeuroImage, 220, 117129. https://doi.org/10.1016/j.neuroimage.2020.117129

For ComBat-GAM, the Python implementation is available via https://github.com/rpomponio/neuroHarmonize with corresponding paper:

Pomponio, R., Erus, G., Habes, M., Doshi, J., Srinivasan, D., Mamourian, E., Bashyam, V., Nasrallah, I. M., Satterthwaite, T. D., Fan, Y., Launer, L. J., Masters, C. L., Maruff, P., Zhuo, C., Völzke, H., Johnson, S. C., Fripp, J., Koutsouleris, N., Wolf, D. H., … Shou, H., Davatzikos, C. (2020). Harmonization of large MRI datasets for the analysis of brain imaging patterns throughout the lifespan. NeuroImage, 208, 116450. https://doi.org/10.1016/j.neuroimage.2019.116450

For ComBatLS, please cite the following paper:

Gardner, M., Shinohara, R. T., Bethlehem, R. A., Romero‐Garcia, R., Warrier, V., Dorfschmidt, L., ... Alexander-Bloch, A. F. & Chen, A. A. (2025). ComBatLS: A Location‐and Scale‐Preserving Method for Multi‐Site Image Harmonization. Human Brain Mapping, 46(8), e70197. https://doi.org/10.1002/hbm.70197

For ComBat-Predict, please cite the following paper:

Xin, Y., Gardner, M., Tustison, N. J., Cook, P., Gee, J., Benitez, A., ... & Chen, A. A. (2026). ComBat‐Predict Enhances Generalizability of Neuroimaging Models to New Sites. Human Brain Mapping, 47(8), e70546.

About

ComBat Family of Harmonization Methods

Resources

Stars

35 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

ComBat Family of Harmonization Methods

Author: Andrew A. Chen, chenandr@musc.edu

Maintainers:
Andrew A. Chen, chenandr@musc.edu
Haochang Shou, hshou@pennmedicine.upenn.edu
Margaret Gardner, margaret.gardner@pennmedicine.upenn.edu
Zheng Ren, zheng.ren@pennmedicine.upenn.edu

License: Artistic License 2.0

The ComBat Family extends the original ComBat methodology to enable flexible covariate modeling, leveraging efficient R implementations of regression models. A method that belongs in the ComBat Family satisfies the following conditions:

  • Modeling of covariate effects in location and scale
  • Batch effects in location and scale of measurements
  • Empirical Bayes step for borrowing information across features

ComBat Family methods include:

  1. ComBat (Johnson et al., 2007)
  2. ComBat-GAM (Pomponio et al., 2020)
  3. Longitudinal ComBat (Beer et al., 2020)
  4. Robust ComBat (Work-in-progress)
  5. ComBatLS (Gardner et al., preprint)

This package also includes the CovBat Family, which likewise extends the original CovBat methodology to enable flexible covariate modeling while removing batch effects in the mean and covariance of measurements.

This package also includes ComBat-Predict, which provides an out-of-sample extension to any ComBat Family method. If you use this method, please cite Yao et al., 2026.

NOTE: This package is still a work-in-progress and will be updated to include the following features:

  • Nonparametric Empirical Bayes step
  • Empirical Bayes step leveraging non-Gaussian data distributions
  • Functions for evaluating batch effects before and after harmonization

1. Installation

The R package can be installed via devtools by running the following code

# install.packages("remotes")
remotes::install_github("andy1764/ComBatFamily")

Then, you can load this package via

library(ComBatFamily)

2. Usage

Vignettes are provided for both the ComBat family comfam and the CovBat family covfam. To install with vignettes, first install the suggested dependencies via

remotes::install_github("jcbeer/longCombat")
remotes::install_github("andy1764/CovBat_Harmonization/R")
remotes::install_github("jfortin1/neuroCombat_Rpackage")

Then install the ComBatFamily package with vignettes via

remotes::install_github("andy1764/ComBatFamily", build_vignettes = TRUE)

Vignettes can then be accessed through

vignette("comfam")
vignette("covfam")

Example ComBat Family calls for iris data, treating Species as batch:

# Original ComBat
comfam(iris[,1:2], iris$Species, covar = iris[3:4], lm, y ~ Petal.Length + Petal.Width)
# ComBat-GAM
comfam(iris[,1:2], iris$Species, covar = iris[3:4], gam, y ~ s(Petal.Length) + Petal.Width)
# Alternative shorthand functions
combat(iris[,1:2], iris$Species, covar = iris[3:4], y ~ Petal.Length + Petal.Width)
combat_gam(iris[,1:2], iris$Species, covar = iris[3:4], y ~ s(Petal.Length) + Petal.Width)

Note that non-Gaussian data distributions are supported by functions such as glm and gamlss; however, the batch effect correction may produce harmonized data outside the original range of values. For now, specification of non-Gaussian distributions will generate a warning. This support is still a work-in-progress.

3. Additional features

On top of unifying existing harmonization packages, we include additional features in this package.

For out-of-sample harmonization, we provide ComBat-Predict (predict.comfam) to apply estimated harmonization to a new sample. This function will estimate new batch adjustment parameters if needed, otherwise it will apply existing estimates. predict.comfam has been validated for linear models (lm) and generalized additive models (gam) in Xin et al., 2026. It may give errors for other chosen models. Below is an example call:

com_out <- comfam(iris[1:75,1:2], iris$Species[1:75])
# out-of-sample with new batch
out_pred <- predict(com_out, iris[76:150,1:2], iris$Species[76:150])
# in-sample
in_pred <- predict(com_out, iris[1:25,1:2], iris$Species[1:25])
max(in_pred$dat.combat - com_out$dat.combat[1:25,])

We also provide a wrapper to access model fit diagnostic plots, plot.comfam. Other additional features are in active development.

4. Citations

The original ComBat methodology is implemented in R, Matlab, and Python at https://github.com/Jfortin1/ComBatHarmonization. When using ComBat, please cite the following papers:

Fortin, J.-P., Cullen, N., Sheline, Y. I., Taylor, W. D., Aselcioglu, I., Cook, P. A., Adams, P., Cooper, C., Fava, M., McGrath, P. J., McInnis, M., Phillips, M. L., Trivedi, M. H., Weissman, M. M., & Shinohara, R. T. (2018). Harmonization of cortical thickness measurements across scanners and sites. NeuroImage, 167, 104–120. https://doi.org/10.1016/j.neuroimage.2017.11.024

Fortin, J.-P., Parker, D., Tunç, B., Watanabe, T., Elliott, M. A., Ruparel, K., Roalf, D. R., Satterthwaite, T. D., Gur, R. C., Gur, R. E., Schultz, R. T., Verma, R., & Shinohara, R. T. (2017). Harmonization of multi-site diffusion tensor imaging data. NeuroImage, 161, 149–170. https://doi.org/10.1016/j.neuroimage.2017.08.047

Johnson, W. E., Li, C., & Rabinovic, A. (2007). Adjusting batch effects in microarray expression data using empirical Bayes methods. Biostatistics, 8(1), 118–127. https://doi.org/10.1093/biostatistics/kxj037

The original CovBat method is available at https://github.com/andy1764/CovBat_Harmonization. If implemented, please cite the original article:

Chen, A. A., Beer, J. C., Tustison, N. J., Cook, P. A., Shinohara, R. T., Shou, H., & Initiative, T. A. D. N. (2022). Mitigating site effects in covariance for machine learning in neuroimaging data. Human Brain Mapping, 43(4), 1179–1195. https://doi.org/10.1002/hbm.25688

For longitudinal ComBat, the original R package is available at https://github.com/jcbeer/longCombat with corresponding paper:

Beer, J. C., Tustison, N. J., Cook, P. A., Davatzikos, C., Sheline, Y. I., Shinohara, R. T., & Linn, K. A. (2020). Longitudinal ComBat: A method for harmonizing longitudinal multi-scanner imaging data. NeuroImage, 220, 117129. https://doi.org/10.1016/j.neuroimage.2020.117129

For ComBat-GAM, the Python implementation is available via https://github.com/rpomponio/neuroHarmonize with corresponding paper:

Pomponio, R., Erus, G., Habes, M., Doshi, J., Srinivasan, D., Mamourian, E., Bashyam, V., Nasrallah, I. M., Satterthwaite, T. D., Fan, Y., Launer, L. J., Masters, C. L., Maruff, P., Zhuo, C., Völzke, H., Johnson, S. C., Fripp, J., Koutsouleris, N., Wolf, D. H., … Shou, H., Davatzikos, C. (2020). Harmonization of large MRI datasets for the analysis of brain imaging patterns throughout the lifespan. NeuroImage, 208, 116450. https://doi.org/10.1016/j.neuroimage.2019.116450

For ComBatLS, please cite the following paper:

Gardner, M., Shinohara, R. T., Bethlehem, R. A., Romero‐Garcia, R., Warrier, V., Dorfschmidt, L., ... Alexander-Bloch, A. F. & Chen, A. A. (2025). ComBatLS: A Location‐and Scale‐Preserving Method for Multi‐Site Image Harmonization. Human Brain Mapping, 46(8), e70197. https://doi.org/10.1002/hbm.70197

For ComBat-Predict, please cite the following paper:

Xin, Y., Gardner, M., Tustison, N. J., Cook, P., Gee, J., Benitez, A., ... & Chen, A. A. (2026). ComBat‐Predict Enhances Generalizability of Neuroimaging Models to New Sites. Human Brain Mapping, 47(8), e70546.

About

ComBat Family of Harmonization Methods

Resources

Stars

35 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

ComBat Family of Harmonization Methods

Author: Andrew A. Chen, chenandr@musc.edu

Maintainers:
Andrew A. Chen, chenandr@musc.edu
Haochang Shou, hshou@pennmedicine.upenn.edu
Margaret Gardner, margaret.gardner@pennmedicine.upenn.edu
Zheng Ren, zheng.ren@pennmedicine.upenn.edu

License: Artistic License 2.0

The ComBat Family extends the original ComBat methodology to enable flexible covariate modeling, leveraging efficient R implementations of regression models. A method that belongs in the ComBat Family satisfies the following conditions:

  • Modeling of covariate effects in location and scale
  • Batch effects in location and scale of measurements
  • Empirical Bayes step for borrowing information across features

ComBat Family methods include:

  1. ComBat (Johnson et al., 2007)
  2. ComBat-GAM (Pomponio et al., 2020)
  3. Longitudinal ComBat (Beer et al., 2020)
  4. Robust ComBat (Work-in-progress)
  5. ComBatLS (Gardner et al., preprint)

This package also includes the CovBat Family, which likewise extends the original CovBat methodology to enable flexible covariate modeling while removing batch effects in the mean and covariance of measurements.

This package also includes ComBat-Predict, which provides an out-of-sample extension to any ComBat Family method. If you use this method, please cite Yao et al., 2026.

NOTE: This package is still a work-in-progress and will be updated to include the following features:

  • Nonparametric Empirical Bayes step
  • Empirical Bayes step leveraging non-Gaussian data distributions
  • Functions for evaluating batch effects before and after harmonization

1. Installation

The R package can be installed via devtools by running the following code

# install.packages("remotes")
remotes::install_github("andy1764/ComBatFamily")

Then, you can load this package via

library(ComBatFamily)

2. Usage

Vignettes are provided for both the ComBat family comfam and the CovBat family covfam. To install with vignettes, first install the suggested dependencies via

remotes::install_github("jcbeer/longCombat")
remotes::install_github("andy1764/CovBat_Harmonization/R")
remotes::install_github("jfortin1/neuroCombat_Rpackage")

Then install the ComBatFamily package with vignettes via

remotes::install_github("andy1764/ComBatFamily", build_vignettes = TRUE)

Vignettes can then be accessed through

vignette("comfam")
vignette("covfam")

Example ComBat Family calls for iris data, treating Species as batch:

# Original ComBat
comfam(iris[,1:2], iris$Species, covar = iris[3:4], lm, y ~ Petal.Length + Petal.Width)
# ComBat-GAM
comfam(iris[,1:2], iris$Species, covar = iris[3:4], gam, y ~ s(Petal.Length) + Petal.Width)
# Alternative shorthand functions
combat(iris[,1:2], iris$Species, covar = iris[3:4], y ~ Petal.Length + Petal.Width)
combat_gam(iris[,1:2], iris$Species, covar = iris[3:4], y ~ s(Petal.Length) + Petal.Width)

Note that non-Gaussian data distributions are supported by functions such as glm and gamlss; however, the batch effect correction may produce harmonized data outside the original range of values. For now, specification of non-Gaussian distributions will generate a warning. This support is still a work-in-progress.

3. Additional features

On top of unifying existing harmonization packages, we include additional features in this package.

For out-of-sample harmonization, we provide ComBat-Predict (predict.comfam) to apply estimated harmonization to a new sample. This function will estimate new batch adjustment parameters if needed, otherwise it will apply existing estimates. predict.comfam has been validated for linear models (lm) and generalized additive models (gam) in Xin et al., 2026. It may give errors for other chosen models. Below is an example call:

com_out <- comfam(iris[1:75,1:2], iris$Species[1:75])
# out-of-sample with new batch
out_pred <- predict(com_out, iris[76:150,1:2], iris$Species[76:150])
# in-sample
in_pred <- predict(com_out, iris[1:25,1:2], iris$Species[1:25])
max(in_pred$dat.combat - com_out$dat.combat[1:25,])

We also provide a wrapper to access model fit diagnostic plots, plot.comfam. Other additional features are in active development.

4. Citations

The original ComBat methodology is implemented in R, Matlab, and Python at https://github.com/Jfortin1/ComBatHarmonization. When using ComBat, please cite the following papers:

Fortin, J.-P., Cullen, N., Sheline, Y. I., Taylor, W. D., Aselcioglu, I., Cook, P. A., Adams, P., Cooper, C., Fava, M., McGrath, P. J., McInnis, M., Phillips, M. L., Trivedi, M. H., Weissman, M. M., & Shinohara, R. T. (2018). Harmonization of cortical thickness measurements across scanners and sites. NeuroImage, 167, 104–120. https://doi.org/10.1016/j.neuroimage.2017.11.024

Fortin, J.-P., Parker, D., Tunç, B., Watanabe, T., Elliott, M. A., Ruparel, K., Roalf, D. R., Satterthwaite, T. D., Gur, R. C., Gur, R. E., Schultz, R. T., Verma, R., & Shinohara, R. T. (2017). Harmonization of multi-site diffusion tensor imaging data. NeuroImage, 161, 149–170. https://doi.org/10.1016/j.neuroimage.2017.08.047

Johnson, W. E., Li, C., & Rabinovic, A. (2007). Adjusting batch effects in microarray expression data using empirical Bayes methods. Biostatistics, 8(1), 118–127. https://doi.org/10.1093/biostatistics/kxj037

The original CovBat method is available at https://github.com/andy1764/CovBat_Harmonization. If implemented, please cite the original article:

Chen, A. A., Beer, J. C., Tustison, N. J., Cook, P. A., Shinohara, R. T., Shou, H., & Initiative, T. A. D. N. (2022). Mitigating site effects in covariance for machine learning in neuroimaging data. Human Brain Mapping, 43(4), 1179–1195. https://doi.org/10.1002/hbm.25688

For longitudinal ComBat, the original R package is available at https://github.com/jcbeer/longCombat with corresponding paper:

Beer, J. C., Tustison, N. J., Cook, P. A., Davatzikos, C., Sheline, Y. I., Shinohara, R. T., & Linn, K. A. (2020). Longitudinal ComBat: A method for harmonizing longitudinal multi-scanner imaging data. NeuroImage, 220, 117129. https://doi.org/10.1016/j.neuroimage.2020.117129

For ComBat-GAM, the Python implementation is available via https://github.com/rpomponio/neuroHarmonize with corresponding paper:

Pomponio, R., Erus, G., Habes, M., Doshi, J., Srinivasan, D., Mamourian, E., Bashyam, V., Nasrallah, I. M., Satterthwaite, T. D., Fan, Y., Launer, L. J., Masters, C. L., Maruff, P., Zhuo, C., Völzke, H., Johnson, S. C., Fripp, J., Koutsouleris, N., Wolf, D. H., … Shou, H., Davatzikos, C. (2020). Harmonization of large MRI datasets for the analysis of brain imaging patterns throughout the lifespan. NeuroImage, 208, 116450. https://doi.org/10.1016/j.neuroimage.2019.116450

For ComBatLS, please cite the following paper:

Gardner, M., Shinohara, R. T., Bethlehem, R. A., Romero‐Garcia, R., Warrier, V., Dorfschmidt, L., ... Alexander-Bloch, A. F. & Chen, A. A. (2025). ComBatLS: A Location‐and Scale‐Preserving Method for Multi‐Site Image Harmonization. Human Brain Mapping, 46(8), e70197. https://doi.org/10.1002/hbm.70197

For ComBat-Predict, please cite the following paper:

Xin, Y., Gardner, M., Tustison, N. J., Cook, P., Gee, J., Benitez, A., ... & Chen, A. A. (2026). ComBat‐Predict Enhances Generalizability of Neuroimaging Models to New Sites. Human Brain Mapping, 47(8), e70546.

About

ComBat Family of Harmonization Methods

Resources

Stars

35 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

ComBat Family of Harmonization Methods

Author: Andrew A. Chen, chenandr@musc.edu

Maintainers:
Andrew A. Chen, chenandr@musc.edu
Haochang Shou, hshou@pennmedicine.upenn.edu
Margaret Gardner, margaret.gardner@pennmedicine.upenn.edu
Zheng Ren, zheng.ren@pennmedicine.upenn.edu

License: Artistic License 2.0

The ComBat Family extends the original ComBat methodology to enable flexible covariate modeling, leveraging efficient R implementations of regression models. A method that belongs in the ComBat Family satisfies the following conditions:

  • Modeling of covariate effects in location and scale
  • Batch effects in location and scale of measurements
  • Empirical Bayes step for borrowing information across features

ComBat Family methods include:

  1. ComBat (Johnson et al., 2007)
  2. ComBat-GAM (Pomponio et al., 2020)
  3. Longitudinal ComBat (Beer et al., 2020)
  4. Robust ComBat (Work-in-progress)
  5. ComBatLS (Gardner et al., preprint)

This package also includes the CovBat Family, which likewise extends the original CovBat methodology to enable flexible covariate modeling while removing batch effects in the mean and covariance of measurements.

This package also includes ComBat-Predict, which provides an out-of-sample extension to any ComBat Family method. If you use this method, please cite Yao et al., 2026.

NOTE: This package is still a work-in-progress and will be updated to include the following features:

  • Nonparametric Empirical Bayes step
  • Empirical Bayes step leveraging non-Gaussian data distributions
  • Functions for evaluating batch effects before and after harmonization

1. Installation

The R package can be installed via devtools by running the following code

# install.packages("remotes")
remotes::install_github("andy1764/ComBatFamily")

Then, you can load this package via

library(ComBatFamily)

2. Usage

Vignettes are provided for both the ComBat family comfam and the CovBat family covfam. To install with vignettes, first install the suggested dependencies via

remotes::install_github("jcbeer/longCombat")
remotes::install_github("andy1764/CovBat_Harmonization/R")
remotes::install_github("jfortin1/neuroCombat_Rpackage")

Then install the ComBatFamily package with vignettes via

remotes::install_github("andy1764/ComBatFamily", build_vignettes = TRUE)

Vignettes can then be accessed through

vignette("comfam")
vignette("covfam")

Example ComBat Family calls for iris data, treating Species as batch:

# Original ComBat
comfam(iris[,1:2], iris$Species, covar = iris[3:4], lm, y ~ Petal.Length + Petal.Width)
# ComBat-GAM
comfam(iris[,1:2], iris$Species, covar = iris[3:4], gam, y ~ s(Petal.Length) + Petal.Width)
# Alternative shorthand functions
combat(iris[,1:2], iris$Species, covar = iris[3:4], y ~ Petal.Length + Petal.Width)
combat_gam(iris[,1:2], iris$Species, covar = iris[3:4], y ~ s(Petal.Length) + Petal.Width)

Note that non-Gaussian data distributions are supported by functions such as glm and gamlss; however, the batch effect correction may produce harmonized data outside the original range of values. For now, specification of non-Gaussian distributions will generate a warning. This support is still a work-in-progress.

3. Additional features

On top of unifying existing harmonization packages, we include additional features in this package.

For out-of-sample harmonization, we provide ComBat-Predict (predict.comfam) to apply estimated harmonization to a new sample. This function will estimate new batch adjustment parameters if needed, otherwise it will apply existing estimates. predict.comfam has been validated for linear models (lm) and generalized additive models (gam) in Xin et al., 2026. It may give errors for other chosen models. Below is an example call:

com_out <- comfam(iris[1:75,1:2], iris$Species[1:75])
# out-of-sample with new batch
out_pred <- predict(com_out, iris[76:150,1:2], iris$Species[76:150])
# in-sample
in_pred <- predict(com_out, iris[1:25,1:2], iris$Species[1:25])
max(in_pred$dat.combat - com_out$dat.combat[1:25,])

We also provide a wrapper to access model fit diagnostic plots, plot.comfam. Other additional features are in active development.

4. Citations

The original ComBat methodology is implemented in R, Matlab, and Python at https://github.com/Jfortin1/ComBatHarmonization. When using ComBat, please cite the following papers:

Fortin, J.-P., Cullen, N., Sheline, Y. I., Taylor, W. D., Aselcioglu, I., Cook, P. A., Adams, P., Cooper, C., Fava, M., McGrath, P. J., McInnis, M., Phillips, M. L., Trivedi, M. H., Weissman, M. M., & Shinohara, R. T. (2018). Harmonization of cortical thickness measurements across scanners and sites. NeuroImage, 167, 104–120. https://doi.org/10.1016/j.neuroimage.2017.11.024

Fortin, J.-P., Parker, D., Tunç, B., Watanabe, T., Elliott, M. A., Ruparel, K., Roalf, D. R., Satterthwaite, T. D., Gur, R. C., Gur, R. E., Schultz, R. T., Verma, R., & Shinohara, R. T. (2017). Harmonization of multi-site diffusion tensor imaging data. NeuroImage, 161, 149–170. https://doi.org/10.1016/j.neuroimage.2017.08.047

Johnson, W. E., Li, C., & Rabinovic, A. (2007). Adjusting batch effects in microarray expression data using empirical Bayes methods. Biostatistics, 8(1), 118–127. https://doi.org/10.1093/biostatistics/kxj037

The original CovBat method is available at https://github.com/andy1764/CovBat_Harmonization. If implemented, please cite the original article:

Chen, A. A., Beer, J. C., Tustison, N. J., Cook, P. A., Shinohara, R. T., Shou, H., & Initiative, T. A. D. N. (2022). Mitigating site effects in covariance for machine learning in neuroimaging data. Human Brain Mapping, 43(4), 1179–1195. https://doi.org/10.1002/hbm.25688

For longitudinal ComBat, the original R package is available at https://github.com/jcbeer/longCombat with corresponding paper:

Beer, J. C., Tustison, N. J., Cook, P. A., Davatzikos, C., Sheline, Y. I., Shinohara, R. T., & Linn, K. A. (2020). Longitudinal ComBat: A method for harmonizing longitudinal multi-scanner imaging data. NeuroImage, 220, 117129. https://doi.org/10.1016/j.neuroimage.2020.117129

For ComBat-GAM, the Python implementation is available via https://github.com/rpomponio/neuroHarmonize with corresponding paper:

Pomponio, R., Erus, G., Habes, M., Doshi, J., Srinivasan, D., Mamourian, E., Bashyam, V., Nasrallah, I. M., Satterthwaite, T. D., Fan, Y., Launer, L. J., Masters, C. L., Maruff, P., Zhuo, C., Völzke, H., Johnson, S. C., Fripp, J., Koutsouleris, N., Wolf, D. H., … Shou, H., Davatzikos, C. (2020). Harmonization of large MRI datasets for the analysis of brain imaging patterns throughout the lifespan. NeuroImage, 208, 116450. https://doi.org/10.1016/j.neuroimage.2019.116450

For ComBatLS, please cite the following paper:

Gardner, M., Shinohara, R. T., Bethlehem, R. A., Romero‐Garcia, R., Warrier, V., Dorfschmidt, L., ... Alexander-Bloch, A. F. & Chen, A. A. (2025). ComBatLS: A Location‐and Scale‐Preserving Method for Multi‐Site Image Harmonization. Human Brain Mapping, 46(8), e70197. https://doi.org/10.1002/hbm.70197

For ComBat-Predict, please cite the following paper:

Xin, Y., Gardner, M., Tustison, N. J., Cook, P., Gee, J., Benitez, A., ... & Chen, A. A. (2026). ComBat‐Predict Enhances Generalizability of Neuroimaging Models to New Sites. Human Brain Mapping, 47(8), e70546.

About

ComBat Family of Harmonization Methods

Resources

Stars

35 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

ComBat Family of Harmonization Methods

Author: Andrew A. Chen, chenandr@musc.edu

Maintainers:
Andrew A. Chen, chenandr@musc.edu
Haochang Shou, hshou@pennmedicine.upenn.edu
Margaret Gardner, margaret.gardner@pennmedicine.upenn.edu
Zheng Ren, zheng.ren@pennmedicine.upenn.edu

License: Artistic License 2.0

The ComBat Family extends the original ComBat methodology to enable flexible covariate modeling, leveraging efficient R implementations of regression models. A method that belongs in the ComBat Family satisfies the following conditions:

  • Modeling of covariate effects in location and scale
  • Batch effects in location and scale of measurements
  • Empirical Bayes step for borrowing information across features

ComBat Family methods include:

  1. ComBat (Johnson et al., 2007)
  2. ComBat-GAM (Pomponio et al., 2020)
  3. Longitudinal ComBat (Beer et al., 2020)
  4. Robust ComBat (Work-in-progress)
  5. ComBatLS (Gardner et al., preprint)

This package also includes the CovBat Family, which likewise extends the original CovBat methodology to enable flexible covariate modeling while removing batch effects in the mean and covariance of measurements.

This package also includes ComBat-Predict, which provides an out-of-sample extension to any ComBat Family method. If you use this method, please cite Yao et al., 2026.

NOTE: This package is still a work-in-progress and will be updated to include the following features:

  • Nonparametric Empirical Bayes step
  • Empirical Bayes step leveraging non-Gaussian data distributions
  • Functions for evaluating batch effects before and after harmonization

1. Installation

The R package can be installed via devtools by running the following code

# install.packages("remotes")
remotes::install_github("andy1764/ComBatFamily")

Then, you can load this package via

library(ComBatFamily)

2. Usage

Vignettes are provided for both the ComBat family comfam and the CovBat family covfam. To install with vignettes, first install the suggested dependencies via

remotes::install_github("jcbeer/longCombat")
remotes::install_github("andy1764/CovBat_Harmonization/R")
remotes::install_github("jfortin1/neuroCombat_Rpackage")

Then install the ComBatFamily package with vignettes via

remotes::install_github("andy1764/ComBatFamily", build_vignettes = TRUE)

Vignettes can then be accessed through

vignette("comfam")
vignette("covfam")

Example ComBat Family calls for iris data, treating Species as batch:

# Original ComBat
comfam(iris[,1:2], iris$Species, covar = iris[3:4], lm, y ~ Petal.Length + Petal.Width)
# ComBat-GAM
comfam(iris[,1:2], iris$Species, covar = iris[3:4], gam, y ~ s(Petal.Length) + Petal.Width)
# Alternative shorthand functions
combat(iris[,1:2], iris$Species, covar = iris[3:4], y ~ Petal.Length + Petal.Width)
combat_gam(iris[,1:2], iris$Species, covar = iris[3:4], y ~ s(Petal.Length) + Petal.Width)

Note that non-Gaussian data distributions are supported by functions such as glm and gamlss; however, the batch effect correction may produce harmonized data outside the original range of values. For now, specification of non-Gaussian distributions will generate a warning. This support is still a work-in-progress.

3. Additional features

On top of unifying existing harmonization packages, we include additional features in this package.

For out-of-sample harmonization, we provide ComBat-Predict (predict.comfam) to apply estimated harmonization to a new sample. This function will estimate new batch adjustment parameters if needed, otherwise it will apply existing estimates. predict.comfam has been validated for linear models (lm) and generalized additive models (gam) in Xin et al., 2026. It may give errors for other chosen models. Below is an example call:

com_out <- comfam(iris[1:75,1:2], iris$Species[1:75])
# out-of-sample with new batch
out_pred <- predict(com_out, iris[76:150,1:2], iris$Species[76:150])
# in-sample
in_pred <- predict(com_out, iris[1:25,1:2], iris$Species[1:25])
max(in_pred$dat.combat - com_out$dat.combat[1:25,])

We also provide a wrapper to access model fit diagnostic plots, plot.comfam. Other additional features are in active development.

4. Citations

The original ComBat methodology is implemented in R, Matlab, and Python at https://github.com/Jfortin1/ComBatHarmonization. When using ComBat, please cite the following papers:

Fortin, J.-P., Cullen, N., Sheline, Y. I., Taylor, W. D., Aselcioglu, I., Cook, P. A., Adams, P., Cooper, C., Fava, M., McGrath, P. J., McInnis, M., Phillips, M. L., Trivedi, M. H., Weissman, M. M., & Shinohara, R. T. (2018). Harmonization of cortical thickness measurements across scanners and sites. NeuroImage, 167, 104–120. https://doi.org/10.1016/j.neuroimage.2017.11.024

Fortin, J.-P., Parker, D., Tunç, B., Watanabe, T., Elliott, M. A., Ruparel, K., Roalf, D. R., Satterthwaite, T. D., Gur, R. C., Gur, R. E., Schultz, R. T., Verma, R., & Shinohara, R. T. (2017). Harmonization of multi-site diffusion tensor imaging data. NeuroImage, 161, 149–170. https://doi.org/10.1016/j.neuroimage.2017.08.047

Johnson, W. E., Li, C., & Rabinovic, A. (2007). Adjusting batch effects in microarray expression data using empirical Bayes methods. Biostatistics, 8(1), 118–127. https://doi.org/10.1093/biostatistics/kxj037

The original CovBat method is available at https://github.com/andy1764/CovBat_Harmonization. If implemented, please cite the original article:

Chen, A. A., Beer, J. C., Tustison, N. J., Cook, P. A., Shinohara, R. T., Shou, H., & Initiative, T. A. D. N. (2022). Mitigating site effects in covariance for machine learning in neuroimaging data. Human Brain Mapping, 43(4), 1179–1195. https://doi.org/10.1002/hbm.25688

For longitudinal ComBat, the original R package is available at https://github.com/jcbeer/longCombat with corresponding paper:

Beer, J. C., Tustison, N. J., Cook, P. A., Davatzikos, C., Sheline, Y. I., Shinohara, R. T., & Linn, K. A. (2020). Longitudinal ComBat: A method for harmonizing longitudinal multi-scanner imaging data. NeuroImage, 220, 117129. https://doi.org/10.1016/j.neuroimage.2020.117129

For ComBat-GAM, the Python implementation is available via https://github.com/rpomponio/neuroHarmonize with corresponding paper:

Pomponio, R., Erus, G., Habes, M., Doshi, J., Srinivasan, D., Mamourian, E., Bashyam, V., Nasrallah, I. M., Satterthwaite, T. D., Fan, Y., Launer, L. J., Masters, C. L., Maruff, P., Zhuo, C., Völzke, H., Johnson, S. C., Fripp, J., Koutsouleris, N., Wolf, D. H., … Shou, H., Davatzikos, C. (2020). Harmonization of large MRI datasets for the analysis of brain imaging patterns throughout the lifespan. NeuroImage, 208, 116450. https://doi.org/10.1016/j.neuroimage.2019.116450

For ComBatLS, please cite the following paper:

Gardner, M., Shinohara, R. T., Bethlehem, R. A., Romero‐Garcia, R., Warrier, V., Dorfschmidt, L., ... Alexander-Bloch, A. F. & Chen, A. A. (2025). ComBatLS: A Location‐and Scale‐Preserving Method for Multi‐Site Image Harmonization. Human Brain Mapping, 46(8), e70197. https://doi.org/10.1002/hbm.70197

For ComBat-Predict, please cite the following paper:

Xin, Y., Gardner, M., Tustison, N. J., Cook, P., Gee, J., Benitez, A., ... & Chen, A. A. (2026). ComBat‐Predict Enhances Generalizability of Neuroimaging Models to New Sites. Human Brain Mapping, 47(8), e70546.

About

ComBat Family of Harmonization Methods

Resources

Stars

35 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages