Skip to content

neurostatx.statistics.harmonization

Functions

NameDescription
neuroCombatRemove scanner/site effects from multi-site imaging data with ComBat.

neuroCombatfunction#

def neuroCombat(dat, covars, batch_col, categorical_cols=None, continuous_cols=None, eb=True, parametric=True, mean_only=False, ref_batch=None)

Remove scanner/site effects from multi-site imaging data with ComBat.

Parameters

NameTypeDefaultDescription
datDataFrame or np.arrayrequiredImaging features of shape (features, samples).
covarsDataFramerequiredCovariates including the batch/scanner column.
batch_colstrrequiredName of the batch (scanner) column in covars.
categorical_colslistNoneCategorical covariate names to preserve. Defaults to None.
continuous_colslistNoneContinuous covariate names to preserve. Defaults to None.
ebboolTrueIf True, use Empirical Bayes. Defaults to True.
parametricboolTrueIf True, use parametric adjustments. Defaults to True.
mean_onlyboolFalseIf True, adjust means only (no scaling). Defaults to False.
ref_batchstrNoneBatch used as the reference level. Defaults to None.

Returns

resultdict
Mapping with data (harmonized array), estimates, and info.

Examples

>>> import pandas as pd
>>> import numpy as np
>>> from neurostatx.statistics.harmonization import neuroCombat
>>> dat = np.random.RandomState(0).rand(4, 6)
>>> covars = pd.DataFrame({"scanner": [1, 1, 1, 2, 2, 2],
... "age": [20, 30, 40, 25, 35, 45]})
>>> out = neuroCombat(dat, covars, batch_col="scanner",
... continuous_cols=["age"])
>>> out["data"].shape
(4, 6)