Normalizer Sequence
- class NormalizerSequence(fitness_normalizers)[source]
Bases:
FitnessNormalizer
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 bySum
import stk import numpy as np building_block = stk.BuildingBlock( smiles='BrCCBr', functional_groups=[stk.BromoFactory()], ) population = ( stk.MoleculeRecord( topology_graph=stk.polymer.Linear( building_blocks=(building_block, ), repeating_unit='A', num_repeating_units=2, ), ).with_fitness_value( fitness_value=(1, 100, 1000), normalized=False, ), ) # Create the normalizer. normalizer = stk.NormalizerSequence( fitness_normalizers=( stk.DivideByMean(), stk.Sum(), ), ) normalized_population = normalizer.normalize(population) normalized_record, = normalized_population assert normalized_record.get_fitness_value() == 3
Methods
normalize
(population)Normalize the fitness values in population.
- __init__(fitness_normalizers)[source]
Initialize a
NormalizerSequence
.- Parameters:
fitness_normalizers (
iterable
) – TheFitnessNormalizer
instances which should be used in sequence.
- normalize(population)[source]
Normalize the fitness values in population.
- Parameters:
population (
tuple
ofMoleculeRecord
) – The molecules which need to have their fitness values normalized.- Yields:
MoleculeRecord
– A record with a normalized fitness value.