FractionalShift#

class chemotools.augmentation.FractionalShift(shift: float = 0.0, padding_mode: Literal['zeros', 'constant', 'extend', 'mirror', 'linear'] = 'linear', pad_value: float = 0.0, random_state: int | None = None)[source]

Bases: TransformerMixin, OneToOneFeatureMixin, BaseEstimator

Shift signals by a random fractional amount using cubic spline interpolation.

Parameters:
  • shift (float, default=0.0) – Maximum absolute shift applied to each signal. A random shift is drawn uniformly from [-shift, +shift].

  • padding_mode ({'zeros', 'constant', 'wrap', 'extend', 'mirror', 'linear'}, default='linear') – Padding strategy for extrapolated values.

  • pad_value (float, default=0.0) – Used when padding_mode=’constant’.

  • random_state (int, RandomState instance or None, default=None) – Controls randomness.

Variables:

n_features_in (int) – Number of features in the training data.

Examples

>>> from chemotools.augmentation import FractionalShift
>>> from chemotools.datasets import load_fermentation_train
>>> # Load sample data
>>> X, _ = load_fermentation_train()
>>> # Instantiate the transformer
>>> transformer = FractionalShift(shift=2.0, padding_mode="linear")
FractionalShift()
>>> transformer.fit(X)
>>> # Generate shifted data
>>> X_shifted = transformer.transform(X)
fit(X: ndarray, y=None) FractionalShift[source]

Fit the transformer to the input data. :param X: Training data. :type X: np.ndarray of shape (n_samples, n_features) :param y: Ignored. Present for API consistency. :type y: None

Returns:

self – Fitted transformer.

Return type:

FractionalShift

Raises:

ValueError – If X is not a 2D array or contains non-finite values.

transform(X: ndarray, y=None) ndarray[source]

Transform the input data by applying a random fractional shift to each signal. :param X: Input data to transform. :type X: np.ndarray of shape (n_samples, n_features) :param y: Ignored. Present for API consistency. :type y: None

Returns:

X_transformed – Transformed data with applied shifts.

Return type:

np.ndarray of shape (n_samples, n_features)

Raises:

ValueError – If X has different number of features than the training data, or if an invalid padding mode is specified.