NearestNeighbor¶

class NearestNeighbor(md_trajectory, cutoff_radius=None, start_time=None, end_time=None, pair_selection=None, time_resolution=None, info_panel=None)

Class for calculating the time-dependent nearest neighbors from an MD simulation.

Parameters: md_trajectory (MDTrajectory | AtomicConfiguration) – The MDTrajectory or configuration to calculate the nearest neighbors for. cutoff_radius (PhysicalQuantity of type length) – Cut off distance for nearest neighbors (must be positive). Default: 2.5 * Angstrom start_time (PhysicalQuantity of type time) – The start time. Default: 0.0 * fs end_time (PhysicalQuantity of type time) – The end time. Default: The last time frame pair_selection (sequence) – Only include contributions between this selection of atoms. A sequence has to contain two of the following types: Element, tag name, list of indices, or None. Default: all atoms pairs. time_resolution (PhysicalQuantity of type time) – The time interval between snapshots in the MD trajectory that are included in the analysis. info_panel (InfoPanel (Plot2D)) – Info panel to show the calculation progress. Default: No info panel
data()
Returns: An array with the average number of nearest neighbors for each selected snapshot in the first column and its variance in the second column. array
times()

Return the time values associated with the selected snapshots.

Usage Examples¶

Load an MDTrajectory, calculate the average nearest neighbor number and the corresponding variance as a function of time and plot the results:

md_trajectory = nlread('alumina_trajectory.nc')[-1]

nearest_neighbor = NearestNeighbor(md_trajectory,
start_time=10000.0*fs,
end_time=50000.0*fs,
cutoff_radius=2.5*Angstrom)

# Get the times in ps and the nearest neighbor values.
t       = nearest_neighbor.times().inUnitsOf(ps)
nn_data = nearest_neighbor.data()

# Plot the nearest neighbor number and its variance using pylab.
import pylab

pylab.plot(t, nn_data[:, 0], label='Number of nearest neighbors')
pylab.plot(t, nn_data[:, 1], label='Variance nearest neighbors')
pylab.xlabel('t (ps)')
pylab.ylabel('<NN>')
pylab.legend()

pylab.show()


nearest_neighbor.py

Notes¶

This analysis calculates for each snapshot in an MDTrajectory the average number of nearest neighbors of a selected group of atoms (the first entry in pair_selection) with a second selected group of atoms (the second entry in pair_selection). By default the nearest neighbors are calculated among all atoms in the configuration.

In contrast to CoordinationNumber, which calculates the evolution of the number of atoms with a given coordination number, this analysis evaluates the average number of nearest neighbors along the simulation time.