Cutoff Functions

Cutoff functions are used to enforce the smoothness of the models w.r.t. neighbor insertion/removal from an atomic environment. Some are also used to damp the signal from a neighbor’s displacement that is “far” from the central atom, e.g. CosineCutoff. Cutoff functions are also used in the construction of radial basis functions.

class mlcg.nn.cutoff.IdentityCutoff(cutoff_lower=0, cutoff_upper=inf)[source]

Cutoff function that is one everywhere, but retains cutoff_lower and cutoff_upper attributes

Parameters:
  • cutoff_lower (float) – left bound for the radial cutoff distance

  • cutoff_upper (float) – right bound for the radial cutoff distance

class mlcg.nn.cutoff.CosineCutoff(cutoff_lower=0.0, cutoff_upper=5.0)[source]

Class implementing a cutoff envelope based a cosine signal in the interval [lower_cutoff, upper_cutoff]:

When the lower cutoff is set to 0, the function takes the form:

\[\cos{\left( r_{ij} \times \pi / r_{high}\right)} + 1.0\]

For higher than zero values of the lower cutoff, the function takes the form

\[0.5 \cos{ \left[ \pi \left(2 \frac{r_{ij} - r_{low}}{r_{high} - r_{low}} + 1.0 \right)\right]} + 0.5\]

Note

The behavior of the cutoff is qualitatively different for lower cutoff values greater than zero when compared to the zero lower cutoff default. We recommend visualizing your basis via the plot method.

class mlcg.nn.cutoff.ShiftedCosineCutoff(cutoff=5.0, smooth_width=0.5)[source]

Class of Behler cosine cutoff with an additional smoothing parameter.

\[0.5 + 0.5 \cos{ \left[ \pi \left( \frac{r_{ij} - r_{high} + \sigma}{\sigma}\right)\right]}\]

where \(\sigma\) is the smoothing width.

Parameters:
  • cutoff (Union[int, float]) – cutoff radius

  • smooth_width (Union[int, float]) – parameter that controls the extent of smoothing in the cutoff envelope.