  Particle tracking is commonly used to study time-dependent behavior in many
different types of physical and chemical systems involving constituents that
span many length scales, including atoms, molecules, nanoparticles, granular
particles, and even larger objects. Behaviors of interest studied using
particle tracking information include thermodynamic phase transitions,
structural transitions, protein folding, and crystallization. A common
challenge in studies of these systems involves change detection. Change point
detection discerns when a temporal signal undergoes a change in distribution.
These changes can be local or global, instantaneous or prolonged, obvious or
subtle. Moreover, system-wide changes marking an interesting physical or
chemical phenomenon (e.g. crystallization of a liquid) are often preceded by
events (e.g. pre-nucleation clusters) that are localized and can occur anywhere
at anytime in the system. For these reasons, detecting events in particle
trajectories generated by molecular simulation is challenging and typically
accomplished via ad hoc solutions unique to the behavior and system under
study. Consequently, methods for event detection lack generality, and those
used in one field are not easily used by scientists in other fields. Here we
present a new Python-based tool, dupin, that allows for universal event
detection from particle trajectory data irrespective of the system details.
dupin works by creating a signal representing the simulation and partitioning
the signal based on events (changes within the trajectory). This approach
allows for studies where manual annotating of event boundaries would require a
prohibitive amount of time. Furthermore, dupin can serve as a tool in automated
and reproducible workflows. We demonstrate the application of dupin using two
examples and discuss its applicability to a wider class of problems.
