# Density Module¶

The density module contains functions which deal with the density of the system.

## Correlation Functions¶

class freud.density.FloatCF(rmax, dr)

Computes the pairwise correlation function $$\left< p*q \right> \left( r \right)$$ between two sets of points with associated values p and q.

Two sets of points and two sets of real values associated with those points are given. Computing the correlation function results in an array of the expected (average) product of all values at a given radial distance.

The values of r to compute the correlation function at are controlled by the rmax and dr parameters to the constructor. rmax determines the maximum r at which to compute the correlation function and dr is the step size for each bin.

Note

2D: freud.density.FloatCF properly handles 2D boxes. The points must be passed in as [x, y, 0]. Failing to set z=0 will lead to undefined behavior.

Self-correlation: It is often the case that we wish to compute the correlation function of a set of points with itself. If given the same arrays for both points and ref_points, we omit accumulating the self-correlation value in the first bin.

Module author: Matthew Spellings <mspells@umich.edu>

Parameters: r_max (float) – distance over which to calculate dr (float) – bin size
R

Bin centers.

RDF

Returns: expected (average) product of all values at a given radial distance numpy.ndarray, shape=($$N_{bins}$$), dtype= numpy.float64
accumulate(self, box, ref_points, refValues, points, values, nlist=None)

Calculates the correlation function and adds to the current histogram.

Parameters: box (freud.box.Box) – simulation box ref_points (numpy.ndarray, shape=($$N_{particles}$$, 3), dtype= numpy.float32) – reference points to calculate the local density refValues (numpy.ndarray, shape=($$N_{particles}$$), dtype= numpy.float64) – values to use in computation points (numpy.ndarray, shape=($$N_{particles}$$, 3), dtype= numpy.float32) – points to calculate the local density values (numpy.ndarray, shape=($$N_{particles}$$), dtype= numpy.float64) – values to use in computation nlist (freud.locality.NeighborList) – freud.locality.NeighborList object to use to find bonds
box

Get the box used in the calculation.

compute(self, box, ref_points, refValues, points, values, nlist=None)

Calculates the correlation function for the given points. Will overwrite the current histogram.

Parameters: box (freud.box.Box) – simulation box ref_points (numpy.ndarray, shape=($$N_{particles}$$, 3), dtype= numpy.float32) – reference points to calculate the local density refValues (numpy.ndarray, shape=($$N_{particles}$$), dtype= numpy.float64) – values to use in computation points (numpy.ndarray, shape=($$N_{particles}$$, 3), dtype= numpy.float32) – points to calculate the local density values (numpy.ndarray, shape=($$N_{particles}$$), dtype= numpy.float64) – values to use in computation nlist (freud.locality.NeighborList) – freud.locality.NeighborList object to use to find bonds
counts

The counts.

getBox(self)

Get the box used in the calculation

Returns: freud Box freud.box.Box
getCounts(self)
Returns: counts of each histogram bin numpy.ndarray, shape=($$N_{bins}$$), dtype= numpy.int32
getR(self)
Returns: values of bin centers numpy.ndarray, shape=($$N_{bins}$$), dtype= numpy.float32
getRDF(self)

Returns: expected (average) product of all values at a given radial distance numpy.ndarray, shape=($$N_{bins}$$), dtype= numpy.float64
reduceCorrelationFunction(self)

Reduces the histogram in the values over N processors to a single histogram. This is called automatically by freud.density.FloatCF.getRDF(), freud.density.FloatCF.getCounts().

resetCorrelationFunction(self)

Resets the values of the correlation function histogram in memory

class freud.density.ComplexCF(rmax, dr)

Computes the pairwise correlation function $$\left< p*q \right> \left( r \right)$$ between two sets of points with associated values $$p$$ and $$q$$.

Two sets of points and two sets of complex values associated with those points are given. Computing the correlation function results in an array of the expected (average) product of all values at a given radial distance.

The values of $$r$$ to compute the correlation function at are controlled by the rmax and dr parameters to the constructor. rmax determines the maximum r at which to compute the correlation function and dr is the step size for each bin.

Note

2D: freud.density.ComplexCF properly handles 2D boxes. The points must be passed in as [x, y, 0]. Failing to set z=0 will lead to undefined behavior.

Self-correlation: It is often the case that we wish to compute the correlation function of a set of points with itself. If given the same arrays for both points and ref_points, we omit accumulating the self-correlation value in the first bin.

Module author: Matthew Spellings <mspells@umich.edu>

Parameters: r_max (float) – distance over which to calculate dr (float) – bin size
R

