1 // Copyright (c) 2016, Novartis Institutes for BioMedical Research Inc.
2 // All rights reserved.
3 //
4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions are
6 // met:
7 //
8 // * Redistributions of source code must retain the above copyright
9 // notice, this list of conditions and the following disclaimer.
10 // * Redistributions in binary form must reproduce the above
11 // copyright notice, this list of conditions and the following
12 // disclaimer in the documentation and/or other materials provided
13 // with the distribution.
14 // * Neither the name of Novartis Institutes for BioMedical Research Inc.
15 // nor the names of its contributors may be used to endorse or promote
16 // products derived from this software without specific prior written
17 // permission.
18 //
19 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 //
31 #include <RDGeneral/test.h>
32 #include "RDFreeSASA.h"
33
34 #include <GraphMol/RDKitBase.h>
35 #include <GraphMol/QueryAtom.h>
36 #include <GraphMol/SmilesParse/SmilesParse.h>
37 #include <GraphMol/FileParsers/FileParsers.h>
38
39 using namespace RDKit;
40
41 struct ExpectedClasses {
42 unsigned int idx;
43 int cls;
44 const char *clsname;
45 double radius;
46 };
47
48 ExpectedClasses ExpectedProtor1d3z[] = {
49 {0, 1, "Polar", 1.64}, {1, 0, "Apolar", 1.88},
50 {2, 0, "Apolar", 1.61}, {3, 1, "Polar", 1.42},
51 {4, 0, "Apolar", 1.88}, {5, 0, "Apolar", 1.88},
52 {6, 1, "Polar", 1.77}, {7, 0, "Apolar", 1.88},
53 {8, 1, "Polar", 1.64}, {9, 0, "Apolar", 1.88},
54 {10, 0, "Apolar", 1.61}, {11, 1, "Polar", 1.42},
55 {12, 0, "Apolar", 1.88}, {13, 0, "Apolar", 1.88},
56 {14, 0, "Apolar", 1.61}, {15, 1, "Polar", 1.42},
57 {16, 1, "Polar", 1.64}, {17, 1, "Polar", 1.64},
58 {18, 0, "Apolar", 1.88}, {19, 0, "Apolar", 1.61},
59 {20, 1, "Polar", 1.42}, {21, 0, "Apolar", 1.88},
60 {22, 0, "Apolar", 1.88}, {23, 0, "Apolar", 1.88},
61 {24, 0, "Apolar", 1.88}, {25, 1, "Polar", 1.64},
62 {26, 0, "Apolar", 1.88}, {27, 0, "Apolar", 1.61},
63 {28, 1, "Polar", 1.42}, {29, 0, "Apolar", 1.88},
64 {30, 0, "Apolar", 1.61}, {31, 0, "Apolar", 1.76},
65 {32, 0, "Apolar", 1.76}, {33, 0, "Apolar", 1.76},
66 {34, 0, "Apolar", 1.76}, {35, 0, "Apolar", 1.76},
67 {36, 1, "Polar", 1.64}, {37, 0, "Apolar", 1.88},
68 {38, 0, "Apolar", 1.61}, {39, 1, "Polar", 1.42},
69 {40, 0, "Apolar", 1.88}, {41, 0, "Apolar", 1.88},
70 {42, 0, "Apolar", 1.88}, {43, 1, "Polar", 1.64},
71 {44, 0, "Apolar", 1.88}, {45, 0, "Apolar", 1.61},
72 {46, 1, "Polar", 1.42}, {47, 0, "Apolar", 1.88},
73 {48, 0, "Apolar", 1.88}, {49, 0, "Apolar", 1.88},
74 {50, 0, "Apolar", 1.88}, {51, 1, "Polar", 1.64},
75 {52, 1, "Polar", 1.64}, {53, 0, "Apolar", 1.88},
76 {54, 0, "Apolar", 1.61}, {55, 1, "Polar", 1.42},
77 {56, 0, "Apolar", 1.88}, {57, 1, "Polar", 1.46},
78 {58, 0, "Apolar", 1.88}, {59, 1, "Polar", 1.64},
79 {60, 0, "Apolar", 1.88}, {61, 0, "Apolar", 1.61},
80 {62, 1, "Polar", 1.42}, {63, 0, "Apolar", 1.88},
81 {64, 0, "Apolar", 1.88}, {65, 0, "Apolar", 1.88},
82 {66, 0, "Apolar", 1.88}, {67, 1, "Polar", 1.64},
83 {68, 0, "Apolar", 1.88}, {69, 0, "Apolar", 1.61},
84 {70, 1, "Polar", 1.42}, {71, 0, "Apolar", 1.88},
85 {72, 1, "Polar", 1.46}, {73, 0, "Apolar", 1.88},
86 {74, 1, "Polar", 1.64}, {75, 0, "Apolar", 1.88},
87 {76, 0, "Apolar", 1.61}, {77, 1, "Polar", 1.42},
88 {78, 1, "Polar", 1.64}, {79, 0, "Apolar", 1.88},
89 {80, 0, "Apolar", 1.61}, {81, 1, "Polar", 1.42},
90 {82, 0, "Apolar", 1.88}, {83, 0, "Apolar", 1.88},
91 {84, 0, "Apolar", 1.88}, {85, 0, "Apolar", 1.88},
92 {86, 1, "Polar", 1.64}, {87, 1, "Polar", 1.64},
93 {88, 0, "Apolar", 1.88}, {89, 0, "Apolar", 1.61},
94 {90, 1, "Polar", 1.42}, {91, 0, "Apolar", 1.88},
95 {92, 1, "Polar", 1.46}, {93, 0, "Apolar", 1.88},
96 {94, 1, "Polar", 1.64}, {95, 0, "Apolar", 1.88},
97 {96, 0, "Apolar", 1.61}, {97, 1, "Polar", 1.42},
98 {98, 0, "Apolar", 1.88}, {99, 0, "Apolar", 1.88},
99 {100, 0, "Apolar", 1.88}, {101, 0, "Apolar", 1.88},
100 {102, 1, "Polar", 1.64}, {103, 0, "Apolar", 1.88},
101 {104, 0, "Apolar", 1.61}, {105, 1, "Polar", 1.42},
102 {106, 0, "Apolar", 1.88}, {107, 1, "Polar", 1.46},
103 {108, 0, "Apolar", 1.88}, {109, 1, "Polar", 1.64},
104 {110, 0, "Apolar", 1.88}, {111, 0, "Apolar", 1.61},
105 {112, 1, "Polar", 1.42}, {113, 0, "Apolar", 1.88},
106 {114, 0, "Apolar", 1.88}, {115, 0, "Apolar", 1.88},
107 {116, 0, "Apolar", 1.88}, {117, 1, "Polar", 1.64},
108 {118, 0, "Apolar", 1.88}, {119, 0, "Apolar", 1.61},
109 {120, 1, "Polar", 1.42}, {121, 0, "Apolar", 1.88},
110 {122, 0, "Apolar", 1.88}, {123, 0, "Apolar", 1.61},
111 {124, 1, "Polar", 1.42}, {125, 1, "Polar", 1.46},
112 {126, 1, "Polar", 1.64}, {127, 0, "Apolar", 1.88},
113 {128, 0, "Apolar", 1.61}, {129, 1, "Polar", 1.42},
114 {130, 0, "Apolar", 1.88}, {131, 0, "Apolar", 1.88},
115 {132, 0, "Apolar", 1.88}, {133, 1, "Polar", 1.64},
116 {134, 0, "Apolar", 1.88}, {135, 0, "Apolar", 1.61},
117 {136, 1, "Polar", 1.42}, {137, 0, "Apolar", 1.88},
118 {138, 0, "Apolar", 1.88}, {139, 0, "Apolar", 1.61},
119 {140, 1, "Polar", 1.42}, {141, 1, "Polar", 1.46},
120 {142, 1, "Polar", 1.64}, {143, 0, "Apolar", 1.88},
121 {144, 0, "Apolar", 1.61}, {145, 1, "Polar", 1.42},
122 {146, 0, "Apolar", 1.88}, {147, 0, "Apolar", 1.88},
123 {148, 0, "Apolar", 1.88}, {149, 1, "Polar", 1.64},
124 {150, 0, "Apolar", 1.88}, {151, 0, "Apolar", 1.61},
125 {152, 1, "Polar", 1.42}, {153, 0, "Apolar", 1.88},
126 {154, 1, "Polar", 1.46}, {155, 1, "Polar", 1.64},
127 {156, 0, "Apolar", 1.88}, {157, 0, "Apolar", 1.61},
128 {158, 1, "Polar", 1.42}, {159, 0, "Apolar", 1.88},
129 {160, 0, "Apolar", 1.61}, {161, 1, "Polar", 1.42},
130 {162, 1, "Polar", 1.46}, {163, 1, "Polar", 1.64},
131 {164, 0, "Apolar", 1.88}, {165, 0, "Apolar", 1.61},
132 {166, 1, "Polar", 1.42}, {167, 0, "Apolar", 1.88},
133 {168, 1, "Polar", 1.46}, {169, 0, "Apolar", 1.88},
134 {170, 1, "Polar", 1.64}, {171, 0, "Apolar", 1.88},
135 {172, 0, "Apolar", 1.61}, {173, 1, "Polar", 1.42},
136 {174, 0, "Apolar", 1.88}, {175, 0, "Apolar", 1.88},
137 {176, 0, "Apolar", 1.88}, {177, 0, "Apolar", 1.88},
138 {178, 1, "Polar", 1.64}, {179, 0, "Apolar", 1.88},
139 {180, 0, "Apolar", 1.61}, {181, 1, "Polar", 1.42},
140 {182, 0, "Apolar", 1.88}, {183, 0, "Apolar", 1.88},
141 {184, 0, "Apolar", 1.61}, {185, 1, "Polar", 1.42},
142 {186, 1, "Polar", 1.46}, {187, 1, "Polar", 1.64},
143 {188, 0, "Apolar", 1.88}, {189, 0, "Apolar", 1.61},
144 {190, 1, "Polar", 1.42}, {191, 0, "Apolar", 1.88},
145 {192, 0, "Apolar", 1.61}, {193, 1, "Polar", 1.42},
146 {194, 1, "Polar", 1.64}, {195, 1, "Polar", 1.64},
147 {196, 0, "Apolar", 1.88}, {197, 0, "Apolar", 1.61},
148 {198, 1, "Polar", 1.42}, {199, 0, "Apolar", 1.88},
149 {200, 0, "Apolar", 1.88}, {201, 0, "Apolar", 1.88},
150 {202, 1, "Polar", 1.64}, {203, 0, "Apolar", 1.88},
151 {204, 0, "Apolar", 1.61}, {205, 1, "Polar", 1.42},
152 {206, 0, "Apolar", 1.88}, {207, 0, "Apolar", 1.88},
153 {208, 0, "Apolar", 1.88}, {209, 0, "Apolar", 1.88},
154 {210, 1, "Polar", 1.64}, {211, 1, "Polar", 1.64},
155 {212, 0, "Apolar", 1.88}, {213, 0, "Apolar", 1.61},
156 {214, 1, "Polar", 1.42}, {215, 0, "Apolar", 1.88},
157 {216, 1, "Polar", 1.64}, {217, 0, "Apolar", 1.88},
158 {218, 0, "Apolar", 1.61}, {219, 1, "Polar", 1.42},
159 {220, 0, "Apolar", 1.88}, {221, 0, "Apolar", 1.88},
160 {222, 0, "Apolar", 1.88}, {223, 0, "Apolar", 1.88},
161 {224, 1, "Polar", 1.64}, {225, 1, "Polar", 1.64},
162 {226, 0, "Apolar", 1.88}, {227, 0, "Apolar", 1.61},
163 {228, 1, "Polar", 1.42}, {229, 0, "Apolar", 1.88},
164 {230, 0, "Apolar", 1.88}, {231, 0, "Apolar", 1.88},
165 {232, 0, "Apolar", 1.88}, {233, 1, "Polar", 1.64},
166 {234, 0, "Apolar", 1.88}, {235, 0, "Apolar", 1.61},
167 {236, 1, "Polar", 1.42}, {237, 0, "Apolar", 1.88},
168 {238, 0, "Apolar", 1.88}, {239, 0, "Apolar", 1.61},
169 {240, 1, "Polar", 1.42}, {241, 1, "Polar", 1.64},
170 {242, 1, "Polar", 1.64}, {243, 0, "Apolar", 1.88},
171 {244, 0, "Apolar", 1.61}, {245, 1, "Polar", 1.42},
172 {246, 0, "Apolar", 1.88}, {247, 0, "Apolar", 1.61},
173 {248, 1, "Polar", 1.42}, {249, 1, "Polar", 1.46},
174 {250, 1, "Polar", 1.64}, {251, 0, "Apolar", 1.88},
175 {252, 0, "Apolar", 1.61}, {253, 1, "Polar", 1.42},
176 {254, 0, "Apolar", 1.88}, {255, 0, "Apolar", 1.88},
177 {256, 0, "Apolar", 1.88}, {257, 0, "Apolar", 1.88},
178 {258, 1, "Polar", 1.64}, {259, 1, "Polar", 1.64},
179 {260, 0, "Apolar", 1.88}, {261, 0, "Apolar", 1.61},
180 {262, 1, "Polar", 1.42}, {263, 0, "Apolar", 1.88},
181 {264, 0, "Apolar", 1.88}, {265, 0, "Apolar", 1.61},
182 {266, 1, "Polar", 1.42}, {267, 1, "Polar", 1.46},
183 {268, 1, "Polar", 1.64}, {269, 0, "Apolar", 1.88},
184 {270, 0, "Apolar", 1.61}, {271, 1, "Polar", 1.42},
185 {272, 1, "Polar", 1.64}, {273, 0, "Apolar", 1.88},
186 {274, 0, "Apolar", 1.61}, {275, 1, "Polar", 1.42},
187 {276, 0, "Apolar", 1.88}, {277, 0, "Apolar", 1.88},
188 {278, 0, "Apolar", 1.88}, {279, 0, "Apolar", 1.88},
189 {280, 1, "Polar", 1.64}, {281, 0, "Apolar", 1.88},
190 {282, 0, "Apolar", 1.61}, {283, 1, "Polar", 1.42},
191 {284, 0, "Apolar", 1.88}, {285, 0, "Apolar", 1.88},
192 {286, 0, "Apolar", 1.88}, {287, 1, "Polar", 1.64},
193 {288, 0, "Apolar", 1.88}, {289, 0, "Apolar", 1.61},
194 {290, 1, "Polar", 1.42}, {291, 0, "Apolar", 1.88},
195 {292, 0, "Apolar", 1.88}, {293, 0, "Apolar", 1.88},
196 {294, 1, "Polar", 1.64}, {295, 0, "Apolar", 1.88},
197 {296, 0, "Apolar", 1.61}, {297, 1, "Polar", 1.42},
198 {298, 0, "Apolar", 1.88}, {299, 0, "Apolar", 1.61},
199 {300, 1, "Polar", 1.42}, {301, 1, "Polar", 1.46},
200 {302, 1, "Polar", 1.64}, {303, 0, "Apolar", 1.88},
201 {304, 0, "Apolar", 1.61}, {305, 1, "Polar", 1.42},
202 {306, 0, "Apolar", 1.88}, {307, 0, "Apolar", 1.88},
203 {308, 0, "Apolar", 1.61}, {309, 1, "Polar", 1.42},
204 {310, 1, "Polar", 1.64}, {311, 1, "Polar", 1.64},
205 {312, 0, "Apolar", 1.88}, {313, 0, "Apolar", 1.61},
206 {314, 1, "Polar", 1.42}, {315, 0, "Apolar", 1.88},
207 {316, 0, "Apolar", 1.88}, {317, 0, "Apolar", 1.61},
208 {318, 1, "Polar", 1.42}, {319, 1, "Polar", 1.64},
209 {320, 1, "Polar", 1.64}, {321, 0, "Apolar", 1.88},
210 {322, 0, "Apolar", 1.61}, {323, 1, "Polar", 1.42},
211 {324, 0, "Apolar", 1.88}, {325, 0, "Apolar", 1.88},
212 {326, 0, "Apolar", 1.88}, {327, 1, "Polar", 1.64},
213 {328, 0, "Apolar", 1.61}, {329, 1, "Polar", 1.64},
214 {330, 1, "Polar", 1.64}, {331, 1, "Polar", 1.64},
215 {332, 0, "Apolar", 1.88}, {333, 0, "Apolar", 1.61},
216 {334, 1, "Polar", 1.42}, {335, 0, "Apolar", 1.88},
217 {336, 0, "Apolar", 1.88}, {337, 0, "Apolar", 1.88},
218 {338, 0, "Apolar", 1.88}, {339, 1, "Polar", 1.64},
219 {340, 0, "Apolar", 1.88}, {341, 0, "Apolar", 1.61},
220 {342, 1, "Polar", 1.42}, {343, 0, "Apolar", 1.88},
221 {344, 0, "Apolar", 1.88}, {345, 0, "Apolar", 1.88},
222 {346, 0, "Apolar", 1.88}, {347, 1, "Polar", 1.64},
223 {348, 0, "Apolar", 1.88}, {349, 0, "Apolar", 1.61},
224 {350, 1, "Polar", 1.42}, {351, 0, "Apolar", 1.88},
225 {352, 0, "Apolar", 1.61}, {353, 0, "Apolar", 1.76},
226 {354, 0, "Apolar", 1.76}, {355, 0, "Apolar", 1.76},
227 {356, 0, "Apolar", 1.76}, {357, 0, "Apolar", 1.76},
228 {358, 1, "Polar", 1.64}, {359, 0, "Apolar", 1.88},
229 {360, 0, "Apolar", 1.61}, {361, 1, "Polar", 1.42},
230 {362, 0, "Apolar", 1.88}, {363, 1, "Polar", 1.64},
231 {364, 0, "Apolar", 1.88}, {365, 0, "Apolar", 1.61},
232 {366, 1, "Polar", 1.42}, {367, 1, "Polar", 1.64},
233 {368, 0, "Apolar", 1.88}, {369, 0, "Apolar", 1.61},
234 {370, 1, "Polar", 1.42}, {371, 0, "Apolar", 1.88},
235 {372, 0, "Apolar", 1.88}, {373, 0, "Apolar", 1.88},
236 {374, 0, "Apolar", 1.88}, {375, 1, "Polar", 1.64},
237 {376, 1, "Polar", 1.64}, {377, 0, "Apolar", 1.88},
238 {378, 0, "Apolar", 1.61}, {379, 1, "Polar", 1.42},
239 {380, 0, "Apolar", 1.88}, {381, 0, "Apolar", 1.88},
240 {382, 0, "Apolar", 1.61}, {383, 1, "Polar", 1.42},
241 {384, 1, "Polar", 1.64}, {385, 1, "Polar", 1.64},
242 {386, 0, "Apolar", 1.88}, {387, 0, "Apolar", 1.61},
243 {388, 1, "Polar", 1.42}, {389, 0, "Apolar", 1.88},
244 {390, 0, "Apolar", 1.88}, {391, 0, "Apolar", 1.88},
245 {392, 0, "Apolar", 1.88}, {393, 1, "Polar", 1.64},
246 {394, 0, "Apolar", 1.88}, {395, 0, "Apolar", 1.61},
247 {396, 1, "Polar", 1.42}, {397, 0, "Apolar", 1.88},
248 {398, 0, "Apolar", 1.88}, {399, 0, "Apolar", 1.61},
249 {400, 1, "Polar", 1.42}, {401, 1, "Polar", 1.46},
250 {402, 1, "Polar", 1.64}, {403, 0, "Apolar", 1.88},
251 {404, 0, "Apolar", 1.61}, {405, 1, "Polar", 1.42},
252 {406, 0, "Apolar", 1.88}, {407, 0, "Apolar", 1.61},
253 {408, 1, "Polar", 1.42}, {409, 1, "Polar", 1.46},
254 {410, 1, "Polar", 1.64}, {411, 0, "Apolar", 1.88},
255 {412, 0, "Apolar", 1.61}, {413, 1, "Polar", 1.42},
256 {414, 1, "Polar", 1.64}, {415, 0, "Apolar", 1.88},
257 {416, 0, "Apolar", 1.61}, {417, 1, "Polar", 1.42},
258 {418, 0, "Apolar", 1.88}, {419, 0, "Apolar", 1.88},
259 {420, 0, "Apolar", 1.88}, {421, 1, "Polar", 1.64},
260 {422, 0, "Apolar", 1.61}, {423, 1, "Polar", 1.64},
261 {424, 1, "Polar", 1.64}, {425, 1, "Polar", 1.64},
262 {426, 0, "Apolar", 1.88}, {427, 0, "Apolar", 1.61},
263 {428, 1, "Polar", 1.42}, {429, 0, "Apolar", 1.88},
264 {430, 1, "Polar", 1.46}, {431, 0, "Apolar", 1.88},
265 {432, 1, "Polar", 1.64}, {433, 0, "Apolar", 1.88},
266 {434, 0, "Apolar", 1.61}, {435, 1, "Polar", 1.42},
267 {436, 0, "Apolar", 1.88}, {437, 0, "Apolar", 1.88},
268 {438, 0, "Apolar", 1.88}, {439, 0, "Apolar", 1.88},
269 {440, 1, "Polar", 1.64}, {441, 0, "Apolar", 1.88},
270 {442, 0, "Apolar", 1.61}, {443, 1, "Polar", 1.42},
271 {444, 0, "Apolar", 1.88}, {445, 1, "Polar", 1.46},
272 {446, 1, "Polar", 1.64}, {447, 0, "Apolar", 1.88},
273 {448, 0, "Apolar", 1.61}, {449, 1, "Polar", 1.42},
274 {450, 0, "Apolar", 1.88}, {451, 0, "Apolar", 1.61},
275 {452, 1, "Polar", 1.42}, {453, 1, "Polar", 1.46},
276 {454, 1, "Polar", 1.64}, {455, 0, "Apolar", 1.88},
277 {456, 0, "Apolar", 1.61}, {457, 1, "Polar", 1.42},
278 {458, 0, "Apolar", 1.88}, {459, 0, "Apolar", 1.61},
279 {460, 0, "Apolar", 1.76}, {461, 0, "Apolar", 1.76},
280 {462, 0, "Apolar", 1.76}, {463, 0, "Apolar", 1.76},
281 {464, 0, "Apolar", 1.61}, {465, 1, "Polar", 1.46},
282 {466, 1, "Polar", 1.64}, {467, 0, "Apolar", 1.88},
283 {468, 0, "Apolar", 1.61}, {469, 1, "Polar", 1.42},
284 {470, 0, "Apolar", 1.88}, {471, 0, "Apolar", 1.61},
285 {472, 1, "Polar", 1.42}, {473, 1, "Polar", 1.64},
286 {474, 1, "Polar", 1.64}, {475, 0, "Apolar", 1.88},
287 {476, 0, "Apolar", 1.61}, {477, 1, "Polar", 1.42},
288 {478, 0, "Apolar", 1.88}, {479, 0, "Apolar", 1.88},
289 {480, 0, "Apolar", 1.88}, {481, 0, "Apolar", 1.88},
290 {482, 1, "Polar", 1.64}, {483, 0, "Apolar", 1.88},
291 {484, 0, "Apolar", 1.61}, {485, 1, "Polar", 1.42},
292 {486, 0, "Apolar", 1.88}, {487, 0, "Apolar", 1.88},
293 {488, 0, "Apolar", 1.61}, {489, 1, "Polar", 1.42},
294 {490, 1, "Polar", 1.64}, {491, 1, "Polar", 1.64},
295 {492, 0, "Apolar", 1.88}, {493, 0, "Apolar", 1.61},
296 {494, 1, "Polar", 1.42}, {495, 0, "Apolar", 1.88},
297 {496, 0, "Apolar", 1.88}, {497, 0, "Apolar", 1.88},
298 {498, 0, "Apolar", 1.88}, {499, 1, "Polar", 1.64},
299 {500, 1, "Polar", 1.64}, {501, 0, "Apolar", 1.88},
300 {502, 0, "Apolar", 1.61}, {503, 1, "Polar", 1.42},
301 {504, 0, "Apolar", 1.88}, {505, 0, "Apolar", 1.88},
302 {506, 0, "Apolar", 1.61}, {507, 1, "Polar", 1.42},
303 {508, 1, "Polar", 1.46}, {509, 1, "Polar", 1.64},
304 {510, 0, "Apolar", 1.88}, {511, 0, "Apolar", 1.61},
305 {512, 1, "Polar", 1.42}, {513, 0, "Apolar", 1.88},
306 {514, 1, "Polar", 1.46}, {515, 1, "Polar", 1.64},
307 {516, 0, "Apolar", 1.88}, {517, 0, "Apolar", 1.61},
308 {518, 1, "Polar", 1.42}, {519, 0, "Apolar", 1.88},
309 {520, 1, "Polar", 1.46}, {521, 0, "Apolar", 1.88},
310 {522, 1, "Polar", 1.64}, {523, 0, "Apolar", 1.88},
311 {524, 0, "Apolar", 1.61}, {525, 1, "Polar", 1.42},
312 {526, 0, "Apolar", 1.88}, {527, 0, "Apolar", 1.88},
313 {528, 0, "Apolar", 1.88}, {529, 0, "Apolar", 1.88},
314 {530, 1, "Polar", 1.64}, {531, 0, "Apolar", 1.88},
315 {532, 0, "Apolar", 1.61}, {533, 1, "Polar", 1.42},
316 {534, 0, "Apolar", 1.88}, {535, 0, "Apolar", 1.61},
317 {536, 1, "Polar", 1.64}, {537, 0, "Apolar", 1.76},
318 {538, 0, "Apolar", 1.76}, {539, 1, "Polar", 1.64},
319 {540, 1, "Polar", 1.64}, {541, 0, "Apolar", 1.88},
320 {542, 0, "Apolar", 1.61}, {543, 1, "Polar", 1.42},
321 {544, 0, "Apolar", 1.88}, {545, 0, "Apolar", 1.88},
322 {546, 0, "Apolar", 1.88}, {547, 0, "Apolar", 1.88},
323 {548, 1, "Polar", 1.64}, {549, 0, "Apolar", 1.88},
324 {550, 0, "Apolar", 1.61}, {551, 1, "Polar", 1.42},
325 {552, 0, "Apolar", 1.88}, {553, 0, "Apolar", 1.88},
326 {554, 0, "Apolar", 1.88}, {555, 1, "Polar", 1.64},
327 {556, 0, "Apolar", 1.88}, {557, 0, "Apolar", 1.61},
328 {558, 1, "Polar", 1.42}, {559, 0, "Apolar", 1.88},
329 {560, 0, "Apolar", 1.88}, {561, 0, "Apolar", 1.88},
330 {562, 0, "Apolar", 1.88}, {563, 1, "Polar", 1.64},
331 {564, 0, "Apolar", 1.88}, {565, 0, "Apolar", 1.61},
332 {566, 1, "Polar", 1.42}, {567, 0, "Apolar", 1.88},
333 {568, 0, "Apolar", 1.88}, {569, 0, "Apolar", 1.88},
334 {570, 1, "Polar", 1.64}, {571, 0, "Apolar", 1.61},
335 {572, 1, "Polar", 1.64}, {573, 1, "Polar", 1.64},
336 {574, 1, "Polar", 1.64}, {575, 0, "Apolar", 1.88},
337 {576, 0, "Apolar", 1.61}, {577, 1, "Polar", 1.42},
338 {578, 0, "Apolar", 1.88}, {579, 0, "Apolar", 1.88},
339 {580, 0, "Apolar", 1.88}, {581, 0, "Apolar", 1.88},
340 {582, 1, "Polar", 1.64}, {583, 0, "Apolar", 1.88},
341 {584, 0, "Apolar", 1.61}, {585, 1, "Polar", 1.42},
342 {586, 0, "Apolar", 1.88}, {587, 0, "Apolar", 1.88},
343 {588, 0, "Apolar", 1.88}, {589, 1, "Polar", 1.64},
344 {590, 0, "Apolar", 1.61}, {591, 1, "Polar", 1.64},
345 {592, 1, "Polar", 1.64}, {593, 1, "Polar", 1.64},
346 {594, 0, "Apolar", 1.88}, {595, 0, "Apolar", 1.61},
347 {596, 1, "Polar", 1.42}, {597, 1, "Polar", 1.64},
348 {598, 0, "Apolar", 1.88}, {599, 0, "Apolar", 1.61},
349 {600, 1, "Polar", 1.42}, {601, 1, "Polar", 1.46}};
350
testPDB()351 void testPDB() {
352 BOOST_LOG(rdInfoLog) << "-----------------------\n Testing FreeSASA basics"
353 << std::endl;
354
355 std::string rdbase = getenv("RDBASE");
356 std::string fName = rdbase += "/External/FreeSASA/test_data/1d3z.pdb";
357
358 ROMol *m;
359 {
360 const bool sanitize = true;
361 const bool removeHs = true;
362 m = PDBFileToMol(fName, sanitize, removeHs);
363 }
364
365 std::vector<double> radii;
366 FreeSASA::classifyAtoms(*m, radii);
367 for (ROMol::AtomIterator at = m->beginAtoms(); at != m->endAtoms(); ++at) {
368 Atom *atom = (*at);
369 unsigned int idx = atom->getIdx();
370 TEST_ASSERT(idx == ExpectedProtor1d3z[idx].idx);
371 TEST_ASSERT(atom->getProp<int>(common_properties::Atom::SASAClass) ==
372 ExpectedProtor1d3z[idx].cls);
373 TEST_ASSERT(
374 atom->getProp<std::string>(common_properties::Atom::SASAClassName) ==
375 ExpectedProtor1d3z[idx].clsname);
376 TEST_ASSERT(radii[idx] == ExpectedProtor1d3z[idx].radius);
377 }
378
379 {
380 FreeSASA::SASAOpts opts;
381 opts.algorithm = FreeSASA::SASAOpts::ShrakeRupley;
382 double sasa = FreeSASA::calcSASA(*m, radii, -1, nullptr, opts);
383 TEST_ASSERT(fabs(sasa - 5000.340175) < 1e-5);
384 }
385 {
386 FreeSASA::SASAOpts opts;
387 opts.algorithm = FreeSASA::SASAOpts::ShrakeRupley;
388 opts.probeRadius = 2.0;
389 double sasa = FreeSASA::calcSASA(*m, radii, -1, nullptr, opts);
390 TEST_ASSERT(fabs(sasa - 4977.770911) < 1e-5);
391 }
392
393 delete m;
394 {
395 const bool sanitize = false;
396 const bool removeHs = false;
397 m = PDBFileToMol(fName, sanitize, removeHs);
398 }
399 ROMol *mnoh = MolOps::removeHs(*m);
400 FreeSASA::classifyAtoms(*mnoh, radii);
401 {
402 FreeSASA::SASAOpts opts;
403 opts.algorithm = FreeSASA::SASAOpts::ShrakeRupley;
404 double sasa = FreeSASA::calcSASA(*mnoh, radii, -1, nullptr, opts);
405 TEST_ASSERT(fabs(sasa - 5000.340175) < 1e-5);
406 }
407 {
408 FreeSASA::SASAOpts opts;
409 opts.algorithm = FreeSASA::SASAOpts::ShrakeRupley;
410 opts.probeRadius = 2.0;
411 double sasa = FreeSASA::calcSASA(*mnoh, radii, -1, nullptr, opts);
412 TEST_ASSERT(fabs(sasa - 4977.770911) < 1e-5);
413 }
414
415 const QueryAtom *apolar = FreeSASA::makeFreeSasaAPolarAtomQuery();
416 const QueryAtom *polar = FreeSASA::makeFreeSasaPolarAtomQuery();
417 {
418 FreeSASA::SASAOpts opts;
419 opts.algorithm = FreeSASA::SASAOpts::ShrakeRupley;
420 double apolard = FreeSASA::calcSASA(*mnoh, radii, -1, apolar, opts);
421 double polard = FreeSASA::calcSASA(*mnoh, radii, -1, polar, opts);
422 std::cerr << " polar " << polard << std::endl;
423 std::cerr << " apolar " << apolard << std::endl;
424 TEST_ASSERT(fabs(polard + apolard - 5000.340175) < 1e-5);
425 }
426
427 delete polar;
428 delete apolar;
429 delete m;
430 delete mnoh;
431
432 BOOST_LOG(rdInfoLog) << "Done" << std::endl;
433 }
434
main()435 int main() {
436 RDLog::InitLogs();
437 testPDB();
438 }
439