pele.mindist.MinPermDistCluster#

class pele.mindist.MinPermDistCluster(niter=10, verbose=False, tol=0.01, accuracy=0.01, measure=<pele.mindist._minpermdist_policies.MeasureAtomicCluster object>, transform=<pele.mindist._minpermdist_policies.TransformAtomicCluster object>)[source]#

Minimize the distance between two clusters.

Parameters:
niterint

the number of basinhopping iterations to perform

verboseboolean

whether to print status information

accuracy :float, optional

accuracy for standard alignment which determines if the structures are identical

tolfloat, optional

tolerance for an exact match to stop iterations

transform

Transform policy which tells MinpermDist how to transform the given coordinates

measure

measure policy which tells minpermdist how to perform certains measures on the coordinates.

Notes

The following symmetries will be accounted for:

  1. Translational symmetry

  2. Global rotational symmetry

  3. Permutational symmetry

  4. Point inversion symmetry

The algorithm here to find the best distance is:

for rotation in standardalignments:
    optimize permutation
    optimize rotation
    check_match

for i in range(niter):
    random_rotation
    optimize permutations
    align rotation
    check_match

The minpermdist algorithm is generic and can act on various types of coordinates, e.g. carthesian, angle axis, …. The transform and measure policies define and interface to manipulate and analyze a given set of coordinates. If the coordinates don’t have a standard format, custom policies can be specified. As an example see the angle axis minpermdist routines.

Methods

__call__(coords1, coords2)

Call self as a function.

align_structures(coords1, coords2)

check_match(x1, x2, rot, invert)

check a given rotation for a match

finalize_best_match(x1)

do final processing of the best match

Attributes