ChemPer must generate hierarchical SMIRKS for use with SMIRNOFF parameters. The SMIRNOFF format uses a "last one wins" strategy where the last SMIRKS pattern to match a set of atoms determines the parameter assigned. Imagine we have two nonbonded parameters for hydrogen atoms: n1 ("[#1:1]"), which matches any hydrogen atom, and n2 ("[#1:]-[#8]") for any hydrogen atom bonded to oxygen. Initially the SMIRKS for n1 would match all hydrogens, but then the hydrogens bound to oxygen would match and be assigned the n2 parameter. The central goal of ChemPer is to start with clusters of molecular fragments where each fragment in a cluster should be assigned the same force field parameter and end with a hierarchical list of SMIRKS patterns which maintain the provided clustering.