spyrmsd.hungarian module

spyrmsd.hungarian.cost_mtx(A: ndarray, B: ndarray)[source]

Compute the cost matrix for atom-atom assignment.

Parameters:
  • A (numpy.ndarray) – Atomic coordinates of molecule A

  • B (numpy.ndarray) – Atomic coordinates of molecule B

Returns:

Cost matrix of squared atomic distances between atoms of molecules A and B

Return type:

np.ndarray

spyrmsd.hungarian.hungarian_rmsd(A: ndarray, B: ndarray, apropsA: ndarray, apropsB: ndarray) float[source]

Solve the optimal assignment problems between atomic coordinates of molecules A and B.

Parameters:
  • A (numpy.ndarray) – Atomic coordinates of molecule A

  • B (numpy.ndarray) – Atomic coordinates of molecule B

  • apropsA (numpy.ndarray) – Atomic properties of molecule A

  • apropsB (numpy.ndarray) – Atomic properties of molecule B

Returns:

RMSD computed with the Hungarian method

Return type:

float

Notes

The Hungarian algorithm is used to solve the linear assignment problem, which is a minimum weight matching of the molecular graphs (bipartite).

The linear assignment problem is solved for every element separately. [1]

spyrmsd.hungarian.optimal_assignment(A: ndarray, B: ndarray)[source]

Solve the optimal assignment problems between atomic coordinates of molecules A and B.

Parameters:
  • A (numpy.ndarray) – Atomic coordinates of molecule A

  • B (numpy.ndarray) – Atomic coordinates of molecule B

Returns:

Cost of the optimal assignment, together with the row and column indices of said assignment

Return type:

Tuple[float, nd.array, nd.array]