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

Switch to unified view

a b/tests/test_shape.py
1
import os
2
import numpy as np
3
from numpy.testing import assert_array_almost_equal, assert_almost_equal
4
import oddt
5
from oddt.shape import usr, usr_cat, electroshape, usr_similarity
6
7
test_data_dir = os.path.dirname(os.path.abspath(__file__))
8
benzene_sdf = """
9
     RDKit          3D
10
11
  6  6  0  0  0  0  0  0  0  0999 V2000
12
   -1.0971    0.8220    0.2458 C   0  0  0  0  0  0  0  0  0  0  0  0
13
    0.1708    1.3788    0.0966 C   0  0  0  0  0  0  0  0  0  0  0  0
14
    1.2678    0.5568   -0.1492 C   0  0  0  0  0  0  0  0  0  0  0  0
15
    1.0971   -0.8220   -0.2458 C   0  0  0  0  0  0  0  0  0  0  0  0
16
   -0.1708   -1.3788   -0.0966 C   0  0  0  0  0  0  0  0  0  0  0  0
17
   -1.2678   -0.5568    0.1491 C   0  0  0  0  0  0  0  0  0  0  0  0
18
  1  2  2  0
19
  2  3  1  0
20
  3  4  2  0
21
  4  5  1  0
22
  5  6  2  0
23
  6  1  1  0
24
M  END
25
26
"""
27
methylo_sdf = """
28
     RDKit          3D
29
30
  7  7  0  0  0  0  0  0  0  0999 V2000
31
    0.2879   -1.1465    0.0728 C   0  0  0  0  0  0  0  0  0  0  0  0
32
   -1.0997   -1.1111    0.1887 C   0  0  0  0  0  0  0  0  0  0  0  0
33
   -1.7974    0.0457   -0.1502 C   0  0  0  0  0  0  0  0  0  0  0  0
34
   -1.1081    1.1672   -0.6050 C   0  0  0  0  0  0  0  0  0  0  0  0
35
    0.2795    1.1321   -0.7210 C   0  0  0  0  0  0  0  0  0  0  0  0
36
    0.9778   -0.0249   -0.3821 C   0  0  0  0  0  0  0  0  0  0  0  0
37
    2.4600   -0.0625   -0.5059 C   0  0  0  0  0  0  0  0  0  0  0  0
38
  1  2  2  0
39
  2  3  1  0
40
  3  4  2  0
41
  4  5  1  0
42
  5  6  2  0
43
  6  7  1  0
44
  6  1  1  0
45
M  END
46
47
"""
48
benzene = oddt.toolkit.readstring('sdf', benzene_sdf)
49
benzene.calccharges()
50
methylo = oddt.toolkit.readstring('sdf', methylo_sdf)
51
methylo.calccharges()
52
53
54
def test_usr():
55
    """USR test"""
56
    benzene_usr = np.array((1.392709, 0., 0.,
57
                            1.732536, 0.877535, -0.580651,
58
                            1.732576, 0.877555, -0.580693,
59
                            1.732573, 0.877552, -0.580686))
60
    methylo_usr = np.array((1.57291, 0.20536, 0.064638,
61
                            1.697949, 0.759765, -0.420457,
62
                            2.614764, 1.94016, -1.660038,
63
                            2.095664, 1.54289, 0.117823))
64
65
    assert_array_almost_equal(usr(benzene), benzene_usr)
66
    assert_array_almost_equal(usr(methylo), methylo_usr)
67
68
69
def test_usr_cat():
70
    """USRCAT test"""
71
    benzene_usrcat = np.array((1.392709, 0., 0.,
72
                               1.732536, 0.877535, -0.580651,
73
                               1.732576, 0.877555, -0.580693,
74
                               1.732573, 0.877552, -0.580686,
75
                               1.392709, 0., 0.,
76
                               1.732536, 0.877535, -0.580651,
77
                               1.732576, 0.877555, -0.580693,
78
                               1.732573, 0.877552, -0.580686,
79
                               1.392709, 0., 0.,
80
                               1.732536, 0.877535, -0.580651,
81
                               1.732576, 0.877555, -0.580693,
82
                               1.732573, 0.877552, -0.580686,
83
                               0., 0., 0.,
84
                               0., 0., 0.,
85
                               0., 0., 0.,
86
                               0., 0., 0.,
87
                               0., 0., 0.,
88
                               0., 0., 0.,
89
                               0., 0., 0.,
90
                               0., 0., 0.))
