bentopy 0.2.0a10__cp313-cp313-manylinux_2_34_x86_64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- bentopy-0.2.0a10.data/scripts/bentopy-init +0 -0
- bentopy-0.2.0a10.data/scripts/bentopy-pack +0 -0
- bentopy-0.2.0a10.data/scripts/bentopy-render +0 -0
- bentopy-0.2.0a10.data/scripts/bentopy-solvate +0 -0
- bentopy-0.2.0a10.dist-info/METADATA +358 -0
- bentopy-0.2.0a10.dist-info/RECORD +58 -0
- bentopy-0.2.0a10.dist-info/WHEEL +5 -0
- bentopy-0.2.0a10.dist-info/entry_points.txt +4 -0
- bentopy-0.2.0a10.dist-info/licenses/LICENSE.txt +13 -0
- bentopy-0.2.0a10.dist-info/top_level.txt +8 -0
- check/check.py +128 -0
- core/config/bent/lexer.rs +338 -0
- core/config/bent/parser.rs +1180 -0
- core/config/bent/writer.rs +205 -0
- core/config/bent.rs +149 -0
- core/config/compartment_combinations.rs +300 -0
- core/config/legacy.rs +768 -0
- core/config.rs +362 -0
- core/mod.rs +4 -0
- core/placement.rs +100 -0
- core/utilities.rs +1 -0
- core/version.rs +32 -0
- init/example.bent +74 -0
- init/main.rs +235 -0
- mask/config.py +153 -0
- mask/mask.py +308 -0
- mask/utilities.py +38 -0
- merge/merge.py +175 -0
- pack/args.rs +77 -0
- pack/main.rs +121 -0
- pack/mask.rs +940 -0
- pack/session.rs +176 -0
- pack/state/combinations.rs +31 -0
- pack/state/compartment.rs +44 -0
- pack/state/mask.rs +196 -0
- pack/state/pack.rs +187 -0
- pack/state/segment.rs +72 -0
- pack/state/space.rs +98 -0
- pack/state.rs +440 -0
- pack/structure.rs +185 -0
- pack/voxelize.rs +85 -0
- render/args.rs +109 -0
- render/limits.rs +73 -0
- render/main.rs +12 -0
- render/render.rs +393 -0
- render/structure.rs +264 -0
- solvate/args.rs +324 -0
- solvate/convert.rs +25 -0
- solvate/cookies.rs +185 -0
- solvate/main.rs +177 -0
- solvate/placement.rs +380 -0
- solvate/solvate.rs +244 -0
- solvate/structure.rs +160 -0
- solvate/substitute.rs +113 -0
- solvate/water/martini.rs +409 -0
- solvate/water/models.rs +150 -0
- solvate/water/tip3p.rs +658 -0
- solvate/water.rs +115 -0
solvate/water/martini.rs
ADDED
|
@@ -0,0 +1,409 @@
|
|
|
1
|
+
/// From the standard Martini water box.
|
|
2
|
+
#[allow(clippy::approx_constant)]
|
|
3
|
+
pub const MARTINI: WaterBox<400, 1> = WaterBox::new(
|
|
4
|
+
"W",
|
|
5
|
+
["W"],
|
|
6
|
+
Vec3::new(3.64428, 3.64428, 3.64428),
|
|
7
|
+
[
|
|
8
|
+
Vec3::new(0.084, 3.595, 3.359),
|
|
9
|
+
Vec3::new(0.460, 2.488, 2.882),
|
|
10
|
+
Vec3::new(3.165, 2.218, 0.652),
|
|
11
|
+
Vec3::new(3.295, 3.303, 2.679),
|
|
12
|
+
Vec3::new(1.213, 3.294, 0.205),
|
|
13
|
+
Vec3::new(1.296, 1.446, 1.188),
|
|
14
|
+
Vec3::new(0.811, 1.294, 1.352),
|
|
15
|
+
Vec3::new(1.802, 2.109, 0.786),
|
|
16
|
+
Vec3::new(1.477, 3.201, 3.141),
|
|
17
|
+
Vec3::new(0.126, 0.762, 3.104),
|
|
18
|
+
Vec3::new(0.888, 0.042, 2.906),
|
|
19
|
+
Vec3::new(2.582, 0.430, 1.793),
|
|
20
|
+
Vec3::new(2.231, 1.301, 0.363),
|
|
21
|
+
Vec3::new(2.801, 0.735, 3.454),
|
|
22
|
+
Vec3::new(0.167, 0.527, 2.579),
|
|
23
|
+
Vec3::new(0.266, 3.146, 3.600),
|
|
24
|
+
Vec3::new(1.788, 2.536, 0.332),
|
|
25
|
+
Vec3::new(0.220, 1.319, 2.025),
|
|
26
|
+
Vec3::new(1.113, 1.210, 3.262),
|
|
27
|
+
Vec3::new(3.572, 1.069, 1.761),
|
|
28
|
+
Vec3::new(3.336, 2.112, 2.620),
|
|
29
|
+
Vec3::new(1.644, 1.445, 1.647),
|
|
30
|
+
Vec3::new(2.190, 2.784, 2.016),
|
|
31
|
+
Vec3::new(0.690, 2.218, 2.248),
|
|
32
|
+
Vec3::new(0.049, 1.746, 1.819),
|
|
33
|
+
Vec3::new(1.085, 1.718, 3.011),
|
|
34
|
+
Vec3::new(3.356, 1.501, 3.265),
|
|
35
|
+
Vec3::new(0.972, 2.945, 1.710),
|
|
36
|
+
Vec3::new(2.093, 2.634, 2.844),
|
|
37
|
+
Vec3::new(1.313, 1.274, 2.069),
|
|
38
|
+
Vec3::new(1.605, 2.058, 1.712),
|
|
39
|
+
Vec3::new(2.602, 2.831, 3.560),
|
|
40
|
+
Vec3::new(1.681, 2.151, 3.570),
|
|
41
|
+
Vec3::new(1.662, 1.867, 3.048),
|
|
42
|
+
Vec3::new(0.071, 1.258, 3.570),
|
|
43
|
+
Vec3::new(2.903, 2.793, 3.169),
|
|
44
|
+
Vec3::new(0.484, 0.375, 1.167),
|
|
45
|
+
Vec3::new(1.011, 2.633, 2.166),
|
|
46
|
+
Vec3::new(3.474, 2.416, 1.456),
|
|
47
|
+
Vec3::new(2.887, 0.816, 2.023),
|
|
48
|
+
Vec3::new(3.172, 0.769, 0.118),
|
|
49
|
+
Vec3::new(3.637, 1.570, 2.424),
|
|
50
|
+
Vec3::new(1.604, 3.277, 2.177),
|
|
51
|
+
Vec3::new(3.378, 2.743, 0.615),
|
|
52
|
+
Vec3::new(0.507, 3.529, 0.369),
|
|
53
|
+
Vec3::new(0.900, 3.575, 1.045),
|
|
54
|
+
Vec3::new(0.697, 0.329, 2.471),
|
|
55
|
+
Vec3::new(3.320, 1.347, 2.746),
|
|
56
|
+
Vec3::new(2.725, 1.769, 1.205),
|
|
57
|
+
Vec3::new(2.691, 1.457, 0.232),
|
|
58
|
+
Vec3::new(1.899, 2.601, 2.372),
|
|
59
|
+
Vec3::new(1.705, 0.931, 1.571),
|
|
60
|
+
Vec3::new(2.305, 3.018, 2.565),
|
|
61
|
+
Vec3::new(3.176, 1.809, 0.987),
|
|
62
|
+
Vec3::new(2.078, 0.467, 1.003),
|
|
63
|
+
Vec3::new(0.735, 3.161, 0.686),
|
|
64
|
+
Vec3::new(0.106, 0.660, 1.285),
|
|
65
|
+
Vec3::new(2.892, 1.267, 1.759),
|
|
66
|
+
Vec3::new(0.350, 2.884, 1.674),
|
|
67
|
+
Vec3::new(1.691, 3.234, 0.544),
|
|
68
|
+
Vec3::new(3.083, 1.260, 0.008),
|
|
69
|
+
Vec3::new(0.106, 3.018, 2.172),
|
|
70
|
+
Vec3::new(0.897, 2.590, 2.652),
|
|
71
|
+
Vec3::new(1.270, 1.950, 1.271),
|
|
72
|
+
Vec3::new(1.292, 0.355, 2.364),
|
|
73
|
+
Vec3::new(3.521, 0.117, 1.661),
|
|
74
|
+
Vec3::new(0.740, 1.989, 0.129),
|
|
75
|
+
Vec3::new(0.395, 1.022, 0.308),
|
|
76
|
+
Vec3::new(0.457, 2.978, 1.102),
|
|
77
|
+
Vec3::new(1.588, 2.461, 1.350),
|
|
78
|
+
Vec3::new(2.920, 3.320, 3.064),
|
|
79
|
+
Vec3::new(1.846, 0.962, 0.748),
|
|
80
|
+
Vec3::new(3.229, 3.360, 1.520),
|
|
81
|
+
Vec3::new(2.906, 1.213, 3.118),
|
|
82
|
+
Vec3::new(3.619, 2.869, 1.252),
|
|
83
|
+
Vec3::new(2.246, 2.161, 2.736),
|
|
84
|
+
Vec3::new(0.012, 1.712, 0.942),
|
|
85
|
+
Vec3::new(1.123, 2.127, 2.515),
|
|
86
|
+
Vec3::new(2.327, 1.391, 0.893),
|
|
87
|
+
Vec3::new(2.204, 1.881, 0.997),
|
|
88
|
+
Vec3::new(0.547, 1.301, 2.471),
|
|
89
|
+
Vec3::new(0.532, 1.177, 3.393),
|
|
90
|
+
Vec3::new(0.422, 0.094, 1.552),
|
|
91
|
+
Vec3::new(2.190, 0.441, 2.113),
|
|
92
|
+
Vec3::new(1.838, 0.626, 3.276),
|
|
93
|
+
Vec3::new(2.193, 0.775, 0.454),
|
|
94
|
+
Vec3::new(3.376, 3.168, 3.208),
|
|
95
|
+
Vec3::new(2.343, 0.249, 3.247),
|
|
96
|
+
Vec3::new(3.362, 2.550, 3.369),
|
|
97
|
+
Vec3::new(2.792, 0.717, 2.965),
|
|
98
|
+
Vec3::new(2.592, 0.655, 1.235),
|
|
99
|
+
Vec3::new(2.985, 1.789, 3.639),
|
|
100
|
+
Vec3::new(0.725, 3.365, 1.625),
|
|
101
|
+
Vec3::new(1.383, 1.082, 0.611),
|
|
102
|
+
Vec3::new(0.952, 0.366, 3.275),
|
|
103
|
+
Vec3::new(3.004, 0.850, 0.956),
|
|
104
|
+
Vec3::new(3.371, 1.332, 0.901),
|
|
105
|
+
Vec3::new(1.114, 3.549, 3.372),
|
|
106
|
+
Vec3::new(1.040, 0.085, 0.607),
|
|
107
|
+
Vec3::new(3.361, 0.619, 1.642),
|
|
108
|
+
Vec3::new(3.511, 2.868, 0.087),
|
|
109
|
+
Vec3::new(0.418, 2.071, 1.789),
|
|
110
|
+
Vec3::new(2.335, 0.658, 0.019),
|
|
111
|
+
Vec3::new(3.469, 2.990, 1.739),
|
|
112
|
+
Vec3::new(3.508, 0.184, 2.489),
|
|
113
|
+
Vec3::new(1.953, 1.396, 3.043),
|
|
114
|
+
Vec3::new(2.046, 2.735, 0.746),
|
|
115
|
+
Vec3::new(2.446, 2.029, 3.486),
|
|
116
|
+
Vec3::new(2.120, 0.006, 1.795),
|
|
117
|
+
Vec3::new(0.732, 0.909, 1.858),
|
|
118
|
+
Vec3::new(0.286, 2.109, 2.632),
|
|
119
|
+
Vec3::new(2.145, 3.302, 1.338),
|
|
120
|
+
Vec3::new(3.339, 0.899, 2.210),
|
|
121
|
+
Vec3::new(1.976, 3.246, 2.977),
|
|
122
|
+
Vec3::new(3.319, 2.305, 0.182),
|
|
123
|
+
Vec3::new(1.754, 1.788, 1.243),
|
|
124
|
+
Vec3::new(3.606, 0.299, 2.984),
|
|
125
|
+
Vec3::new(1.755, 2.134, 2.578),
|
|
126
|
+
Vec3::new(1.972, 1.020, 2.023),
|
|
127
|
+
Vec3::new(2.824, 1.318, 0.861),
|
|
128
|
+
Vec3::new(3.111, 1.051, 0.503),
|
|
129
|
+
Vec3::new(2.920, 3.091, 0.892),
|
|
130
|
+
Vec3::new(2.754, 2.694, 1.688),
|
|
131
|
+
Vec3::new(2.650, 1.773, 0.666),
|
|
132
|
+
Vec3::new(2.083, 1.983, 1.652),
|
|
133
|
+
Vec3::new(2.964, 1.771, 1.719),
|
|
134
|
+
Vec3::new(0.339, 0.786, 2.143),
|
|
135
|
+
Vec3::new(3.117, 1.838, 2.970),
|
|
136
|
+
Vec3::new(3.468, 3.456, 2.116),
|
|
137
|
+
Vec3::new(1.398, 2.900, 1.518),
|
|
138
|
+
Vec3::new(2.405, 3.433, 2.842),
|
|
139
|
+
Vec3::new(2.399, 0.763, 2.606),
|
|
140
|
+
Vec3::new(1.606, 3.471, 2.667),
|
|
141
|
+
Vec3::new(3.303, 0.425, 1.133),
|
|
142
|
+
Vec3::new(3.094, 1.744, 2.434),
|
|
143
|
+
Vec3::new(0.077, 1.065, 2.472),
|
|
144
|
+
Vec3::new(2.937, 0.860, 1.490),
|
|
145
|
+
Vec3::new(3.348, 1.011, 3.267),
|
|
146
|
+
Vec3::new(2.233, 2.710, 1.485),
|
|
147
|
+
Vec3::new(1.489, 3.301, 1.098),
|
|
148
|
+
Vec3::new(0.604, 0.481, 0.356),
|
|
149
|
+
Vec3::new(1.708, 0.135, 2.166),
|
|
150
|
+
Vec3::new(0.736, 3.255, 0.014),
|
|
151
|
+
Vec3::new(1.110, 1.721, 0.765),
|
|
152
|
+
Vec3::new(1.764, 2.350, 3.078),
|
|
153
|
+
Vec3::new(1.594, 0.708, 1.068),
|
|
154
|
+
Vec3::new(2.950, 0.305, 1.496),
|
|
155
|
+
Vec3::new(2.670, 3.587, 1.824),
|
|
156
|
+
Vec3::new(2.082, 3.235, 2.164),
|
|
157
|
+
Vec3::new(1.478, 2.272, 2.125),
|
|
158
|
+
Vec3::new(3.248, 2.995, 2.251),
|
|
159
|
+
Vec3::new(0.942, 0.498, 1.020),
|
|
160
|
+
Vec3::new(1.464, 2.795, 1.980),
|
|
161
|
+
Vec3::new(0.947, 0.726, 0.045),
|
|
162
|
+
Vec3::new(1.748, 1.335, 2.439),
|
|
163
|
+
Vec3::new(2.596, 0.201, 2.309),
|
|
164
|
+
Vec3::new(0.016, 2.044, 2.194),
|
|
165
|
+
Vec3::new(1.720, 1.862, 0.352),
|
|
166
|
+
Vec3::new(0.988, 0.177, 0.122),
|
|
167
|
+
Vec3::new(1.726, 1.258, 1.173),
|
|
168
|
+
Vec3::new(2.696, 0.234, 2.872),
|
|
169
|
+
Vec3::new(1.284, 2.246, 2.981),
|
|
170
|
+
Vec3::new(2.088, 2.028, 3.198),
|
|
171
|
+
Vec3::new(2.705, 2.058, 3.091),
|
|
172
|
+
Vec3::new(1.989, 0.198, 3.596),
|
|
173
|
+
Vec3::new(1.211, 0.814, 1.989),
|
|
174
|
+
Vec3::new(0.637, 0.770, 1.387),
|
|
175
|
+
Vec3::new(0.423, 3.482, 1.063),
|
|
176
|
+
Vec3::new(1.755, 2.812, 3.188),
|
|
177
|
+
Vec3::new(0.790, 2.297, 0.547),
|
|
178
|
+
Vec3::new(2.470, 1.682, 1.768),
|
|
179
|
+
Vec3::new(2.750, 1.481, 2.167),
|
|
180
|
+
Vec3::new(1.955, 2.155, 2.101),
|
|
181
|
+
Vec3::new(2.425, 2.529, 0.233),
|
|
182
|
+
Vec3::new(2.097, 0.550, 1.561),
|
|
183
|
+
Vec3::new(3.576, 0.828, 0.829),
|
|
184
|
+
Vec3::new(0.070, 3.417, 2.860),
|
|
185
|
+
Vec3::new(0.487, 2.643, 2.392),
|
|
186
|
+
Vec3::new(0.054, 3.489, 0.624),
|
|
187
|
+
Vec3::new(1.953, 0.759, 2.430),
|
|
188
|
+
Vec3::new(1.316, 2.782, 0.279),
|
|
189
|
+
Vec3::new(3.221, 3.164, 0.465),
|
|
190
|
+
Vec3::new(2.196, 1.817, 0.479),
|
|
191
|
+
Vec3::new(1.039, 1.008, 0.996),
|
|
192
|
+
Vec3::new(1.871, 0.918, 0.048),
|
|
193
|
+
Vec3::new(2.455, 2.483, 3.226),
|
|
194
|
+
Vec3::new(2.808, 0.389, 0.843),
|
|
195
|
+
Vec3::new(0.138, 0.237, 0.291),
|
|
196
|
+
Vec3::new(1.424, 2.556, 2.581),
|
|
197
|
+
Vec3::new(1.223, 2.472, 1.673),
|
|
198
|
+
Vec3::new(0.965, 2.424, 0.071),
|
|
199
|
+
Vec3::new(0.206, 2.665, 0.839),
|
|
200
|
+
Vec3::new(0.710, 1.735, 3.281),
|
|
201
|
+
Vec3::new(1.414, 0.295, 3.467),
|
|
202
|
+
Vec3::new(2.123, 0.437, 2.823),
|
|
203
|
+
Vec3::new(1.318, 0.205, 1.104),
|
|
204
|
+
Vec3::new(2.377, 0.282, 0.609),
|
|
205
|
+
Vec3::new(0.322, 0.214, 2.186),
|
|
206
|
+
Vec3::new(0.370, 1.177, 1.556),
|
|
207
|
+
Vec3::new(3.059, 0.285, 1.962),
|
|
208
|
+
Vec3::new(0.481, 0.783, 0.776),
|
|
209
|
+
Vec3::new(3.052, 0.471, 2.392),
|
|
210
|
+
Vec3::new(3.448, 1.674, 0.077),
|
|
211
|
+
Vec3::new(0.740, 0.432, 1.896),
|
|
212
|
+
Vec3::new(1.854, 1.004, 2.836),
|
|
213
|
+
Vec3::new(0.002, 0.694, 0.314),
|
|
214
|
+
Vec3::new(0.788, 2.083, 2.875),
|
|
215
|
+
Vec3::new(2.146, 1.481, 2.054),
|
|
216
|
+
Vec3::new(2.013, 3.560, 0.350),
|
|
217
|
+
Vec3::new(0.159, 2.067, 0.047),
|
|
218
|
+
Vec3::new(0.894, 2.478, 3.173),
|
|
219
|
+
Vec3::new(0.415, 1.645, 2.804),
|
|
220
|
+
Vec3::new(1.406, 1.750, 2.598),
|
|
221
|
+
Vec3::new(3.174, 0.109, 2.860),
|
|
222
|
+
Vec3::new(3.572, 1.719, 2.851),
|
|
223
|
+
Vec3::new(3.560, 1.919, 0.537),
|
|
224
|
+
Vec3::new(2.423, 2.251, 0.636),
|
|
225
|
+
Vec3::new(2.897, 3.551, 0.331),
|
|
226
|
+
Vec3::new(2.074, 1.541, 3.473),
|
|
227
|
+
Vec3::new(0.404, 2.508, 3.513),
|
|
228
|
+
Vec3::new(3.610, 0.430, 3.465),
|
|
229
|
+
Vec3::new(3.328, 1.358, 2.086),
|
|
230
|
+
Vec3::new(1.636, 3.488, 3.563),
|
|
231
|
+
Vec3::new(1.491, 0.117, 0.290),
|
|
232
|
+
Vec3::new(3.030, 2.716, 0.233),
|
|
233
|
+
Vec3::new(0.799, 0.809, 3.119),
|
|
234
|
+
Vec3::new(1.233, 2.803, 2.981),
|
|
235
|
+
Vec3::new(3.359, 0.794, 2.779),
|
|
236
|
+
Vec3::new(2.570, 3.453, 0.747),
|
|
237
|
+
Vec3::new(2.809, 2.072, 2.114),
|
|
238
|
+
Vec3::new(1.059, 0.488, 2.781),
|
|
239
|
+
Vec3::new(1.528, 1.557, 3.538),
|
|
240
|
+
Vec3::new(1.031, 2.736, 0.732),
|
|
241
|
+
Vec3::new(2.786, 2.234, 0.996),
|
|
242
|
+
Vec3::new(0.554, 0.860, 2.720),
|
|
243
|
+
Vec3::new(1.883, 2.922, 1.184),
|
|
244
|
+
Vec3::new(3.633, 1.482, 1.365),
|
|
245
|
+
Vec3::new(1.855, 0.115, 3.084),
|
|
246
|
+
Vec3::new(2.635, 2.820, 2.163),
|
|
247
|
+
Vec3::new(2.938, 3.164, 1.871),
|
|
248
|
+
Vec3::new(2.157, 2.966, 0.299),
|
|
249
|
+
Vec3::new(0.167, 2.858, 3.141),
|
|
250
|
+
Vec3::new(0.910, 0.850, 2.379),
|
|
251
|
+
Vec3::new(0.880, 0.198, 1.489),
|
|
252
|
+
Vec3::new(2.501, 1.040, 2.181),
|
|
253
|
+
Vec3::new(1.299, 2.211, 0.381),
|
|
254
|
+
Vec3::new(3.297, 2.153, 1.880),
|
|
255
|
+
Vec3::new(0.624, 2.911, 3.303),
|
|
256
|
+
Vec3::new(3.011, 3.593, 1.100),
|
|
257
|
+
Vec3::new(1.110, 0.613, 1.545),
|
|
258
|
+
Vec3::new(0.879, 2.106, 1.635),
|
|
259
|
+
Vec3::new(1.192, 3.517, 2.385),
|
|
260
|
+
Vec3::new(3.259, 3.613, 3.417),
|
|
261
|
+
Vec3::new(2.418, 1.801, 2.350),
|
|
262
|
+
Vec3::new(0.267, 1.599, 0.265),
|
|
263
|
+
Vec3::new(3.401, 3.257, 0.962),
|
|
264
|
+
Vec3::new(3.238, 0.581, 0.581),
|
|
265
|
+
Vec3::new(1.377, 0.100, 2.984),
|
|
266
|
+
Vec3::new(3.083, 2.902, 1.442),
|
|
267
|
+
Vec3::new(3.112, 1.458, 1.347),
|
|
268
|
+
Vec3::new(1.229, 1.131, 1.563),
|
|
269
|
+
Vec3::new(1.474, 1.393, 2.887),
|
|
270
|
+
Vec3::new(2.585, 2.546, 2.750),
|
|
271
|
+
Vec3::new(1.235, 1.000, 2.862),
|
|
272
|
+
Vec3::new(1.214, 3.466, 1.478),
|
|
273
|
+
Vec3::new(0.531, 3.425, 3.112),
|
|
274
|
+
Vec3::new(0.643, 2.786, 0.242),
|
|
275
|
+
Vec3::new(3.160, 2.544, 1.052),
|
|
276
|
+
Vec3::new(0.764, 1.336, 2.938),
|
|
277
|
+
Vec3::new(3.537, 1.266, 0.419),
|
|
278
|
+
Vec3::new(1.282, 2.323, 0.890),
|
|
279
|
+
Vec3::new(2.381, 1.705, 2.971),
|
|
280
|
+
Vec3::new(2.272, 1.333, 2.515),
|
|
281
|
+
Vec3::new(0.832, 1.705, 2.544),
|
|
282
|
+
Vec3::new(3.042, 3.593, 2.373),
|
|
283
|
+
Vec3::new(2.833, 0.227, 3.367),
|
|
284
|
+
Vec3::new(0.497, 0.377, 2.954),
|
|
285
|
+
Vec3::new(0.836, 1.400, 2.007),
|
|
286
|
+
Vec3::new(1.205, 1.214, 0.129),
|
|
287
|
+
Vec3::new(0.008, 2.973, 2.674),
|
|
288
|
+
Vec3::new(1.593, 1.682, 2.117),
|
|
289
|
+
Vec3::new(1.416, 0.707, 0.222),
|
|
290
|
+
Vec3::new(0.551, 1.523, 1.003),
|
|
291
|
+
Vec3::new(0.322, 3.375, 2.440),
|
|
292
|
+
Vec3::new(3.117, 1.601, 0.548),
|
|
293
|
+
Vec3::new(3.212, 0.517, 3.234),
|
|
294
|
+
Vec3::new(2.648, 2.726, 1.197),
|
|
295
|
+
Vec3::new(0.246, 1.650, 3.374),
|
|
296
|
+
Vec3::new(3.212, 0.114, 0.670),
|
|
297
|
+
Vec3::new(2.732, 2.589, 0.681),
|
|
298
|
+
Vec3::new(1.634, 1.647, 0.766),
|
|
299
|
+
Vec3::new(2.821, 0.451, 0.289),
|
|
300
|
+
Vec3::new(2.886, 1.058, 2.475),
|
|
301
|
+
Vec3::new(0.595, 1.651, 1.682),
|
|
302
|
+
Vec3::new(0.889, 2.590, 1.331),
|
|
303
|
+
Vec3::new(2.652, 1.210, 1.296),
|
|
304
|
+
Vec3::new(1.675, 0.589, 1.992),
|
|
305
|
+
Vec3::new(3.637, 2.500, 2.503),
|
|
306
|
+
Vec3::new(3.555, 0.487, 2.064),
|
|
307
|
+
Vec3::new(0.094, 3.317, 1.440),
|
|
308
|
+
Vec3::new(0.603, 2.504, 0.976),
|
|
309
|
+
Vec3::new(0.518, 0.121, 3.529),
|
|
310
|
+
Vec3::new(1.637, 2.974, 3.631),
|
|
311
|
+
Vec3::new(3.392, 1.942, 1.421),
|
|
312
|
+
Vec3::new(2.746, 2.119, 0.301),
|
|
313
|
+
Vec3::new(2.041, 3.640, 2.513),
|
|
314
|
+
Vec3::new(2.898, 2.362, 3.550),
|
|
315
|
+
Vec3::new(1.713, 0.072, 0.830),
|
|
316
|
+
Vec3::new(2.426, 0.941, 1.689),
|
|
317
|
+
Vec3::new(0.112, 2.528, 2.021),
|
|
318
|
+
Vec3::new(1.365, 0.490, 0.662),
|
|
319
|
+
Vec3::new(1.169, 1.974, 3.511),
|
|
320
|
+
Vec3::new(2.163, 0.955, 1.225),
|
|
321
|
+
Vec3::new(2.368, 2.365, 2.347),
|
|
322
|
+
Vec3::new(0.522, 2.970, 2.782),
|
|
323
|
+
Vec3::new(1.113, 2.953, 3.505),
|
|
324
|
+
Vec3::new(0.964, 0.750, 0.519),
|
|
325
|
+
Vec3::new(2.481, 0.892, 0.844),
|
|
326
|
+
Vec3::new(2.439, 3.000, 3.081),
|
|
327
|
+
Vec3::new(1.124, 1.592, 1.680),
|
|
328
|
+
Vec3::new(0.779, 3.290, 2.545),
|
|
329
|
+
Vec3::new(3.524, 3.407, 0.146),
|
|
330
|
+
Vec3::new(0.387, 2.079, 3.142),
|
|
331
|
+
Vec3::new(2.382, 2.341, 1.830),
|
|
332
|
+
Vec3::new(0.818, 1.990, 1.072),
|
|
333
|
+
Vec3::new(1.189, 2.997, 2.467),
|
|
334
|
+
Vec3::new(1.567, 0.416, 1.508),
|
|
335
|
+
Vec3::new(0.178, 2.400, 0.438),
|
|
336
|
+
Vec3::new(1.697, 1.351, 0.308),
|
|
337
|
+
Vec3::new(0.343, 1.900, 1.327),
|
|
338
|
+
Vec3::new(1.633, 0.542, 2.791),
|
|
339
|
+
Vec3::new(3.305, 0.251, 0.218),
|
|
340
|
+
Vec3::new(3.398, 1.997, 3.317),
|
|
341
|
+
Vec3::new(2.052, 3.254, 3.469),
|
|
342
|
+
Vec3::new(3.610, 2.348, 2.991),
|
|
343
|
+
Vec3::new(3.018, 3.146, 3.602),
|
|
344
|
+
Vec3::new(0.757, 3.602, 2.080),
|
|
345
|
+
Vec3::new(3.616, 2.224, 0.954),
|
|
346
|
+
Vec3::new(2.146, 1.491, 1.467),
|
|
347
|
+
Vec3::new(1.913, 0.103, 1.357),
|
|
348
|
+
Vec3::new(0.972, 3.087, 1.194),
|
|
349
|
+
Vec3::new(1.471, 0.828, 2.419),
|
|
350
|
+
Vec3::new(1.171, 0.197, 1.888),
|
|
351
|
+
Vec3::new(0.234, 3.019, 0.436),
|
|
352
|
+
Vec3::new(2.050, 2.383, 1.154),
|
|
353
|
+
Vec3::new(0.925, 3.178, 3.033),
|
|
354
|
+
Vec3::new(0.402, 2.001, 0.729),
|
|
355
|
+
Vec3::new(0.287, 0.544, 1.728),
|
|
356
|
+
Vec3::new(1.835, 2.509, 1.785),
|
|
357
|
+
Vec3::new(0.087, 0.363, 0.805),
|
|
358
|
+
Vec3::new(2.751, 1.569, 2.732),
|
|
359
|
+
Vec3::new(2.628, 0.955, 0.304),
|
|
360
|
+
Vec3::new(3.145, 2.627, 1.952),
|
|
361
|
+
Vec3::new(1.806, 3.111, 1.783),
|
|
362
|
+
Vec3::new(1.218, 3.215, 0.694),
|
|
363
|
+
Vec3::new(2.500, 0.118, 0.124),
|
|
364
|
+
Vec3::new(0.300, 3.378, 1.865),
|
|
365
|
+
Vec3::new(2.497, 1.136, 3.500),
|
|
366
|
+
Vec3::new(0.480, 0.666, 3.499),
|
|
367
|
+
Vec3::new(0.211, 1.266, 0.832),
|
|
368
|
+
Vec3::new(0.902, 1.255, 0.557),
|
|
369
|
+
Vec3::new(2.665, 1.582, 3.374),
|
|
370
|
+
Vec3::new(1.008, 1.863, 2.083),
|
|
371
|
+
Vec3::new(2.482, 0.149, 1.203),
|
|
372
|
+
Vec3::new(1.613, 3.580, 1.706),
|
|
373
|
+
Vec3::new(2.827, 3.042, 2.643),
|
|
374
|
+
Vec3::new(2.411, 3.191, 1.754),
|
|
375
|
+
Vec3::new(2.430, 2.171, 1.348),
|
|
376
|
+
Vec3::new(1.892, 0.396, 0.419),
|
|
377
|
+
Vec3::new(3.573, 0.024, 1.141),
|
|
378
|
+
Vec3::new(1.261, 1.659, 0.304),
|
|
379
|
+
Vec3::new(3.427, 0.996, 1.294),
|
|
380
|
+
Vec3::new(2.119, 2.166, 0.171),
|
|
381
|
+
Vec3::new(3.055, 2.366, 2.919),
|
|
382
|
+
Vec3::new(2.709, 3.067, 0.386),
|
|
383
|
+
Vec3::new(1.324, 0.742, 3.292),
|
|
384
|
+
Vec3::new(1.144, 1.326, 2.533),
|
|
385
|
+
Vec3::new(3.236, 2.821, 2.810),
|
|
386
|
+
Vec3::new(2.336, 0.771, 3.187),
|
|
387
|
+
Vec3::new(0.180, 1.242, 2.964),
|
|
388
|
+
Vec3::new(1.940, 1.719, 2.690),
|
|
389
|
+
Vec3::new(0.297, 2.477, 1.347),
|
|
390
|
+
Vec3::new(0.444, 1.774, 2.237),
|
|
391
|
+
Vec3::new(2.761, 2.060, 2.587),
|
|
392
|
+
Vec3::new(2.533, 3.440, 3.398),
|
|
393
|
+
Vec3::new(2.429, 1.179, 2.951),
|
|
394
|
+
Vec3::new(2.706, 3.233, 1.356),
|
|
395
|
+
Vec3::new(1.708, 2.953, 2.679),
|
|
396
|
+
Vec3::new(1.193, 3.308, 1.948),
|
|
397
|
+
Vec3::new(2.998, 2.479, 2.367),
|
|
398
|
+
Vec3::new(2.048, 2.551, 3.504),
|
|
399
|
+
Vec3::new(0.653, 2.504, 1.843),
|
|
400
|
+
Vec3::new(2.999, 2.263, 1.488),
|
|
401
|
+
Vec3::new(2.640, 3.329, 2.239),
|
|
402
|
+
Vec3::new(0.618, 3.058, 2.109),
|
|
403
|
+
Vec3::new(1.639, 1.110, 3.319),
|
|
404
|
+
Vec3::new(2.090, 3.276, 0.830),
|
|
405
|
+
Vec3::new(1.398, 2.531, 3.468),
|
|
406
|
+
Vec3::new(1.524, 2.769, 0.845),
|
|
407
|
+
Vec3::new(0.745, 1.509, 0.104),
|
|
408
|
+
],
|
|
409
|
+
);
|
solvate/water/models.rs
ADDED
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
use eightyseven::structure::Atom;
|
|
2
|
+
use glam::Vec3;
|
|
3
|
+
|
|
4
|
+
use crate::convert::Convert;
|
|
5
|
+
|
|
6
|
+
/// A cuboid water box.
|
|
7
|
+
pub struct WaterBox<const NATOMS: usize, const NATOMS_PER_RES: usize> {
|
|
8
|
+
// TODO: Make this ResName and AtomName.
|
|
9
|
+
resname: &'static str,
|
|
10
|
+
names: [&'static str; NATOMS_PER_RES],
|
|
11
|
+
/// Box dimensions.
|
|
12
|
+
dimensions: Vec3,
|
|
13
|
+
/// A list of the positions.
|
|
14
|
+
///
|
|
15
|
+
/// For atomistic ordering, the canonical water ordering is oxygen first, followed by
|
|
16
|
+
/// hydrogens. That is, the first atom in the residue is the atom that is taken as the position
|
|
17
|
+
/// for the solvent-structure collision checks.
|
|
18
|
+
positions: [Vec3; NATOMS],
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
impl<const NATOMS: usize, const NATOMS_PER_RES: usize> WaterBox<NATOMS, NATOMS_PER_RES> {
|
|
22
|
+
/// Creates a new [`WaterBox`].
|
|
23
|
+
pub const fn new(
|
|
24
|
+
resname: &'static str,
|
|
25
|
+
names: [&'static str; NATOMS_PER_RES],
|
|
26
|
+
dimensions: Vec3,
|
|
27
|
+
positions: [Vec3; NATOMS],
|
|
28
|
+
) -> Self {
|
|
29
|
+
// The number of atoms must be a multiple of the number of atoms per residue.
|
|
30
|
+
const { assert!(NATOMS.is_multiple_of(NATOMS_PER_RES)) }
|
|
31
|
+
|
|
32
|
+
Self {
|
|
33
|
+
resname,
|
|
34
|
+
names,
|
|
35
|
+
dimensions,
|
|
36
|
+
positions,
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/// Returns solvent residue name for this [`WaterBox`].
|
|
41
|
+
pub const fn resname(&self) -> &'static str {
|
|
42
|
+
self.resname
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/// Returns the number of points per residue for this [`WaterBox`].
|
|
46
|
+
pub const fn residue_points(&self) -> usize {
|
|
47
|
+
NATOMS_PER_RES
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/// Returns the dimensions of this [`WaterBox`].
|
|
51
|
+
pub const fn dimensions(&self) -> Vec3 {
|
|
52
|
+
self.dimensions
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/// Return an iterator over the positions must be considered for solvent-structure collisions.
|
|
56
|
+
pub fn positions(&'_ self) -> PositionsIterator<'_> {
|
|
57
|
+
PositionsIterator {
|
|
58
|
+
step: NATOMS_PER_RES,
|
|
59
|
+
idx: 0,
|
|
60
|
+
positions: &self.positions,
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
pub fn residues(&'_ self) -> ResiduesIterator<'_> {
|
|
65
|
+
ResiduesIterator {
|
|
66
|
+
step: NATOMS_PER_RES,
|
|
67
|
+
idx: 0,
|
|
68
|
+
resname: self.resname,
|
|
69
|
+
names: &self.names,
|
|
70
|
+
positions: &self.positions,
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
pub struct PositionsIterator<'wb> {
|
|
76
|
+
step: usize,
|
|
77
|
+
idx: usize,
|
|
78
|
+
positions: &'wb [Vec3],
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
impl<'wb> Iterator for PositionsIterator<'wb> {
|
|
82
|
+
type Item = Vec3;
|
|
83
|
+
|
|
84
|
+
fn next(&mut self) -> Option<Self::Item> {
|
|
85
|
+
let idx = self.idx;
|
|
86
|
+
self.idx += self.step;
|
|
87
|
+
self.positions.get(idx).copied()
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
pub struct ResiduesIterator<'wb> {
|
|
92
|
+
step: usize,
|
|
93
|
+
idx: usize,
|
|
94
|
+
resname: &'static str,
|
|
95
|
+
names: &'wb [&'static str],
|
|
96
|
+
positions: &'wb [Vec3],
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
pub struct Residue<'wb> {
|
|
100
|
+
resname: &'static str,
|
|
101
|
+
names: &'wb [&'static str],
|
|
102
|
+
positions: &'wb [Vec3],
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
impl<'wb> Residue<'wb> {
|
|
106
|
+
// TODO: Maybe this better fits where it is used. Here we start to introduce implementation
|
|
107
|
+
// details that are more local at the call site.
|
|
108
|
+
pub fn atoms<'a: 'wb>(
|
|
109
|
+
&'wb self,
|
|
110
|
+
resnum: &'a mut u32,
|
|
111
|
+
atomnum: &'a mut u32,
|
|
112
|
+
translation: Vec3,
|
|
113
|
+
) -> impl Iterator<Item = Atom> + use<'wb> {
|
|
114
|
+
let rn = *resnum;
|
|
115
|
+
*resnum += 1;
|
|
116
|
+
|
|
117
|
+
Iterator::zip(self.positions.iter(), self.names).map(move |(&pos, &name)| {
|
|
118
|
+
let an = *atomnum;
|
|
119
|
+
*atomnum += 1;
|
|
120
|
+
|
|
121
|
+
Atom {
|
|
122
|
+
resnum: rn,
|
|
123
|
+
resname: self.resname.into(),
|
|
124
|
+
atomname: name.into(),
|
|
125
|
+
atomnum: an,
|
|
126
|
+
position: (pos + translation).convert(),
|
|
127
|
+
velocity: Default::default(),
|
|
128
|
+
}
|
|
129
|
+
})
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
impl<'wb> Iterator for ResiduesIterator<'wb> {
|
|
134
|
+
type Item = Residue<'wb>;
|
|
135
|
+
|
|
136
|
+
fn next(&mut self) -> Option<Self::Item> {
|
|
137
|
+
let idx = self.idx;
|
|
138
|
+
self.idx += self.step;
|
|
139
|
+
let positions = self.positions.get(idx..self.idx)?;
|
|
140
|
+
Some(Self::Item {
|
|
141
|
+
resname: self.resname,
|
|
142
|
+
names: self.names,
|
|
143
|
+
positions,
|
|
144
|
+
})
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
// Include the actual water coordinates.
|
|
149
|
+
include!("martini.rs");
|
|
150
|
+
include!("tip3p.rs");
|