first process a set of molecules (Section 2.4), assigning every atom a working atom type and reference atom type. The set of working atom types in the molecules become vertices in set X and the set of reference atom types in the molecules become vertices in set Y (Figure (a)). The graph is initialized by construction of an edge of zero weight between each node in X and each node in Y (Figure (b)). Then, for each atom in each molecule, we identify its working and reference atom types and increment the weight of the edge joining the corresponding set X and set Y vertices by one (Figure (c)). We then determine the set of X-Y edges that maximizes the number of atoms assigned the same working types that are also assigned the same types in the reference set. This corresponds to a maximal weight graph-matching problem. A matching set in a graph is a subset of edges that are non-adjacent; i.e., no two edges share a common vertex. Thus, determining the matching set ensures we never have the same working atom type connected by edges to two or more different reference types, and vice versa. For example, in Figure (c), we would select only one of the edges for the "#1" node. A maximal weight graph matching is one in which the sum of the weights of the retained edges is maximized. Thus, in Figure (c), we select only the edge of highest weight, here 224. More generally, a maximal weight graph match would include all possible working and reference types, such as the result for the three working types in Figure .