Random Building Block

class RandomBuildingBlock(building_blocks, is_replaceable, name='RandomBuildingBlock', random_seed=None)[source]

Bases: MoleculeMutator

Substitutes random building blocks.

This mutator takes a ConstructedMolecule and substitutes the building blocks with one chosen at random from a given set.

Examples

Constructed Molecule Mutation

import stk

# Create a molecule which is to be mutated.
bb1 = stk.BuildingBlock('NCCN', [stk.PrimaryAminoFactory()])
bb2 = stk.BuildingBlock('O=CCC=O', [stk.AldehydeFactory()])
polymer = stk.MoleculeRecord(
    topology_graph=stk.polymer.Linear((bb1, bb2), 'AB', 3),
)

# Create molecules used to substitute building blocks.
building_blocks = (
    stk.BuildingBlock(
        smiles='NC[Si]CCN',
        functional_groups=[stk.PrimaryAminoFactory()],
    ),
    stk.BuildingBlock(
        smiles='NCCCCCCCN',
        functional_groups=[stk.PrimaryAminoFactory()],
    ),
    stk.BuildingBlock(
        smiles='NC1CCCCC1N',
        functional_groups=[stk.PrimaryAminoFactory()],
    ),
)

# Create the mutator.

def has_primary_amino_group(building_block):
    fg, = building_block.get_functional_groups(0)
    return type(fg) is stk.PrimaryAmino

random_bb = stk.RandomBuildingBlock(
    building_blocks=building_blocks,
    is_replaceable=has_primary_amino_group,
)

# Mutate a molecule.
mutation_record1 = random_bb.mutate(polymer)

# Mutate the molecule a second time.
mutation_record2 = random_bb.mutate(polymer)

Methods

mutate(record)

Return a mutant of record.

__init__(building_blocks, is_replaceable, name='RandomBuildingBlock', random_seed=None)[source]

Initialize a RandomBuildingBlock instance.

Parameters:
  • building_blocks (tuple of BuildingBlock) – A group of molecules which are used to replace building blocks in molecules being mutated.

  • is_replaceable (callable) – A function which takes a BuildingBlock and returns True or False. This function is applied to every building block in the molecule being mutated. Building blocks which returned True are liable for substitution by one of the molecules in building_blocks.

  • name (str, optional) – A name to help identify the mutator instance.

  • random_seed (int, optional) – The random seed to use.

mutate(record)[source]

Return a mutant of record.

Parameters:

record (MoleculeRecord) – The molecule to be mutated.

Returns:

  • MutationRecord – A record of the mutation.

  • None (NoneType) – If record cannot be mutated.