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
ofBuildingBlock
) – A group of molecules which are used to replace building blocks in molecules being mutated.is_replaceable (
callable
) – A function which takes aBuildingBlock
and returnsTrue
orFalse
. This function is applied to every building block in the molecule being mutated. Building blocks which returnedTrue
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.