"""Configurable, per-sample transforms: normalization and augmentation.
This subpackage groups the transform pipeline used after unification:
* :mod:`~omniloader.transforms.base` — :class:`Transform`, :class:`Compose` and
shared helpers;
* :mod:`~omniloader.transforms.normalize` — :class:`Normalize`,
:class:`MinMaxNormalize`, :class:`RobustNormalize`, :class:`InstanceNormalize`;
* :mod:`~omniloader.transforms.augment` — :class:`GaussianNoise`,
:class:`FeatureDropout`, :class:`SpanMasking`, :class:`TimeWarp`,
:class:`FeatureMasking`;
* :mod:`~omniloader.transforms.crop` — :class:`RandomCrop`, :class:`CenterCrop`;
* :mod:`~omniloader.transforms.mix` — :class:`MixupCollator` (collate-time);
* :mod:`~omniloader.transforms.stats` — statistics helpers for normalization.
Compose transforms with :class:`Compose`, or build one from a list of config dicts
with :func:`build_transform`.
"""
from __future__ import annotations
from typing import TYPE_CHECKING, Any
from omniloader.transforms.augment import (
FeatureDropout,
FeatureMasking,
GaussianNoise,
SpanMasking,
TimeWarp,
)
from omniloader.transforms.base import Compose, Transform
from omniloader.transforms.crop import CenterCrop, RandomCrop
from omniloader.transforms.mix import MixupCollator
from omniloader.transforms.normalize import (
InstanceNormalize,
MinMaxNormalize,
Normalize,
PerDatasetNormalize,
RobustNormalize,
)
from omniloader.transforms.stats import (
compute_dataset_stats,
compute_feature_stats,
compute_stats,
load_stats,
save_stats,
)
if TYPE_CHECKING:
from collections.abc import Mapping, Sequence
from omniloader.schema.spec import UnifiedSchema
#: Registry mapping transform names (as used in config) to their classes.
TRANSFORMS: dict[str, type[Transform]] = {
"normalize": Normalize,
"min_max_normalize": MinMaxNormalize,
"robust_normalize": RobustNormalize,
"instance_normalize": InstanceNormalize,
"per_dataset_normalize": PerDatasetNormalize,
"gaussian_noise": GaussianNoise,
"feature_dropout": FeatureDropout,
"span_masking": SpanMasking,
"feature_masking": FeatureMasking,
"time_warp": TimeWarp,
"random_crop": RandomCrop,
"center_crop": CenterCrop,
}
#: Transforms taking precomputed ``stats`` (not a schema) in their config.
_STATS_TRANSFORMS = frozenset(
{"normalize", "min_max_normalize", "robust_normalize", "per_dataset_normalize"}
)
__all__ = [
"TRANSFORMS",
"CenterCrop",
"Compose",
"FeatureDropout",
"FeatureMasking",
"GaussianNoise",
"InstanceNormalize",
"MinMaxNormalize",
"MixupCollator",
"Normalize",
"PerDatasetNormalize",
"RandomCrop",
"RobustNormalize",
"SpanMasking",
"TimeWarp",
"Transform",
"build_transform",
"compute_dataset_stats",
"compute_feature_stats",
"compute_stats",
"load_stats",
"save_stats",
]