# Change Log The format is based on [Keep a Changelog] and this project adheres to [Semantic Versioning]. [Keep a ChangeLog]: https://keepachangelog.com/en/1.0.0/ [Semantic Versioning]: https://semver.org/spec/v2.0.0.html ## 3.6.1 -- 2026-09-22 ### Fixed * Fix `mode must be 'bod' when orientations are not provided` error when the mode *is* `bod` (#2339). ## 3.6.0 -- 2026-09-18 ### Added * Support 2D simulation boxes in `StaticStructureFactorDirect`. * Add `oblique`, `rectangular`, and `graphene` lattices to `freud.data.UnitCell`. * Support for RAD filtering in systems with particles of different sizes. ### Fixed * Access k points in `StaticStructureFactorDirect`. * Unit tests pass with scipy 1.17 installed (#1413). * ManagedArray accessors no longer allocate unnecessarily (#1465) * `voronoi_plot` works with matplotlib 3.11, which removed `matplotlib.cm.get_cmap` (#1455). * Input validation for orientations in `BondOrder.compute()` (#1444). ### Changed * MSD with `mode=="direct"` is now slightly faster (#1414). * Nematic order parameter is now ~40x faster. (#1428) * Steinhardt-type order parameters are now slightly faster (#1465) * `Histogram::operator()` no longer allocates per call (#1465) * `Histogram::operator()` no longer supports weight arguments: prefer `increment` when accumulating non-unit values (#1465) * Removed garnett from documentation. (#1443) * Changed default equivalent orientations to include (-1,0,0,0) for `AngularSeparationNeighbor`, `AngularSeparationGlobal`, and `LocalBondProjection`(#1447) ## 3.5.0 -- 2025-10-08 ### Changed * Build with `abi3` for Python >=3.12. ### Removed * Support for Python <3.12. ## 3.4.0 -- 2025-08-05 ### Added * Windows wheels on PyPI. * SLD for computation of the Diffraction Pattern. ### Fixed * Type hinting in `UnitCell` no longer infers incorrect type. * Fixed `MSD` compute to correctly preprocess the data for msd calculation. ## 3.3.1 -- 2025-04-28 ### Fixed * PyPI upload. ## 3.3.0 -- 2025-04-28 ### Fixed * `PMFTXY.plot` executes without errors. * Allow input arguments to be passed read-only NumPy arrays. ### Added * `to_box_params` method for `freud.Box` * `cmap` argument to `PMFTXY.plot`. * Provide Linux aarch64 binaries. ## 3.2.0 -- 2025-02-10 ### Added * Support Python 3.13. ### Changed * Switch from Cython to nanobind. * Switch from scikit-build to scikit-build-core. * Lint C++ code with the clang-tidy 18. * Lint and format Python code with ruff. ## v3.1.0 -- 2024-06-17 ### Added * New continuous coordination number compute `freud.order.ContinuousCoordination`. * New methods for conversion of box lengths and angles to/from `freud.box.Box`. * Add copy button to documentation code snippets. * Support Numpy 2.0. ### Fixed * Default value for `terminate_after_blocked` in `FilterRAD`. ### Removed * `freud.order.Translational`. * Support for Python 3.8. ## v3.0.0 -- 2024-02-22 ### Added * Coloring plots by polytope area in `freud.locality.Voronoi`. * Neighbor vectors to `freud.locality.NeighborList`s. ### Changed * The `normalize` argument to `freud.density.RDF` is now `normalization_mode`. * The ``neighbors`` argument to ``env_neighbors`` for ``EnvironmentMotifMatch`` class. * The ``neighbors`` argument to ``cluster_neighbors`` for ``EnvironmentCluster`` class. * `freud.order.Nematic` uses orientation vectors instead of quaternions and a nematic director. * `freud.order.Nematic` raises a warning when the zero is vector passed. * Remove zero-padding from arrays in `freud.environment.EnvironmentCluster` and `freud.environment.EnvironmentMotifMatch` and replace with ragged lists of NumPy arrays. * Provide support via GitHub discussions. ### Removed * The `global_search` flag in `freud.environment.EnvironmentCluster`. ## v2.13.2 -- 2023-11-27 ### Added * Support for python 3.12 ### Removed * Support for python 3.7 ## v2.13.1 -- 2023-09-14 ### Added * The `gsd.hoomd.Frame` class is supported as a system-like input. ### Changed * Require building with cython>=3.0.2 ## v2.13.0 -- 2023-05-09 ### Added * Filter neighborlists with `freud.locality.FilterSANN` and `freud.locality.FilterRAD`. ### Fixed * Neighborlists generated by certain compute objects now exist after the compute object is garbage collected. * All source files have the freud license header at the top. * The `compute()` method of each compute object returns self. ### Changed * Documentation renders with the furo theme. ### Removed * Support for Python 3.6 ## v2.12.1 -- 2022-12-05 ### Added * Support for Python 3.11. ### Fixed * n(r) property in `freud.density.RDF` is now properly normalized by the number of query points. ## v2.12.0 -- 2022-11-09 ### Added * Mass dependence in `freud.cluster.ClusterProperties`. * Inertia tensor calculation in `freud.cluster.ClusterProperties`. ### Fixed * Compatibility with new namespace for `MDAnalysis.coordinates.timestep.Timestep`. ## v2.11.0 -- 2022-08-09 ### Added * Support for 2D systems in `freud.diffraction.StaticStructureFactorDebye`. * Compilation uses the C++17 standard. ### Fixed * `EnvironmentMotifMatch` correctly handles `NeighborList`s with more neighbors per particle than the motif. ## v2.10.0 -- 2022-05-18 ### Added * `include_input_points` argument to `freud.locality.PeriodicBuffer`. * `macos-arm64` binary builds on conda-forge and PyPI. ### Changed * `freud.data.UnitCell.generate_system` now generates positions in the same order as the basis positions. ## v2.9.0 -- 2022-04-19 ### Added * (breaking) Some `freud.diffraction.StaticStructureFactorDebye` property names changed to be more descriptive. * `freud.diffraction.DiffractionPattern` now raises an exception when used with non-cubic boxes. ### Fixed * `freud.diffraction.StaticStructureFactorDebye` implementation now gives `S_k[0] = N`. * Cython is no longer listed as an install requirement in `setup.py`. ### Removed * Custom CMake build type `ReleaseWithDocs`. ## v2.8.0 -- 2022-01-25 ### Added * `freud.diffraction.StaticStructureFactorDirect` class (unstable) can be used to compute the static structure factor S(k) by sampling reciprocal space vectors. * Python 3.10 is supported. * Documentation examples are tested with pytest. * Use clang-format as pre-commit hook. * Add related tools section to the documentation. ### Fixed * `freud.diffraction.DiffractionPattern` normalization changed such that `S(k=0) = N`. * Added error checking for `r_min`, `r_max` arguments in `freud.density.RDF`, `freud.locality.NeighborList`, `freud.locality.NeighborQuery`, and `freud.density.LocalDensity` classes. * CMake build system only uses references to TBB target. ### Changed * Re-organized tests for the static structure factor classes. * Move `util::Histogram::Axes` to `util::Axes`. * Use new `flake8` plugin `flake8-force` for linting Cython code. ## v2.7.0 -- 2021-10-01 ### Added * `freud.diffraction.StaticStructureFactorDebye` class (unstable) can be used to compute the static structure factor S(k) using the Debye formula. ### Fixed * Updated lambda functions to capture `this` by reference, to ensure compatibility with C++20 and above. * Fixed ``Box.contains`` to run in linear time, ``O(num_points)``. * Fixed compilation to pass compiler optimization flags when build type is ReleaseWithDocs (major perf regression since 2.4.1). ## v2.6.2 -- 2021-06-26 ### Fixed * Upgrade to auditwheel 4.0.0 in cibuildwheel to ensure RPATH is patched properly for `libfreud.so` in Linux wheels. ## v2.6.1 -- 2021-06-23 ### Fixed * Added missing git submodules to source distribution. ## v2.6.0 - 2021-06-22 ### Added * Added `out` option for the `wrap`, `unwrap`, `make_absolute`, and `make_fractional` methods of `Box`. * The `Steinhardt` and `SolidLiquid` classes expose the raw `qlmi` arrays. * The `Steinhardt` class supports computing order parameters for multiple `l`. ### Changed * Improvements to plotting for the `DiffractionPattern`. * Wheels are now built with cibuildwheel. ### Fixed * Fixed/Improved the `k` values and vectors in the `DiffractionPattern` (more improvement needed). * Fixed incorrect computation of `Steinhardt` averaged quantities. Affects all previous versions of freud 2. * Fixed documented formulas for `Steinhardt` class. * Fixed broken arXiv links in bibliography. ## v2.5.1 - 2021-04-06 ### Added * The `compute` method of `DiffractionPattern` class has a `reset` argument. ### Fixed * Documentation on ReadTheDocs builds and renders. ## v2.5.0 - 2021-03-16 ### Changed * NeighborList `filter` method has been optimized. * TBB 2021 is now supported (removed use of deprecated TBB features). * Added new pre-commit hooks for `black`, `isort`, and `pyupgrade`. * Testing framework now uses `pytest`. ## v2.4.1 - 2020-11-16 ### Fixed * Python 3.8 builds with Windows MSVC were broken due to an unrecognized CMake compiler option. * Fixed broken documentation by overriding scikit-build options. * RPATH on Linux is now set correctly to find TBB libraries not on the global search path. * 2D box image calculations now return zero for the image z value. * Fixed wrong attribute name in `EnvironmentCluster.plot`. ## v2.4.0 - 2020-11-09 ### Added * The Box class has a method `contains` to determine particle membership in a box. * NeighborList class exposes `num_points` and `num_query_points` attributes. * `compute` method of `GaussianDensity` class has a `values` argument. * Support for pre-commit hooks. * Python 3.9 is supported. ### Changed * NeighborList raises a `ValueError` instead of a `RuntimeError` if provided invalid constructor arguments. * freud now builds using scikit-build (requires CMake). ### Deprecated * `freud.order.Translational` ### Fixed * Source distributions now include Cython source files. * Hexatic order parameter (unweighted) normalizes by number of neighbors instead of the symmetry order k. * Particles with an i-j normal vector of [0, 0, 0] are excluded from 2D Voronoi NeighborList computations for numerical stability reasons. * Memory leak in `makeDefaultNlist` function where a NeighborList was being allocated and not freed. ## v2.3.0 - 2020-08-03 ### Added * Support for garnett 0.7. * Custom NeighborLists can be created from a set of points using `from_points`. Distances will be calculated automatically. * The Box class has methods `compute_distances` and `compute_all_distances` to calculate distances between arrays of points and query points. * Hexatic can now compute 2D Minkowski Structure Metrics, using `weighted=True` along with a Voronoi NeighborList. * Examples have been added to the Cluster, Density, Environment, and Order Modules. * Module examples have been integrated with doctests to ensure they are up to date with API. * SphereVoxelization class in the `density` module computes a grid of voxels occupied by spheres. * `freud.diffraction.DiffractionPattern` class (unstable) can be used to compute 2D diffraction patterns. ### Changed * Cython is now a required dependency (not optional). Cythonized `.cpp` files have been removed. * An instance of GaussianDensity cannot compute 3D systems if it has been previously computed 2D systems. ### Fixed * Histogram bin locations are computed in a more numerically stable way. * Improved error handling of Cubatic input parameters. * PMFTs are now properly normalized such that the pair correlation function tends to unity for an ideal gas. * PMFTXYT uses the correct orientations when `points` and `query_points` differ. * GaussianDensity Gaussian normalization in 2D systems has been corrected. ### Removed * Python 3.5 is no longer supported. Python 3.6+ is required. ## v2.2.0 - 2020-02-24 ### Added * NeighborQuery objects can now create NeighborLists with neighbors sorted by bond distance. * LocalDescriptors `compute` takes an optional maximum number of neighbors to compute for each particle. ### Fixed * Corrected calculation of neighbor distances in the Voronoi NeighborList. * Added finite tolerance to ensure stability of 2D Voronoi NeighborList computations. ## v2.1.0 - 2019-12-19 ### Added * The Box class has methods `center_of_mass` and `center` for periodic-aware center of mass and shifting points to center on the origin. ### Changed * The make\_random\_box system method no longer overwrites the NumPy global random number generator state. * The face\_orientations argument of PMFTXYZ has been renamed to equiv\_orientations and must be provided as an Mx4 array, where M is the number of symmetrically equivalent particle orientations. * Improved documentation about query modes. * The Voronoi class uses smarter heuristics for its voro++ block sizes, resulting in significant performance gains for large systems. ### Fixed * The from\_box method correctly passes user provided dimensions to from\_matrix it if is called. * Correctly recognize Ovito DataCollection objects in from\_system. * Corrected `ClusterProperties` calculation of centers of mass in specific systems. * Set z positions to 0 for 2D GSD systems in from\_system. * PMFTXY and PMFTXYZ index into query orientations using the query point index instead of the point index. ## v2.0.1 - 2019-11-08 ### Added * Rewrote development documentation to match the conventions and logic in version 2.0 of the code. ### Fixed * Automatic conversion of 2D systems from various data sources. * Mybinder deployment works with freud v2.0. * Minor errors in freud-examples have been corrected. ## v2.0.0 - 2019-10-31 ### Added * Ability to specify "system-like" objects that contain a box and set of points for most computes. * NeighborLists and query arguments are now accepted on equal footing by compute methods that involve neighbor finding via the `neighbors=...` argument. * Extensive new documentation including tutorial for new users and reference sections on crucial topics. * Standard method for preprocessing arguments of pair computations. * New internal ManagedArray object that allows data persistence and improves indexing in C++. * Internal threaded storage uses the standard ManagedArray object. * C++ Histogram class to standardize n-dimensional binning and simplify writing new methods. * Upper bound r\_max option for number of neighbors queries. * Lower bound r\_min option for all queries. * Steinhardt now supports l = 0, 1. * C++ BondHistogramCompute class encapsulates logic of histogram-based methods. * 2D PMFTs accept quaternions as well as angles for their orientations. * ClusterProperties computes radius of gyration from the gyration tensor for each cluster. * `freud.data` module for generating example particle systems. * Optional normalization for RDF, useful for small systems. * `plot()` methods for `NeighborQuery` and `Box` objects. * Added support for reading system data directly from MDAnalysis, garnett, gsd, HOOMD-blue, and OVITO. * Various validation tests. ### Changed * All compute objects that perform neighbor computations now use NeighborQuery internally. * Neighbor-based compute methods now accept NeighborQuery (or "system-like") objects as the first argument. * All compute objects that perform neighbor computations now loop over NeighborBond objects. * Renamed (ref\_points, points) to (points, query\_points) to clarify their usage. * Bond vector directionality is standardized for all computes that use it (always from query\_point to point). * Standardized naming of various common parameters across freud such as the search distance r\_max. * Accumulation is now performed with `compute(..., reset=False)`. * Arrays returned to Python persist even after the compute object is destroyed or resizes its arrays. * All class attributes are stored in the C++ members and accessed via getters wrapped as Python properties. * Code in the freud.common has been moved to freud.util. * NeighborQuery objects require z == 0 for all points if the box is 2D. * Renamed several Box methods, box.ParticleBuffer is now locality.PeriodicBuffer. * Cluster now finds connected components of the neighbor graph (the cluster cutoff distance is given through query arguments). * Refactored and renamed attributes of Cluster and ClusterProperties modules. * CorrelationFunction of complex inputs performs the necessary conjugation of the values before computing. * Updated GaussianDensity constructor to accept tuples as width instead of having 2 distinct signatures. * RDF bin centers are now strictly at the center of bins. * RDF no longer performs parallel accumulation of cumulative counts (provided no performance gains and was substantially more complex code). * MatchEnv has been split into separate classes for the different types of computations it is capable of performing, and these classes all use v2.0-style APIs. * The Voronoi class was rewritten to use voro++ for vastly improved performance and correctness in edge cases. * Improved Voronoi plotting code. * Cubatic uses standard library random functions instead of Saru (which has been removed from the repo). * APIs for several order parameters have been standardized. * SolidLiquid order parameter has been completely rewritten, fixing several bugs and simplifying its C++ code. * Steinhardt uses query arguments. * PMFTXY2D has been renamed to PMFTXY. * Removed unused orientations from PMFTXYZ and PMFTXY. * PMFTXY and PMFTXYZ include the phase space volume of coordinates that are implicitly integrated out (one angle in PMFTXY, and three angles in PMFTXYZ). * Documentation uses automodule instead of autoclass. * Citations are now included using bibtex and sphinxcontrib-bibtex. ### Fixed * Removed all neighbor exclusion logic from all classes, depends entirely on locality module now. * Compute classes requiring 2D systems check the dimensionality of their input boxes. * LinkCell nearest neighbor queries properly check the largest distance found before proceeding to next shell. * LocalDensity uses the correct number of points/query points. * RDF no longer forces the first bin of the PCF and first two bins of the cumulative counts to be 0. * Steinhardt uses the ThreadStorage class and properly resets memory where needed. ### Removed * The freud.util module. * Python 2 is no longer supported. Python 3.5+ is required. * LinkCell no longer exposes the internals of the cell list data structure. * Cubatic no longer returns the per-particle tensor or the constant r4 tensor. ## v1.2.2 - 2019-08-15 ### Changed * LocalWl return values are real instead of complex. ### Fixed * Fixed missing Condon-Shortley phase affecting LocalWl and Steinhardt Wl computations. This missing factor of -1 caused results for third-order (Wl) Steinhardt order parameters to be incorrect, shown by their lack of rotational invariance. This problem was introduced in v0.5.0. * Reduced various compiler warnings. * Possible out of bounds LinkCell access. * RDF plots now use the provided `ax` object. ## v1.2.1 - 2019-07-26 ### Changed * Optimized performance for `RotationalAutocorrelation`. * Added new tests for cases with two different sets of points. ### Fixed * Fixed bug resulting in the `LocalQlNear` and `LocalWlNear` class wrongly using a hard instead of a soft cut-off, which may have resulted in an incorrect number of neighbors. This would cause incorrect results especially for systems with an average n-th nearest-neighbor distance smaller than `rmax`. This problem was introduced in v0.6.4. * Fixed duplicate neighbors found by `LinkCell` `NeighborQuery` methods * Corrected data in `LocalQl`, `LocalWl` documentation example * Repeated Cubatic Order Parameter computations use the correct number of replicates. * Repeated calls to `LocalQl.computeNorm` properly reset the underlying data. * Clarified documentation for `LocalBondProjection` and `MSD` ## v1.2.0 - 2019-06-27 ### Added * Added `.plot()` method and IPython/Jupyter PNG representations for many classes. * `AttributeError` is raised when one tries to access an attribute that has not yet been computed. * Added `freud.parallel.getNumThreads()` method. * New examples for integration with simulation and visualization workflows. ### Changed * Removed extra C++ includes to speed up builds. * The C++ style is now based on clang-format. * Refactored C++ handling of thread-local storage. * SolLiq order parameter computations are parallelized with TBB. * Optimized performance of Voronoi. * Several Box properties are now given as NumPy arrays instead of tuples. * Box methods handling multiple vectors are parallelized with TBB. * Eigen is now used for all matrix diagonalizations. ### Fixed * Calling setNumThreads works correctly even if a parallel compute method has already been called. * Fixed segfault with chained calls to NeighborQuery API. * Correct `exclude_ii` logic. ### Removed * Removed outdated `computeNList` function from `LocalDescriptors`. ## v1.1.0 - 2019-05-23 ### Added * New neighbor querying API to enable reuse of query data structures (see NeighborQuery class). * AABBQuery (AABB tree-based neighbor finding) added to public API. * Ability to dynamically select query method based on struct of arguments. * All compute objects have `__repr__` and `__str__` methods defined. * NeighborLists can be accessed as arrays of particle indices via `__getitem__`. * ParticleBuffer supports different buffer sizes in x, y, z. * Box makeCoordinates, makeFraction, getImage now support 2D arrays with multiple points. ### Changed * Use constant memoryviews to prevent errors with read-only inputs. * LocalQl is now parallelized with TBB. * Optimized performance of RotationalAutocorrelation. * NematicOrderParameter uses SelfAdjointEigenSolver for improved stability. * Added build flags for Cython debugging. * LinkCell computes cell neighbors on-demand and caches the results for significant speedup. ### Fixed * Corrected type of `y_max` argument to PMFTXY2D from int to float. * Reduce logging verbosity about array conversion. * Fixed number of threads set upon exiting the NumThreads context manager. * Corrected quaternion array sizes and added missing defaults in the documentation. * Empty ParticleBuffers return valid array shapes for concatenation. * Wheels are built against NumPy 1.10 for improved backwards compatibility. ## v1.0.0 - 2019-02-08 ### Added * Freshly updated README and documentation homepage. * Moved to [GitHub](https://github.com/glotzerlab/freud). * New msd.MSD class for computing mean-squared displacements. * New order.RotationalAutocorrelation class. * Cython memoryviews are now used to convert between C++ and Cython. * New and improved freud logo. * Internal-only AABB tree (faster for many large systems, but API is unstable). ### Changed * Improved module documentation, especially for PMFT. * Refactored internals of LocalQl and related classes. * Upgraded ReadTheDocs configuration. ### Fixed * Improved CubaticOrderParameter handling of unusable seeds. * Fixed box error in NearestNeighbors. ### Removed * All long-deprecated methods and classes were removed. * Bond module removed. ## v0.11.4 - 2018-11-09 ### Added * Builds are now tested on Windows via Appveyor, though officially unsupported. ### Fixed * Multiple user-reported issues in setup.py were resolved. * C++ errors are handled more cleanly as Python exceptions. * Fixed bug in SolLiq box parameters. * Documentation corrected for NeighborList. * Various minor compiler errors on Windows were resolved. ## v0.11.3 - 2018-10-18 ### Fixed * Linux wheels are now pushed to the real PyPI server instead of the test server. * macOS deployment pyenv requires patch versions to be specified. ## v0.11.2 - 2018-10-18 ### Fixed * Error in Python versions in macOS automatic deployment. ## v0.11.1 - 2018-10-18 ### Added * PyPI builds automatically deploy for Mac and Linux. ### Changed * macOS deployment target is now 10.12 instead of 10.9 to ensure TBB compatibility. * Unwrapping positions with images is now vectorized. * Minor documentation fixes. ### Fixed * TBB includes were not always detected correctly by setup.py. ## v0.11.0 - 2018-09-27 ### Added * Example notebooks are now shown in the documentation. * Many unit tests were added. * New class: `freud.environment.LocalBondProjection`. * `freud` is now available on the Python Package Index (PyPI) as `freud-analysis`. ### Changed * Documentation was revised for several modules. * New class `freud.box.ParticleBuffer` was adapted from the previous `VoronoiBuffer` to include support for triclinic boxes. * The `bond` and `pmft` modules verify system dimensionality matches the coordinate system used. * Minor optimization: arrays are reduced across threads only when necessary. ### Fixed * NumPy arrays of lengths 2, 3, 6 are now correctly ducktyped into boxes. * Removed internal use of deprecated code. * C++ code using `uint` has been changed to `unsigned int`, to improve compiler compatibility. ### Deprecated * In `freud.locality.LinkCell`, `computeCellList()` has been replaced by `compute()`. ### Removed * The `kspace` module has been removed. ## v0.10.0 - 2018-08-27 ### Added * Codecov to track test coverage. * Properties were added to MatchEnv, AngularSeparation, Cubatic/Nematic order parameters, Voronoi. ### Changed * freud uses Cython and setup.py instead of CMake for installation. * Properties (not get functions) are the official way to access computed results. * Interface module has been improved significantly. * density.FloatCF, density.ComplexCF, order parameter documentation is improved. * Many compute methods now use points, orientations from ref\_points, ref\_orientations if not provided. * Reset methods have been renamed to `reset`. ### Fixed * `kspace` module had a missing factor of pi in the volume calculation of `FTsphere`. ### Deprecated * Get functions have been deprecated. * Setter methods have been deprecated. * Reduce methods are called internally, so the user-facing methods have been deprecated. ### Removed * GaussianDensity.resetDensity() is called internally. ## v0.9.0 - 2018-07-30 ### Added * Allow specification of rmin for LocalWl (previously was only possible for LocalQl). * New environment module. Contains classes split from the order module. * Box duck-typing: methods accepting a box argument will convert box-like objects into freud.box.Box objects. * All Python/Cython code is now validated with flake8 during continuous integration. ### Changed * Refactoring of LocalQl and LocalWl Steinhardt order parameters. * MatchEnv uses BiMap instead of boost::bimap. * All boost shared\_arrays have been replaced with std::shared\_ptr. * Replaced boost geometry with standard containers in brute force registration code. * NearestNeighbors automatically uses ref\_points as the points if points are not provided. * Box::unwrap and Box::wrap return the vectors after updating. * Everything other than true order parameters moved from Order module to Environment module. * Use lambda function in parallel\_for in CorrelationFunction. * Tests no longer depend on nose. Python's unittest is used instead. * Vastly improved documentation clarity and correctness across all modules. * Docstrings are now in Google format. The developer guide offers guidance for module authors. ### Fixed * Fixed LocalDescriptors producing NaN's in some cases. * Fixed cython passing C++ the default argument force\_resize to NeighborList::resize. * Standardize freud.common.convert\_array error message. ### Removed * Boost is no longer needed to build or run freud. * Removed undocumented shapesplit module. * Removed extra argument from TransOrderParam in C++. ## v0.8.2 - 2018-06-07 ### Added * Allow specification of maximum number of neighbors to use when computing LocalDescriptors ### Changed * Using the default neighbor list with LocalDescriptors requires specifying the precompute argument * Updated and improved tests * Cleaned AngularSeparation module and documentation ## v0.8.1 - 2018-05-09 ### Fixed * Memory issue in nlist resolved ## v0.8.0 - 2018-04-06 ### Added * Voronoi neighborlist now includes periodic neighbors * Voronoi neighborlist computes weight according to the facet area in 3D * Box module exposes `getImage(vec)` * Voronoi module can compute and return cell volumes/areas ### Changed * Cluster module supports box argument in compute methods. * Refactored C++ code to reduce extraneous #includes * Refactored PMFT code * Refactored box module to remove unused methods * Resolved bug in `kspace.AnalyzeSFactor3D` ### Deprecated * Box module `getCoordinates()` in favor of duplicate `box.makeCoordinates()` ### Removed * Removed deprecated API for ComplexWRDF and FloatWRDF ## v0.7.0 - 2018-03-02 ### Added * Added nematic order parameter * Added optional rmin argument to density.RDF * Added credits file * Wrote development guide * Added Python interface for box periodicity ### Changed * Various bug fixes and code cleaning * Fixed all compile-time warnings * Ensured PEP 8 compliance everywhere * Minimized boost dependence * Many documentation rewrites * Wrote development guide * Made tests deterministic (seeded RNGs) * Removed deprecated Box API warnings * Standardized numpy usage ## v0.6.4 - 2018-02-05 * Added a generic neighbor list interface * Set up CircleCI for continuous integration * Set up documentation on ReadTheDocs * Added bumpversion support * Various bug fixes * Added python-style properties for accessing data * Fixed issues with voronoi neighbor list ## v0.6.0 * trajectory module removed * box constructor API updated * PMFTXYZ API updated to take in more quaternions for `face_orientations`, or have a sensible default value * NearestNeighbors: - over-expanding box fixed - strict rmax mode added - ability to get wrapped vectors added - minor updates to C-API to return full lists from C * Addition of Bonding modules * Addition of local environment matching ## v0.5.0 * Replace boost::shared\_array with std::shared\_ptr (C++ 11) * Moved all tbb template classes to lambda expressions * Moved trajectory.Box to box.Box * trajectory is deprecated * Fixed Bond Order Diagram and allow for global, local, or orientation correlation * Added python-level voronoi calculation * Fixed issues with compiling on OS X, including against conda python installs * Added code to compute bonds between particles in various coordinate systems ## v0.4.1 * PMFT: Fixed issue involving binning of angles correctly * PMFT: Fixed issue in R12 which prevented compute/accumulate from being called with non-flattened arrays * PMFT: Updated xyz api to allow simpler symmetric orientations to be supplied * PMFT: Updated pmftXY2D api * PMFT: Histograms are properly normalized, allowing for comparison between systems without needing to "zero" the system * fsph: Added library to calculate spherical harmonics via cython * Local Descriptors: Uses fsph, updates to API * Parallel: Added default behavior to setNumThreads and added context manager ## v0.4.0 * Add compiler flags for C++11 features * Added Saru RNG (specifically for Cubatic Order Parameter, available to all) * Cubatic Order Parameter * Rank 4 tensor struct * Environment Matching/Cluster Environment * Shape aware fourier transform for structure factor calculation * Added deprecation warnings; use python -W once to check warnings * Added Change Log * Moved all documentation in Sphinx; documentation improvements * C++ wrapping moved from Boost to Cython * Itercell only available in python 3.x * PMFT: - XY - XYZ with symmetry, API updated - R, T1, T2 - X, Y, T2 * viz removed (is not compatible with cython) ## No change logs prior to v0.4.0