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

Minimize the distance between two clusters.

Parameters :

niter : int

the number of basinhopping iterations to perform

verbose : boolean

whether to print status information

accuracy :float, optional

accuracy for standard alignment which determines if the structures are identical

tol : float, 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.


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.


__call__(coords1, coords2)
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

Previous topic


Next topic