diff --git a/pcntoolkit/dataio/norm_data.py b/pcntoolkit/dataio/norm_data.py index 994b5655..fbc07f14 100644 --- a/pcntoolkit/dataio/norm_data.py +++ b/pcntoolkit/dataio/norm_data.py @@ -11,7 +11,7 @@ from __future__ import annotations import copy -import json +from filelock import FileLock import os from collections import defaultdict from functools import reduce diff --git a/pcntoolkit/normative_model.py b/pcntoolkit/normative_model.py index 05f16559..1d87b26f 100644 --- a/pcntoolkit/normative_model.py +++ b/pcntoolkit/normative_model.py @@ -9,6 +9,7 @@ import importlib.metadata import json import os +import warnings from typing import List, Optional, Tuple, Union import numpy as np @@ -205,6 +206,14 @@ def transfer(self, transfer_data: NormData, save_dir: str | None = None, **kwarg new_model.response_vars = respvar_intersection new_model.preprocess(transfer_data) + +if hasattr(self, "batch_effects") and hasattr(transfer_data, "batch_effects"): + if len(transfer_data.batch_effects) < len(self.batch_effects): + warnings.warn( + "Transfer dataset contains fewer batch effects than the training dataset. " + "This may lead to biased transfer corrections.", + UserWarning, + ) new_model.register_batch_effects(transfer_data) Output.print(Messages.TRANSFERRING_MODELS, n_models=len(respvar_intersection))