diff --git a/src/BioHelpers_FABER/rmsd.py b/src/BioHelpers_FABER/rmsd.py index 2a066e356f721825efeba64c7e536f7757a4d5df..5f4281de5486f6f2e2aa50381794861c98ae751e 100644 --- a/src/BioHelpers_FABER/rmsd.py +++ b/src/BioHelpers_FABER/rmsd.py @@ -117,10 +117,10 @@ def rmsd_from_rot_tran( :return: RMSD like value (:math:`\sqrt{E}`) :rtype: float """ - print(trans.shape) - print(np.matmul(rot, x).shape, y.shape) - - return 0.0 + num_vec = x.shape[1] + intermediate = np.matmul(rot, x) + trans[:, np.newaxis] + y + squared = np.trace(np.matmul(np.transpose(intermediate), intermediate)) / num_vec + return np.sqrt(squared) def rmsd(x: np.ndarray, y: np.ndarray) -> float: @@ -220,9 +220,9 @@ def rmsd_per_residue(file1: str, file2: str) -> list[float]: res2_AA = [list(a.get_vector()) for a in res2.get_atoms()] res1_AA = np.transpose(np.array(res1_AA)) res2_AA = np.transpose(np.array(res2_AA)) - rmsd_from_rot_tran(res1_AA, res2_AA, rot, trans) + values.append(rmsd_from_rot_tran(res1_AA, res2_AA, rot, trans)) - return [0.0] + return values if __name__ == "__main__": diff --git a/test_rmsd.py b/test_rmsd.py index d42a0a51b5e783c9b7a96a07cb3fadc8e58ec1cc..32a194c8491a8e1e6b7facf4292a69b98c5faaf8 100644 --- a/test_rmsd.py +++ b/test_rmsd.py @@ -32,7 +32,6 @@ def main(): rot, tran = sup.get_rotran() # rmsd per residue print(rmsd.rmsd_per_residue(file1, file2)) - print("Hallo Welt", val, val2) if __name__ == "__main__":