torchsig.transforms.dataset_transforms.NonlinearAmplifierDatasetTransform

class torchsig.transforms.dataset_transforms.NonlinearAmplifierDatasetTransform(gain_range: Tuple[float, float] = (1.0, 4.0), psat_backoff_range: Tuple[float, float] = (5.0, 20.0), phi_range: Tuple[float, float] = (0.0, 0.0), auto_scale: bool = True, **kwargs)[source]

Bases: DatasetTransform

Applies a memoryless nonlinear amplifier model to DatasetSignal.

gain_range

Small-signal gain range (linear). Defaults to (1.0, 4.0).

Type:

Tuple[float, float]

gain_distribution

Random draw from gain distribution.

Type:

Callable[[], float]

psat_backoff_range

Psat backoff factor (linear) reflecting saturated power level (Psat) relative to input signal mean power. Defaults to (5.0, 20.0).

Type:

Tuple[float, float]

past_backoff_distribution

Random draw from psat_backoff distribution.

Type:

Callable[[], float]

phi_range

Maximum signal relative phase shift at saturation power level (radians). Defaults to (0.0, 0.0).

Type:

Tuple[float, float]

phi_distribution

Random draw from phi distribution.

Type:

Callable[[], float]

auto_scale

Automatically rescale output power to match full-scale peak input power prior to transform, based on peak estimates. Default True.

Type:

bool

Methods

add_parent

Add parent Seedable object and set up RNGs accordingly

get_distribution

get_second_seed

Gets second seed, usually used to seed both torch and numpy generators with slightly different seeds

seed

Seed number generators with given seed.

setup_rngs

Initialize torch and numpy number generators, and update its children.

update

Updates bookkeeping to transforms in DatasetSignal's SignalMetadata and checks signal valididty.

update_from_parent

Update numpy and torch number generators with parent seed

__init__(gain_range: Tuple[float, float] = (1.0, 4.0), psat_backoff_range: Tuple[float, float] = (5.0, 20.0), phi_range: Tuple[float, float] = (0.0, 0.0), auto_scale: bool = True, **kwargs)[source]

Transform initialization as Seedable.

__call__(signal: DatasetSignal) DatasetSignal[source]

Performs transforms.

Parameters:

signal (DatasetSignal) – DatasetSignal to be transformed.

Raises:

NotImplementedError – Inherited classes must override this method.

Returns:

Transformed DatasetSignal.

Return type:

DatasetSignal

__repr__() str

Transform string representation. Should be able to recreate class from this string.

Returns:

Transform representation.

Return type:

str

__str__() str

Return str(self).

add_parent(parent) None

Add parent Seedable object and set up RNGs accordingly

get_second_seed(seed: int) int

Gets second seed, usually used to seed both torch and numpy generators with slightly different seeds

Parameters:

seed (int) – Seed to use.

Returns:

New seed.

Return type:

int

seed(seed: int) None

Seed number generators with given seed.

Parameters:

seed (int) – Seed to use.

setup_rngs() None

Initialize torch and numpy number generators, and update its children.

update(signal: DatasetSignal) None

Updates bookkeeping to transforms in DatasetSignal’s SignalMetadata and checks signal valididty. Inherited classes should always call self.update() after performing transform operation (inside __call__).

Parameters:

signal (DatasetSignal) – transformed DatasetSignal.

update_from_parent() None

Update numpy and torch number generators with parent seed