The value of bin centers.

RDF

The RDF.

accumulate(self, box, ref_points, refValues, points, values, nlist=None)

Calculates the correlation function and adds to the current histogram.

Parameters: box (freud.box.Box) – simulation box ref_points (numpy.ndarray, shape=($$N_{particles}$$, 3), dtype= numpy.float32) – reference points to calculate the local density refValues (numpy.ndarray, shape=($$N_{particles}$$), dtype= numpy.complex128) – values to use in computation points (numpy.ndarray, shape=($$N_{particles}$$, 3), dtype= numpy.float32) – points to calculate the local density values (numpy.ndarray, shape=($$N_{particles}$$), dtype= numpy.complex128) – values to use in computation nlist (freud.locality.NeighborList) – freud.locality.NeighborList object to use to find bonds
box

Get the box used in the calculation.

compute(self, box, ref_points, refValues, points, values, nlist=None)

Calculates the correlation function for the given points. Will overwrite the current histogram.

Parameters: box (freud.box.Box) – simulation box ref_points (numpy.ndarray, shape=($$N_{particles}$$, 3), dtype= numpy.float32) – reference points to calculate the local density refValues (numpy.ndarray, shape=($$N_{particles}$$), dtype= numpy.complex128) – values to use in computation points (numpy.ndarray, shape=($$N_{particles}$$, 3), dtype= numpy.float32) – points to calculate the local density values (numpy.ndarray, shape=($$N_{particles}$$), dtype= numpy.complex128) – values to use in computation nlist (freud.locality.NeighborList) – freud.locality.NeighborList object to use to find bonds
counts

The counts of each histogram.

getBox(self)
Returns: freud Box freud.box.Box()
getCounts(self)
Returns: counts of each histogram bin numpy.ndarray, shape=($$N_{bins}$$), dtype= numpy.int32
getR(self)

The value of bin centers.

Returns: values of bin centers numpy.ndarray, shape=($$N_{bins}$$), dtype= numpy.float32
getRDF(self)

The RDF.

Returns: expected (average) product of all values at a given radial distance numpy.ndarray, shape=($$N_{bins}$$), dtype= numpy.complex128
reduceCorrelationFunction(self)

Reduces the histogram in the values over N processors to a single histogram. This is called automatically by freud.density.ComplexCF.getRDF(), freud.density.ComplexCF.getCounts().

resetCorrelationFunction(self)

Resets the values of the correlation function histogram in memory

## Gaussian Density¶

class freud.density.GaussianDensity(*args)

Computes the density of a system on a grid.

Replaces particle positions with a Gaussian blur and calculates the contribution from the grid based upon the distance of the grid cell from the center of the Gaussian. The dimensions of the image (grid) are set in the constructor.

Module author: Joshua Anderson <joaander@umich.edu>

Parameters: width (unsigned int) – number of pixels to make the image width_x (unsigned int) – number of pixels to make the image in x width_y (unsigned int) – number of pixels to make the image in y width_z (unsigned int) – number of pixels to make the image in z r_cut (float) – distance over which to blur sigma (float) – sigma parameter for Gaussian
• Constructor Calls:

Initialize with all dimensions identical:

freud.density.GaussianDensity(width, r_cut, dr)


Initialize with each dimension specified:

freud.density.GaussianDensity(width_x, width_y, width_z, r_cut, dr)

box

Get the box used in the calculation.

compute(self, box, points)

Calculates the Gaussian blur for the specified points. Does not accumulate (will overwrite current image).

Parameters: box (freud.box.Box) – simulation box points (numpy.ndarray, shape=($$N_{particles}$$, 3), dtype= numpy.float32) – points to calculate the local density
gaussian_density

The image grid with the Gaussian density.

getBox(self)
Returns: freud Box freud.box.Box
getGaussianDensity(self)
Returns: Image (grid) with values of Gaussian numpy.ndarray, shape=($$w_x$$, $$w_y$$, $$w_z$$), dtype= numpy.float32
resetDensity(self)

Resets the values of GaussianDensity in memory

## Local Density¶

class freud.density.LocalDensity(r_cut, volume, diameter)

Computes the local density around a particle.

The density of the local environment is computed and averaged for a given set of reference points in a sea of data points. Providing the same points calculates them against themselves. Computing the local density results in an array listing the value of the local density around each reference point. Also available is the number of neighbors for each reference point, giving the user the ability to count the number of particles in that region.

The values to compute the local density are set in the constructor. r_cut sets the maximum distance at which to calculate the local density. volume is the volume of a single particle. diameter is the diameter of the circumsphere of an individual particle.

