stk.NormalizerSequence

class stk.NormalizerSequence(fitness_normalizers)[source]

Bases: FitnessNormalizer[T]

Applies other normalizers in sequence.

Examples

Using Multiple Fitness Normalizers

You want to apply multiple fitness normalizations in sequence, for example, by first using DivideByMean, followed by Sum

import stk
import numpy as np

building_block = stk.BuildingBlock('BrCCBr', stk.BromoFactory())
record = stk.MoleculeRecord(
    topology_graph=stk.polymer.Linear(
        building_blocks=[building_block],
        repeating_unit='A',
        num_repeating_units=2,
    ),
)
fitness_values = {
    record: (1, 100, 1000),
}
# Create the normalizer.
normalizer = stk.NormalizerSequence(
    fitness_normalizers=[
        stk.DivideByMean(),
        stk.Sum(),
    ],
)
normalized_fitness_values = normalizer.normalize(fitness_values)
assert normalized_fitness_values[record] == 3
Parameters:

fitness_normalizers (list[FitnessNormalizer[T]]) – The FitnessNormalizer instances which should be used in sequence.

Methods

normalize

Normalize some fitness values.

normalize(fitness_values)[source]

Normalize some fitness values.

Parameters:

fitness_values (dict[T, Any]) – The molecules which need to have their fitness values normalized.

Returns:

The new fitness value for each molecule.

Return type:

dict[T, Any]