This ensures that comparable properties for the same molecule always refer to the same structure. We further note that, for atomic properties (e.g. atomic partial charges, atomic partial spins) or properties with atomic components (e.g. normal modes of vibration), we consistently use the same atomic indices as the pymatgen Molecule object for the "best" structure. For each atom, we store the number of core, valence, and Rydberg electrons, as well as the total number of electrons assigned to that atom. Lone pair information includes the orbital character of the lone pair (fraction of the lone pair made up of s, p, d, and f natural atomic orbitals), as well as its total occupancy. Similarly, for bonds we include the orbital character of each atom's contribution and the total occupancy, as well as information regarding the bond polarization. We also store information regarding orbital interactions, including the perturbation energy, the energy difference between the donor and acceptor orbitals, and the Fock matrix element for the interaction. For each type of hybrid orbital (e.g. long pair or bond) or orbital interaction, we retain information regarding the atoms involved in the hybrid orbital(s) as well as the orbital type(s), using the codes from NBO outputs. For instance, lone pair orbitals are labeled "LP", while antibonding orbitals are labeled as "BD*".