Diff of /tests/test_shape.py [000000] .. [3b722e]

Switch to side-by-side view

--- a
+++ b/tests/test_shape.py
@@ -0,0 +1,166 @@
+import os
+import numpy as np
+from numpy.testing import assert_array_almost_equal, assert_almost_equal
+import oddt
+from oddt.shape import usr, usr_cat, electroshape, usr_similarity
+
+test_data_dir = os.path.dirname(os.path.abspath(__file__))
+benzene_sdf = """
+     RDKit          3D
+
+  6  6  0  0  0  0  0  0  0  0999 V2000
+   -1.0971    0.8220    0.2458 C   0  0  0  0  0  0  0  0  0  0  0  0
+    0.1708    1.3788    0.0966 C   0  0  0  0  0  0  0  0  0  0  0  0
+    1.2678    0.5568   -0.1492 C   0  0  0  0  0  0  0  0  0  0  0  0
+    1.0971   -0.8220   -0.2458 C   0  0  0  0  0  0  0  0  0  0  0  0
+   -0.1708   -1.3788   -0.0966 C   0  0  0  0  0  0  0  0  0  0  0  0
+   -1.2678   -0.5568    0.1491 C   0  0  0  0  0  0  0  0  0  0  0  0
+  1  2  2  0
+  2  3  1  0
+  3  4  2  0
+  4  5  1  0
+  5  6  2  0
+  6  1  1  0
+M  END
+
+"""
+methylo_sdf = """
+     RDKit          3D
+
+  7  7  0  0  0  0  0  0  0  0999 V2000
+    0.2879   -1.1465    0.0728 C   0  0  0  0  0  0  0  0  0  0  0  0
+   -1.0997   -1.1111    0.1887 C   0  0  0  0  0  0  0  0  0  0  0  0
+   -1.7974    0.0457   -0.1502 C   0  0  0  0  0  0  0  0  0  0  0  0
+   -1.1081    1.1672   -0.6050 C   0  0  0  0  0  0  0  0  0  0  0  0
+    0.2795    1.1321   -0.7210 C   0  0  0  0  0  0  0  0  0  0  0  0
+    0.9778   -0.0249   -0.3821 C   0  0  0  0  0  0  0  0  0  0  0  0
+    2.4600   -0.0625   -0.5059 C   0  0  0  0  0  0  0  0  0  0  0  0
+  1  2  2  0
+  2  3  1  0
+  3  4  2  0
+  4  5  1  0
+  5  6  2  0
+  6  7  1  0
+  6  1  1  0
+M  END
+
+"""
+benzene = oddt.toolkit.readstring('sdf', benzene_sdf)
+benzene.calccharges()
+methylo = oddt.toolkit.readstring('sdf', methylo_sdf)
+methylo.calccharges()
+
+
+def test_usr():
+    """USR test"""
+    benzene_usr = np.array((1.392709, 0., 0.,
+                            1.732536, 0.877535, -0.580651,
+                            1.732576, 0.877555, -0.580693,
+                            1.732573, 0.877552, -0.580686))
+    methylo_usr = np.array((1.57291, 0.20536, 0.064638,
+                            1.697949, 0.759765, -0.420457,
+                            2.614764, 1.94016, -1.660038,
+                            2.095664, 1.54289, 0.117823))
+
+    assert_array_almost_equal(usr(benzene), benzene_usr)
+    assert_array_almost_equal(usr(methylo), methylo_usr)
+
+
+def test_usr_cat():
+    """USRCAT test"""
+    benzene_usrcat = np.array((1.392709, 0., 0.,
+                               1.732536, 0.877535, -0.580651,
+                               1.732576, 0.877555, -0.580693,
+                               1.732573, 0.877552, -0.580686,
+                               1.392709, 0., 0.,
+                               1.732536, 0.877535, -0.580651,
+                               1.732576, 0.877555, -0.580693,
+                               1.732573, 0.877552, -0.580686,
+                               1.392709, 0., 0.,
+                               1.732536, 0.877535, -0.580651,
+                               1.732576, 0.877555, -0.580693,
+                               1.732573, 0.877552, -0.580686,
+                               0., 0., 0.,
+                               0., 0., 0.,
+                               0., 0., 0.,
+                               0., 0., 0.,
+                               0., 0., 0.,
+                               0., 0., 0.,
+                               0., 0., 0.,
+                               0., 0., 0.))
+    methylo_usrcat = np.array((1.57291, 0.20536, 0.064638,
+                               1.697949, 0.759765, -0.420457,
+                               2.614764, 1.94016, -1.660038,
+                               2.095664, 1.54289, 0.117823,
+                               1.57291, 0.20536, 0.064638,
+                               1.697949, 0.759765, -0.420457,
+                               2.614764, 1.94016, -1.660038,
+                               2.095664, 1.54289, 0.117823,
+                               1.423502, 0.083326, -0.003973,
+                               1.732968, 0.877809, -0.58125,
+                               3.050558, 0.934105, -0.26119,
+                               1.732674, 0.877707, -0.58073,
+                               0., 0., 0.,
+                               0., 0., 0.,
+                               0., 0., 0.,
+                               0., 0., 0.,
+                               0., 0., 0.,
+                               0., 0., 0.,
+                               0., 0., 0.,
+                               0., 0., 0.))
+
+    assert_array_almost_equal(usr_cat(benzene), benzene_usrcat)
+    assert_array_almost_equal(usr_cat(methylo), methylo_usrcat)
+
+
+def test_electroshape():
+    """Electroshape test"""
+    if oddt.toolkit.backend == 'rdk':
+        benzene_usr = np.array((1.392709, 0.000024, 0.000021,
+                                1.732576, 0.936779, -0.834287,
+                                1.732573, 0.936777, -0.834284,
+                                1.482042, 0.477624, -0.293458,
+                                1.482042, 0.477624, -0.293458))
+        methylo_usr = np.array((1.58227, 0.461717, 0.417984,
+                                2.649053, 1.404615, -1.20629,
+                                2.103215, 1.252546, 0.544395,
+                                2.009275, 0.651085, -0.488366,
+                                1.955503, 0.693917, -0.521708))
+    else:
+        benzene_usr = np.array((1.39270878, 0.000023678, 0.0000208289,
+                                1.73257649, 0.936778843, -0.834286869,
+                                1.73257256, 0.936777234, -0.834283948,
+                                1.48204167, 0.477623908, -0.293458485,
+                                1.48204167, 0.477623908, -0.293458485))
+        methylo_usr = np.array((1.61146379, 0.46305567, 0.46938854,
+                                2.76274943, 1.37034833, -1.2889241,
+                                2.11388564, 1.2641263, 0.57394201,
+                                2.18083588, 0.57593416, -0.48947371,
+                                2.06548012, 0.71989938, -0.44118673))
+
+    assert_array_almost_equal(electroshape(benzene), benzene_usr)
+    assert_array_almost_equal(electroshape(methylo), methylo_usr)
+
+
+def test_usr_similarity():
+    """Similarity function for USR test"""
+    similarity_usr = 0.68517293875665453
+    assert_almost_equal(usr_similarity(usr(benzene), usr(methylo)), similarity_usr)
+
+
+def test_usrcat_similarity():
+    """Similarity function for USRCAT test"""
+    similarity_usrcat = 0.82370755989115707
+    assert_almost_equal(usr_similarity(usr_cat(benzene), usr_cat(methylo)),
+                        similarity_usrcat)
+
+
+def test_elecroshape_similarity():
+    """Similarity function for Electroshape test"""
+    if oddt.toolkit.backend == 'rdk':
+        similarity_electroshape = 0.69110953340712389
+    else:
+        similarity_electroshape = 0.67710967360721197
+
+    assert_almost_equal(usr_similarity(electroshape(benzene), electroshape(methylo)),
+                        similarity_electroshape)