91
    methylo_usrcat = np.array((1.57291, 0.20536, 0.064638,
92
                               1.697949, 0.759765, -0.420457,
93
                               2.614764, 1.94016, -1.660038,
94
                               2.095664, 1.54289, 0.117823,
95
                               1.57291, 0.20536, 0.064638,
96
                               1.697949, 0.759765, -0.420457,
97
                               2.614764, 1.94016, -1.660038,
98
                               2.095664, 1.54289, 0.117823,
99
                               1.423502, 0.083326, -0.003973,
100
                               1.732968, 0.877809, -0.58125,
101
                               3.050558, 0.934105, -0.26119,
102
                               1.732674, 0.877707, -0.58073,
103
                               0., 0., 0.,
104
                               0., 0., 0.,
105
                               0., 0., 0.,
106
                               0., 0., 0.,
107
                               0., 0., 0.,
108
                               0., 0., 0.,
109
                               0., 0., 0.,
110
                               0., 0., 0.))
111
112
    assert_array_almost_equal(usr_cat(benzene), benzene_usrcat)
113
    assert_array_almost_equal(usr_cat(methylo), methylo_usrcat)
114
115
116
def test_electroshape():
117
    """Electroshape test"""
118
    if oddt.toolkit.backend == 'rdk':
119
        benzene_usr = np.array((1.392709, 0.000024, 0.000021,
120
                                1.732576, 0.936779, -0.834287,
121
                                1.732573, 0.936777, -0.834284,
122
                                1.482042, 0.477624, -0.293458,
123
                                1.482042, 0.477624, -0.293458))
124
        methylo_usr = np.array((1.58227, 0.461717, 0.417984,
125
                                2.649053, 1.404615, -1.20629,
126
                                2.103215, 1.252546, 0.544395,
127
                                2.009275, 0.651085, -0.488366,
128
                                1.955503, 0.693917, -0.521708))
129
    else:
130
        benzene_usr = np.array((1.39270878, 0.000023678, 0.0000208289,
131
                                1.73257649, 0.936778843, -0.834286869,
132
                                1.73257256, 0.936777234, -0.834283948,
133
                                1.48204167, 0.477623908, -0.293458485,
134
                                1.48204167, 0.477623908, -0.293458485))
135
        methylo_usr = np.array((1.61146379, 0.46305567, 0.46938854,
136
                                2.76274943, 1.37034833, -1.2889241,
137
                                2.11388564, 1.2641263, 0.57394201,
138
                                2.18083588, 0.57593416, -0.48947371,
139
                                2.06548012, 0.71989938, -0.44118673))
140
141
    assert_array_almost_equal(electroshape(benzene), benzene_usr)
142
    assert_array_almost_equal(electroshape(methylo), methylo_usr)
143
144
145
def test_usr_similarity():
146
    """Similarity function for USR test"""
147
    similarity_usr = 0.68517293875665453
148
    assert_almost_equal(usr_similarity(usr(benzene), usr(methylo)), similarity_usr)
149
150
151
def test_usrcat_similarity():
152
    """Similarity function for USRCAT test"""
153
    similarity_usrcat = 0.82370755989115707
154
    assert_almost_equal(usr_similarity(usr_cat(benzene), usr_cat(methylo)),
155
                        similarity_usrcat)
156
157
158
def test_elecroshape_similarity():
159
    """Similarity function for Electroshape test"""
160
    if oddt.toolkit.backend == 'rdk':
161
        similarity_electroshape = 0.69110953340712389
162
    else:
163
        similarity_electroshape = 0.67710967360721197
164
165
    assert_almost_equal(usr_similarity(electroshape(benzene), electroshape(methylo)),
166
                        similarity_electroshape)