aizynthfinder.search.mcts package

Submodules

aizynthfinder.search.mcts.node module

Module containing a class that represents a node in the search tree.

class aizynthfinder.search.mcts.node.MctsNode(state, owner, config, parent=None)

Bases: object

A node in the search tree.

The children are instantiated lazily for efficiency: only when a child is selected the reaction to create that child is applied.

Properties of an instantiated children to a node can be access with:

children_attr = node[child]

the return value is a dictionary with keys “action”, “value”, “prior” and “visitations”.

Variables
  • is_expanded – if the node has had children added to it

  • is_expandable – if the node is expandable

  • tree – the tree owning this node

Parameters
  • state (MctsState) – the state of the node

  • owner (MctsSearchTree) – the tree that owns this node

  • config (Configuration) – settings of the tree search algorithm

  • parent (Optional[MctsNode]) – the parent node, defaults to None

classmethod create_root(smiles, tree, config)

Create a root node for a tree using a SMILES.

Parameters
  • smiles (str) – the SMILES representation of the root state

  • tree (MctsSearchTree) – the search tree

  • config (Configuration) – settings of the tree search algorithm

Returns

the created node

Return type

MctsNode

classmethod from_dict(dict_, tree, config, molecules, parent=None)

Create a new node from a dictionary, i.e. deserialization

Parameters
  • dict – the serialized node

  • tree (MctsSearchTree) – the search tree

  • config (Configuration) – settings of the tree search algorithm

  • molecules (MoleculeDeserializer) – the deserialized molecules

  • parent (Optional['MctsNode']) – the parent node

  • dict_ (StrDict) –

Returns

a deserialized node

Return type

MctsNode

property children: List['MctsNode']

Returns all of the instantiated children

Returns

the children

property is_solved: bool

Return if the state is solved

property parent: Optional['MctsNode']

Return the parent of the node

property state: aizynthfinder.search.mcts.state.MctsState

Return the underlying state of the node

actions_to()

Returns the actions leading to this node

Returns

the list of actions

Return type

List[RetroReaction]

backpropagate(child, value_estimate)

Update the number of visitations of a particular child and its value.

Parameters
Return type

None

children_view()

Creates a view of the children attributes. Each of the list returned is a new list, although the actual children are not copied.

The return dictionary will have keys “actions”, “values”, “priors”, “visitations” and “objects”.

Returns

the view

Return type

StrDict

expand()

Expand the node.

Expansion is the process of creating the children of the node, without instantiating a child object. The actions and priors are taken from the policy network.

If immediate instantiation is marked for some policies, however, the children nodes will be instantiated.

Return type

None

is_terminal()

Node is terminal if its unexpandable, or the internal state is terminal (solved)

Returns

the terminal attribute of the node

Return type

bool

path_to()

Return the path to this node, which is a list of actions and a list of node

Returns

the actions and nodes

Return type

Tuple[List[RetroReaction], List[MctsNode]]

promising_child()

Return the child with the currently highest Q+U

The selected child will be instantiated if it has not been already.

If no actions could be found that were applicable, the method will return None.

Returns

the child

Return type

Optional[‘MctsNode’]

serialize(molecule_store)

Serialize the node object to a dictionary

Parameters

molecule_store (MoleculeSerializer) – the serialized molecules

Returns

the serialized node

Return type

StrDict

to_reaction_tree()

Return reaction tree from the path of actions and nodes leading to this node

Returns

the constructed tree

Return type

ReactionTree

aizynthfinder.search.mcts.search module

Module containing a class that holds the tree search

class aizynthfinder.search.mcts.search.MctsSearchTree(config, root_smiles=None)

Bases: object

Encapsulation of the search tree.

Variables
  • root – the root node

  • config – the configuration of the search tree

Parameters
  • config (Configuration) – settings of the tree search algorithm

  • root_smiles (Optional[str]) – the root will be set to a node representing this molecule, defaults to None

Return type

None

classmethod from_json(filename, config)

