Repository navigation
Analyzing SIDTs
One major advantage of SIDTs is that the learned prediction algorithm is entirely human readable. To take advantage of this it is valuable to understand the RMG adjacency list representations.
Suppose we want to look at an individual node, we extract a node associated with a specific name node = sidt.nodes["Root_Sp-2X=1R_1O->N"]. There are two primary ways to look at the group the first is by simply displaying the Group object from node.group which will provide an automatically generated drawing:

However, this representation doesn't include all attribute information on all atoms which we can get by from the adjacency list that we can extract by running adjlist = node.group.to_adjacency_list() which in this case will give:
1 *1 N u0 {2,D}
2 *2 X u0 p0 c0 {1,D}
3 *3 X u0 p0 c0
If the tree was generated (as opposed to loaded from file) one can also inspect the training structures associated with the node which are contained in node.items.
To look directly at the tree we provide the plot_tree(sidt,images=True,depth=np.inf) function. The images keyword sets whether each node will be labeled with its group structure drawing or its name and depth sets how deep into the tree to draw nodes. For the multi-evaluation enthalpy of formation example this looks like:

while for the reduced tree from the QOOH stability classification example looks like:
