neurostatx.statistics.harmonization
Functions
| Name | Description |
|---|---|
neuroCombat | Remove 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
| Name | Type | Default | Description |
|---|---|---|---|
dat | DataFrame or np.array | required | Imaging features of shape (features, samples). |
covars | DataFrame | required | Covariates including the batch/scanner column. |
batch_col | str | required | Name of the batch (scanner) column in covars. |
categorical_cols | list | None | Categorical covariate names to preserve. Defaults to None. |
continuous_cols | list | None | Continuous covariate names to preserve. Defaults to None. |
eb | bool | True | If True, use Empirical Bayes. Defaults to True. |
parametric | bool | True | If True, use parametric adjustments. Defaults to True. |
mean_only | bool | False | If True, adjust means only (no scaling). Defaults to False. |
ref_batch | str | None | Batch used as the reference level. Defaults to None. |
Returns
resultdict- Mapping with
data(harmonized array),estimates, andinfo.
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)