Create a new search tree by deserialization from a JSON file

Parameters
  • filename (str) – the path to the JSON node

  • config (Configuration) – the configuration of the search

Returns

a deserialized tree

Return type

MctsSearchTree

backpropagate(from_node, value_estimate)

Backpropagate the value estimate and update all nodes from a given node all the way to the root.

Parameters
Return type

None

graph(recreate=False)

Construct a directed graph object with the nodes as vertices and the actions as edges attribute “action”.

Parameters

recreate (bool) – if True will construct the graph even though it is cached, defaults to False

Returns

the graph object

Raises

ValueError – if the tree is not defined

Return type

networkx.classes.digraph.DiGraph

nodes()

Return all the nodes in the search tree

Return type

List[MctsNode]

one_iteration()
Perform one iteration of
  1. Selection

  2. Expansion

  3. Rollout

  4. Backpropagation

Returns

if a solution was found

Return type

bool

select_leaf()

Traverse the tree selecting the most promising child at each step until leaf node returned.

Returns

the leaf node

Raises

ValueError – if the tree is not defined

Return type

aizynthfinder.search.mcts.node.MctsNode

serialize(filename)

Serialize the search tree to a JSON file

Parameters

filename (str) – the path to the JSON file

Raises

ValueError – if the tree is not defined

Return type

None

aizynthfinder.search.mcts.state module

Module contain a class that encapsulate the state of search tree node.

class aizynthfinder.search.mcts.state.MctsState(mols, config)

Bases: object

Encapsulation of the molecular state of a node.

A state consists of an immutable list of molecules that are either solved (can be found in stock) or that potentially can be expanded to new molecules by applying a reaction on them.

The class is hashable and comparable by the inchi keys of all the molecules.

Variables
  • mols – the list of molecules

  • expandable_mols – the list of molecules not in stock

  • stock – the configured stock

  • in_stock_list – for each molecule if they are in stock

  • is_solved – is true if all molecules are in stock:

  • max_transforms – the maximum of the transforms of the molecule

  • is_terminal – is true if the all molecules are in stock or if the maximum transforms has been reached

  • expandables_hash – an hash string computed on the expandable molecules

Parameters
  • mols (Sequence[TreeMolecule]) – the molecules of the state

  • config (Configuration) – settings of the tree search algorithm

Return type

None

classmethod from_dict(dict_, config, molecules)

Create a new state from a dictionary, i.e. deserialization

Parameters
  • dict (dict) – the serialized state

  • config (Configuration) – settings of the tree search algorithm

  • molecules (MoleculeDeserializer) – the deserialized molecules

  • dict_ (StrDict) –

Returns

a deserialized state

Return type

State

property stock_availability: List[str]

Returns a list of availabilities for all molecules

Returns

the list

Return type

list of str

serialize(molecule_store)

Serialize the state object to a dictionary

Parameters

molecule_store (MolecularSerializer) – the serialized molecules

Returns

the serialized state

Return type

dict

to_image(ncolumns=6)

Constructs an image representation of the state

Parameters

ncolumns (int, optional) – number of molecules per row, defaults to 6

Returns

the image representation

Return type

a PIL image

aizynthfinder.search.mcts.utils module

Module containing utility routines for MCTS. This is not part of public interface

class aizynthfinder.search.mcts.utils.ReactionTreeFromSuperNode(*args, **kwargs)

Bases: aizynthfinder.reactiontree.ReactionTreeLoader

Creates a reaction tree object from MCTS-like nodes and reaction objects

Parameters
  • args (Any) –

  • kwargs (Any) –

Return type

None

aizynthfinder.search.mcts.utils.route_to_node(from_node)

Return the route to a give node to the root.

Will return both the actions taken to go between the nodes, and the nodes in the route themselves.

Parameters

from_node (MctsNode) – the end of the route

Returns

the route

Return type

Tuple[List[RetroReaction], List[MctsNode]]

Module contents

Sub-package containing MCTS routines