Surge is based on the nauty package for computing automorphism groups of graphs as well as canonical labels. Like nauty, surge is written in a portable subset of C and runs on a considerable number of different systems. Surge is an integration of three existing tools from the nauty suite : a) geng generates simple graphs based on certain boundary conditions, b) vcolg colors vertices in the output of geng and c) multig inserts multi-edges in the output of the first two tools (Figure ). An isomorphism between two graphs is a bijection between their vertex sets that maps edges onto edges. If the graphs have adornments, such as atom types for the vertices or bond multiplicities for the edges, then those adornments must be preserved by the mapping. If the two graphs are the same; i.e., the isomorphism is from a graph to itself, it is called an automorphism. The automorphisms form a group under the operation of function composition, called the automorphism group. The meanings of isomorphism and automorphism are different for each of the three stages in our algorithm. Referring to Figure , at the first stage (which we call a simple graph) there are no vertex or edge adornments and all rotations and reflections, 10 in total, are automorphisms.