diff --git a/src/geomtree/geomtree.py b/src/geomtree/geomtree.py index 69f429af3b3fa39ef329506451179da2c4753759..c6067b390ea2f9f9a4f117656e85c523efef2703 100644 --- a/src/geomtree/geomtree.py +++ b/src/geomtree/geomtree.py @@ -94,8 +94,7 @@ def align_centers(t1,t2,tree_type="unordered", rmsd=True): """ If the two trees are isomorphic, find the best alignment of centers of the two trees via Kabsch algorithm """ - if not t1.is_isomorphic_to(t2, tree_type): - raise Exception("Trees are not isomorphic") + assert t1.is_isomorphic_to(t2, tree_type), "Trees are not isomorphic" geom1 = t1.get_geometry() geom2 = t2.get_geometry() @@ -106,7 +105,7 @@ def align_centers(t1,t2,tree_type="unordered", rmsd=True): q = np.array([geom2[k].translation for k in geom2.keys()]) if rmsd: - print("RMSD before processing : ", np.linalg.norm(p - q) ** 2) + print("RMSD before processing : ", np.linalg.norm(p - q)/np.sqrt(len(p))) cp = t1.my_absolute_geometry.translation cq = t2.my_absolute_geometry.translation @@ -114,14 +113,14 @@ def align_centers(t1,t2,tree_type="unordered", rmsd=True): q = q - cq if rmsd: - print("RMSD after root alignment : ", np.linalg.norm(p - q) ** 2) + print("RMSD after root alignment : ", np.linalg.norm(p - q)/np.sqrt(len(p))) U, _, V = svd(p.transpose() @ q) R = U @ np.diag([1, 1, np.sign(det(U @ V))]) @ V q = np.transpose(R @ q.transpose()) if rmsd: - print("RMSD after optimal rotation : ", np.linalg.norm(p - q) ** 2) + print("RMSD after optimal rotation : ", np.linalg.norm(p - q)/np.sqrt(len(p))) tf = AffineTransform() tf.set_parameters(linear=R, translation=cp - R @ cq) @@ -129,8 +128,8 @@ def align_centers(t1,t2,tree_type="unordered", rmsd=True): return tf, np.linalg.norm(p - q) ** 2 def tree_hellinger_distance(t1,t2,tree_type="unordered",relative=[False,False]): - if not t1.is_isomorphic_to(t2, tree_type): - raise Exception("Trees are not isomorphic") + + assert t1.is_isomorphic_to(t2, tree_type), "Trees are not isomorphic" geomu = t1.get_geometry(relative=relative[0]) geomv = t2.get_geometry(relative=relative[1])