Note

2D: freud.density.LocalDensity properly handles 2D boxes. The points must be passed in as [x, y, 0]. Failing to set z=0 will lead to undefined behavior.

Module author: Joshua Anderson <joaander@umich.edu>

Parameters: r_cut (float) – maximum distance over which to calculate the density volume (float) – volume of a single particle diameter (float) – diameter of particle circumsphere
box

Get the box used in the calculation.

compute(self, box, ref_points, points=None, nlist=None)

Calculates the local density for the specified points. Does not accumulate (will overwrite current data).

Parameters: box (freud.box.Box) – simulation box ref_points (numpy.ndarray, shape=($$N_{particles}$$, 3), dtype= numpy.float32) – reference points to calculate the local density points (numpy.ndarray, shape=($$N_{particles}$$, 3), dtype= numpy.float32) – (optional) points to calculate the local density nlist (freud.locality.NeighborList) – freud.locality.NeighborList object to use to find bonds
density

Density array for each particle.

getBox(self)
Returns: freud Box freud.box.Box
getDensity(self)

Get the density array for each particle.

Returns: Density array for each particle numpy.ndarray, shape=($$N_{particles}$$), dtype= numpy.float32
getNumNeighbors(self)

Return the number of neighbors for each particle.

Returns: Number of neighbors for each particle numpy.ndarray, shape=($$N_{particles}$$), dtype= numpy.float32
num_neighbors

Number of neighbors for each particle.

class freud.density.RDF(rmax, dr, rmin=0)

Computes RDF for supplied data.

The RDF ($$g \left( r \right)$$) is computed and averaged for a given set of reference points in a sea of data points. Providing the same points calculates them against themselves. Computing the RDF results in an RDF array listing the value of the RDF at each given $$r$$, listed in the r array.

The values of $$r$$ to compute the RDF are set by the values of rmin, rmax, dr in the constructor. rmax sets the maximum distance at which to calculate the $$g \left( r \right)$$, rmin sets the minimum distance at which to calculate the $$g \left( r \right)$$, and dr determines the step size for each bin.

Module author: Eric Harper <harperic@umich.edu>

Note

2D: freud.density.RDF properly handles 2D boxes. The points must be passed in as [x, y, 0]. Failing to set z=0 will lead to undefined behavior.

Parameters: rmax (float) – maximum distance to calculate dr (float) – distance between histogram bins rmin (float) – minimum distance to calculate, default 0

Changed in version 0.7.0: Added optional rmin argument.

R

Values of bin centers.

RDF

Histogram of RDF values.

accumulate(self, box, ref_points, points, nlist=None)

Calculates the RDF and adds to the current RDF histogram.

Parameters: box (freud.box.Box) – simulation box ref_points (numpy.ndarray, shape=($$N_{particles}$$, 3), dtype= numpy.float32) – reference points to calculate the local density points (numpy.ndarray, shape=($$N_{particles}$$, 3), dtype= numpy.float32) – points to calculate the local density nlist (freud.locality.NeighborList) – freud.locality.NeighborList object to use to find bonds
box

Get the box used in the calculation.

compute(self, box, ref_points, points, nlist=None)

Calculates the RDF for the specified points. Will overwrite the current histogram.

Parameters: box (freud.box.Box) – simulation box ref_points (numpy.ndarray, shape=($$N_{particles}$$, 3), dtype= numpy.float32) – reference points to calculate the local density points (numpy.ndarray, shape=($$N_{particles}$$, 3), dtype= numpy.float32) – points to calculate the local density nlist (freud.locality.NeighborList) – freud.locality.NeighborList object to use to find bonds
getBox(self)
Returns: freud Box freud.box.Box
getNr(self)

Get the histogram of cumulative RDF values.

Returns: histogram of cumulative RDF values numpy.ndarray, shape=($$N_{bins}$$, 3), dtype= numpy.float32
getR(self)

Values of the histogram bin centers.

Returns: values of the histogram bin centers numpy.ndarray, shape=($$N_{bins}$$, 3), dtype= numpy.float32
getRDF(self)

Histogram of RDF values.

Returns: histogram of RDF values numpy.ndarray, shape=($$N_{bins}$$, 3), dtype= numpy.float32
n_r

Histogram of cumulative RDF values.

reduceRDF(self)

Reduces the histogram in the values over N processors to a single histogram. This is called automatically by freud.density.RDF.getRDF(), freud.density.RDF.getNr().

resetRDF(self)

Resets the values of RDF in memory