nirs4all.analysis.transfer_utils module

Transfer Selection Utilities.

This module provides utility functions for preprocessing application, pipeline generation, and dataset handling in transfer learning scenarios.

Supports both object-based and string-based preprocessing definitions: - Object-based (recommended): Pass transformer instances directly - String-based (legacy): Use string names that resolve to base preprocessings

nirs4all.analysis.transfer_utils.apply_single_preprocessing(X: ndarray, pp_name: str, preprocessings: dict[str, Any] | None = None) → ndarray[source]

Apply a single preprocessing by name.

Parameters:
  • X – Input data matrix (n_samples, n_features).

  • pp_name – Name of the preprocessing (e.g., “snv”, “d1”).

  • preprocessings – Optional dictionary of transforms. Uses base if None.

Returns:

Transformed data matrix.

nirs4all.analysis.transfer_utils.generate_object_augmentation_combinations(transforms: list[Any], max_order: int = 2) → list[tuple[str, list[Any]]][source]

Generate augmentation combinations from transformer objects.

Object-based alternative to generate_augmentation_combinations.

Parameters:
  • transforms – List of transformer objects or stacked lists.

  • max_order – Maximum number of transforms to combine.

Returns:

List of (display_name, transforms_list) tuples.

nirs4all.analysis.transfer_utils.generate_object_stacked_pipelines(transforms: list[Any], max_depth: int = 2) → list[tuple[str, list[Any]]][source]

Generate stacked pipeline combinations from transformer objects.

Object-based alternative to generate_stacked_pipelines.

Parameters:
  • transforms – List of transformer objects.

  • max_depth – Maximum pipeline depth.

Returns:

List of (display_name, transforms_list) tuples.

Example

>>> transforms = [StandardNormalVariate(), FirstDerivative()]
>>> pipelines = generate_object_stacked_pipelines(transforms, max_depth=2)
>>> # Returns: [("StandardNormalVariate", [SNV()]),
>>> #           ("FirstDerivative", [D1()]),
>>> #           ("StandardNormalVariate>FirstDerivative", [SNV(), D1()]),
>>> #           ...]
nirs4all.analysis.transfer_utils.generate_stacked_pipelines(preprocessings: dict[str, Any], max_depth: int = 2, exclude: list[str] | None = None) → list[tuple[str, list[str], list[Any]]][source]

Generate stacked pipeline combinations.

Parameters:
  • preprocessings – Dictionary of available transforms.

  • max_depth – Maximum pipeline depth (1 to max_depth).

  • exclude – List of preprocessing names to exclude.

Returns:

List of (name, component_names, transforms) tuples.

Example

>>> pp = {"snv": snv_transform, "d1": d1_transform}
>>> pipelines = generate_stacked_pipelines(pp, max_depth=2)
>>> # Returns: [("snv", ["snv"], [snv]), ("d1", ["d1"], [d1]),
>>> #           ("snv>d1", ["snv", "d1"], [snv, d1]),
>>> #           ("d1>snv", ["d1", "snv"], [d1, snv])]
nirs4all.analysis.transfer_utils.normalize_preprocessing_list(items: list[Any | str | None], registry: dict[str, Any] | None = None) → list[Any][source]

Normalize a list of preprocessing items to transformer objects.

Parameters:
  • items – List of transformer instances or string names.

  • registry – Optional name->object mapping.

Returns:

List of transformer instances (None values filtered out).