torchsig.transforms.dataset_transforms.AGC

class torchsig.transforms.dataset_transforms.AGC(rand_scale=(1.0, 10.0), initial_gain_db: float = 0.0, alpha_smooth: float = 4e-05, alpha_track: float = 0.0004, alpha_overflow: float = 0.3, alpha_acquire: float = 0.04, ref_level_db: float = 0.0, track_range_db: float = 1.0, low_level_db: float = -80.0, high_level_db: float = 6.0, **kwargs)[source]

Bases: DatasetTransform

Automatic Gain Control performing sample-by-sample AGC algorithm.

rand_scale

setting the random scaling bounds for each sample update.

Type:

Tuple

rand_scale_distribution

Random draw from rand_scale distribution.

Type:

Callable[[], float]

initial_gain_db

Inital gain value in dB.

Type:

float

alpha_smooth

Alpha for avergaing the measure signal level level_n = level_n * alpha + level_n-1(1-alpha)

Type:

float

alpha_track

Amount to adjust gain when in tracking state.

Type:

float

alpha_overflow

Amount to adjust gain when in overflow state [level_db + gain_db] >= max_level.

Type:

float

alpha_acquire

Amount to adjust gain when in acquire state.

Type:

float

ref_level_db

Reference level goal for algorithm to achieve, in dB units.

Type:

float

track_range_db

dB range for operating in tracking state.

Type:

float

low_level_db

minimum magnitude value (dB) to perform any gain control adjustment.

Type:

float

high_level_db

magnitude value (dB) to enter overflow state.

Type:

float

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__(rand_scale=(1.0, 10.0), initial_gain_db: float = 0.0, alpha_smooth: float = 4e-05, alpha_track: float = 0.0004, alpha_overflow: float = 0.3, alpha_acquire: float = 0.04, ref_level_db: float = 0.0, track_range_db: float = 1.0, low_level_db: float = -80.0, high_level_db: float = 6.0, **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