The freud Python package is a powerful library for analyzing simulation data. Written with modern simulation and data analysis workflows in mind, freud provides a Python interface to fast, parallelized C++ routines that run efficiently on laptops, workstations, and supercomputing clusters. The package provides the core tools for finding particle neighbors in periodic systems, and offers a uniform API to a wide variety of methods implemented using these tools. As such, freud users can access standard methods such as the radial distribution function as well as newer, more specialized methods such as the potential of mean force and torque and local crystal environment analysis with equal ease. While many comparable tools place a heavy emphasis on reading and operating on trajectory file formats, freud instead accepts numerical arrays of data directly as inputs. By remaining agnostic to its data source, freud is suitable for analyzing any coarse-grained particle simulation, regardless of the original data representation or simulation method. When used for on-the-fly analysis in conjunction with scriptable simulation software such as HOOMD-blue [1, 2], freud enables smart simulations that adapt to the current state of the system, allowing users to study phenomena such as nucleation and growth.
PROGRAM SUMMARYProgram Title: freud Licensing provisions: BSD 3-Clause Programming language: Python, C++ Nature of problem: Simulations of coarse-grained, nano-scale, and colloidal particle systems typically require analyses specialized to a particular system. Certain more standardized techniques -including correlation functions, order parameters, and clustering -are computationally intensive tasks that must be carefully implemented to scale to the larger systems common in modern simulations. Solution method: freud performs a wide variety of particle system analyses, offering a Python API that interfaces with many other tools in computational molecular sciences via NumPy array inputs and outputs. The algorithms in freud leverage parallelized C++ to scale to large systems and enable real-time analysis. The library's broad set of features encode few assumptions compared to other analysis packages, enabling analysis of a broader class of data ranging from biomolecular simulations to colloidal experiments. Unusual features:1. freud provides very fast, parallel implementations of standard analysis methods like RDFs and correlation functions. 2. freud includes the reference implementation for the potential of mean force and torque (PMFT). 3. freud provides various novel methods for characterizing particle environments, including the calculation of descriptors useful for machine learning.
Additional comments:The source code is hosted on GitHub (https://github. com/glotzerlab/freud), and documentation is available online (https: //freud.readthedocs.io/). The package may be installed via pip install freud-analysis or conda install -c conda-forge freud. 13 for i, p in enumerate(points): 14 for j in nl.index_j[nl.index_i == i]: 15 for k in...