  A key component to enhancing reproducibility in the molecular simulation
community is reducing ambiguity in the parameterization of molecular models.
Ambiguity in molecular models often stems from the dissemination of molecular
force fields in a format that is not directly usable or is ambiguously
documented via a non-machine readable mechanism. Specifically, the lack of a
general tool for performing automated atom-typing under the rules of a
particular force field facilitates errors in model parameterization that may go
unnoticed if other researchers are unable reproduce this process. Here, we
present Foyer, a Python tool that enables users to define force field
atom-typing rules in a format that is both machine- and human-readable thus
eliminating ambiguity in atom-typing and additionally providing a framework for
force field dissemination. Foyer defines force fields in an XML format, where
SMARTS strings are used to define the chemical context of a particular atom
type. Herein we describe the underlying methodology of the Foyer package,
highlighting its advantages over typical atom-typing approaches and demonstrate
is application in several use-cases.
