Подговтовим файл координат и файл топологии. Создадим индекс файл, содержащий группу из одной молекулы используя файл из задания 6 box_38.gro.
with open("box_38.gro",'w') as file:
file.write("""first one
304
1ETH C1 1 0.577 0.217 0.574
1ETH C2 2 0.680 0.252 0.467
1ETH H1 3 0.478 0.241 0.538
1ETH H2 4 0.597 0.274 0.664
1ETH H3 5 0.583 0.111 0.597
1ETH H4 6 0.676 0.358 0.445
1ETH H5 7 0.660 0.195 0.377
1ETH H6 8 0.780 0.228 0.504
2ETH C1 9 1.350 0.305 0.750
2ETH C2 10 1.410 0.333 0.888
2ETH H1 11 1.276 0.227 0.758
2ETH H2 12 1.428 0.275 0.681
2ETH H3 13 1.302 0.396 0.712
2ETH H4 14 1.458 0.243 0.925
2ETH H5 15 1.332 0.364 0.956
2ETH H6 16 1.485 0.412 0.880
3ETH C1 17 1.424 0.986 1.174
3ETH C2 18 1.448 0.987 1.325
3ETH H1 19 1.461 0.894 1.132
3ETH H2 20 1.475 1.070 1.128
3ETH H3 21 1.317 0.994 1.154
3ETH H4 22 1.554 0.980 1.345
3ETH H5 23 1.396 0.903 1.370
3ETH H6 24 1.410 1.080 1.367
4ETH C1 25 0.617 0.787 1.059
4ETH C2 26 0.675 0.671 0.977
4ETH H1 27 0.642 0.881 1.011
4ETH H2 28 0.659 0.786 1.158
4ETH H3 29 0.509 0.777 1.065
4ETH H4 30 0.783 0.680 0.972
4ETH H5 31 0.633 0.672 0.877
4ETH H6 32 0.650 0.577 1.026
5ETH C1 33 0.141 1.073 0.490
5ETH C2 34 0.212 0.955 0.558
5ETH H1 35 0.038 1.048 0.472
5ETH H2 36 0.190 1.095 0.396
5ETH H3 37 0.146 1.161 0.555
5ETH H4 38 0.208 0.868 0.494
5ETH H5 39 0.163 0.933 0.652
5ETH H6 40 0.316 0.981 0.576
6ETH C1 41 1.250 0.825 0.133
6ETH C2 42 1.209 0.892 0.264
6ETH H1 43 1.355 0.799 0.137
6ETH H2 44 1.233 0.892 0.051
6ETH H3 45 1.191 0.734 0.118
6ETH H4 46 1.267 0.982 0.279
6ETH H5 47 1.226 0.824 0.347
6ETH H6 48 1.104 0.918 0.260
7ETH C1 49 1.329 0.375 1.295
7ETH C2 50 1.403 0.242 1.308
7ETH H1 51 1.235 0.360 1.243
7ETH H2 52 1.390 0.445 1.240
7ETH H3 53 1.309 0.416 1.394
7ETH H4 54 1.423 0.202 1.210
7ETH H5 55 1.342 0.172 1.364
7ETH H6 56 1.497 0.258 1.361
8ETH C1 57 0.859 0.689 0.554
8ETH C2 58 0.886 0.706 0.405
8ETH H1 59 0.931 0.620 0.597
8ETH H2 60 0.759 0.650 0.569
8ETH H3 61 0.868 0.786 0.604
8ETH H4 62 0.876 0.610 0.355
8ETH H5 63 0.986 0.744 0.390
8ETH H6 64 0.813 0.775 0.362
9ETH C1 65 0.410 0.262 0.163
9ETH C2 66 0.285 0.262 0.251
9ETH H1 67 0.474 0.180 0.191
9ETH H2 68 0.463 0.356 0.175
9ETH H3 69 0.381 0.251 0.059
9ETH H4 70 0.313 0.274 0.355
9ETH H5 71 0.232 0.168 0.239
9ETH H6 72 0.220 0.344 0.222
10ETH C1 73 0.612 1.227 1.074
10ETH C2 74 0.723 1.153 0.998
10ETH H1 75 0.612 1.195 1.177
10ETH H2 76 0.516 1.204 1.029
10ETH H3 77 0.629 1.334 1.069
10ETH H4 78 0.705 1.047 1.002
10ETH H5 79 0.819 1.176 1.043
10ETH H6 80 0.723 1.185 0.894
11ETH C1 81 1.189 1.122 0.744
11ETH C2 82 1.188 1.110 0.896
11ETH H1 83 1.088 1.107 0.706
11ETH H2 84 1.254 1.046 0.702
11ETH H3 85 1.225 1.220 0.715
11ETH H4 86 1.153 1.012 0.925
11ETH H5 87 1.123 1.186 0.938
11ETH H6 88 1.289 1.125 0.934
12ETH C1 89 0.259 1.125 1.357
12ETH C2 90 0.370 1.140 1.462
12ETH H1 91 0.193 1.210 1.363
12ETH H2 92 0.203 1.035 1.376
12ETH H3 93 0.304 1.120 1.258
12ETH H4 94 0.326 1.144 1.561
12ETH H5 95 0.426 1.231 1.443
12ETH H6 96 0.437 1.054 1.457
13ETH C1 97 0.891 1.072 0.621
13ETH C2 98 0.929 1.073 0.473
13ETH H1 99 0.958 1.137 0.676
13ETH H2 100 0.898 0.971 0.660
13ETH H3 101 0.789 1.108 0.632
13ETH H4 102 1.031 1.036 0.461
13ETH H5 103 0.922 1.173 0.434
13ETH H6 104 0.862 1.007 0.418
14ETH C1 105 0.376 0.628 0.510
14ETH C2 106 0.478 0.699 0.599
14ETH H1 107 0.337 0.698 0.437
14ETH H2 108 0.295 0.590 0.570
14ETH H3 109 0.424 0.545 0.458
14ETH H4 110 0.431 0.781 0.651
14ETH H5 111 0.559 0.737 0.538
14ETH H6 112 0.517 0.628 0.672
15ETH C1 113 1.138 1.445 1.298
15ETH C2 114 1.088 1.453 1.154
15ETH H1 115 1.240 1.408 1.299
15ETH H2 116 1.075 1.379 1.355
15ETH H3 117 1.136 1.544 1.343
15ETH H4 118 1.089 1.355 1.109
15ETH H5 119 1.151 1.520 1.097
15ETH H6 120 0.986 1.491 1.154
16ETH C1 121 0.218 1.431 0.458
16ETH C2 122 0.334 1.440 0.359
16ETH H1 123 0.129 1.473 0.414
16ETH H2 124 0.243 1.487 0.548
16ETH H3 125 0.200 1.327 0.484
16ETH H4 126 0.353 1.544 0.333
16ETH H5 127 0.309 1.385 0.269
16ETH H6 128 0.424 1.397 0.404
17ETH C1 129 0.746 1.287 1.466
17ETH C2 130 0.732 1.383 1.348
17ETH H1 131 0.668 1.307 1.538
17ETH H2 132 0.843 1.301 1.514
17ETH H3 133 0.738 1.184 1.432
17ETH H4 134 0.741 1.485 1.382
17ETH H5 135 0.636 1.368 1.301
17ETH H6 136 0.811 1.362 1.275
18ETH C1 137 1.328 0.499 0.488
18ETH C2 138 1.430 0.432 0.396
18ETH H1 139 1.377 0.576 0.545
18ETH H2 140 1.286 0.425 0.556
18ETH H3 141 1.248 0.543 0.429
18ETH H4 142 1.509 0.387 0.455
18ETH H5 143 1.472 0.505 0.328
18ETH H6 144 1.380 0.353 0.338
19ETH C1 145 0.967 0.658 1.263
19ETH C2 146 0.947 0.655 1.111
19ETH H1 147 0.871 0.649 1.312
19ETH H2 148 1.014 0.751 1.292
19ETH H3 149 1.030 0.575 1.293
19ETH H4 150 0.884 0.738 1.081
19ETH H5 151 0.900 0.562 1.083
19ETH H6 152 1.043 0.664 1.062
20ETH C1 153 1.188 0.157 0.132
20ETH C2 154 1.189 0.157 0.285
20ETH H1 155 1.173 0.056 0.096
20ETH H2 156 1.283 0.194 0.095
20ETH H3 157 1.108 0.220 0.096
20ETH H4 158 1.269 0.095 0.321
20ETH H5 159 1.094 0.120 0.322
20ETH H6 160 1.204 0.259 0.321
21ETH C1 161 0.899 0.401 0.885
21ETH C2 162 0.835 0.339 1.010
21ETH H1 163 0.983 0.462 0.915
21ETH H2 164 0.826 0.463 0.834
21ETH H3 165 0.932 0.322 0.818
21ETH H4 166 0.801 0.418 1.076
21ETH H5 167 0.907 0.277 1.061
21ETH H6 168 0.750 0.278 0.980
22ETH C1 169 0.671 0.964 0.249
22ETH C2 170 0.697 1.014 0.107
22ETH H1 171 0.626 0.865 0.245
22ETH H2 172 0.604 1.031 0.300
22ETH H3 173 0.765 0.958 0.304
22ETH H4 174 0.604 1.020 0.052
22ETH H5 175 0.765 0.946 0.056
22ETH H6 176 0.743 1.113 0.111
23ETH C1 177 0.212 0.408 0.739
23ETH C2 178 0.215 0.411 0.891
23ETH H1 179 0.161 0.318 0.705
23ETH H2 180 0.313 0.409 0.700
23ETH H3 181 0.158 0.495 0.702
23ETH H4 182 0.269 0.324 0.928
23ETH H5 183 0.114 0.410 0.930
23ETH H6 184 0.266 0.501 0.925
24ETH C1 185 0.702 0.547 1.385
24ETH C2 186 0.672 0.520 1.237
24ETH H1 187 0.790 0.490 1.414
24ETH H2 188 0.618 0.517 1.446
24ETH H3 189 0.721 0.653 1.399
24ETH H4 190 0.652 0.414 1.223
24ETH H5 191 0.756 0.550 1.177
24ETH H6 192 0.584 0.577 1.208
25ETH C1 193 0.500 0.241 0.886
25ETH C2 194 0.528 0.384 0.934
25ETH H1 195 0.403 0.210 0.922
25ETH H2 196 0.575 0.175 0.925
25ETH H3 197 0.502 0.238 0.778
25ETH H4 198 0.527 0.387 1.042
25ETH H5 199 0.452 0.451 0.895
25ETH H6 200 0.626 0.415 0.898
26ETH C1 201 0.675 1.384 0.415
26ETH C2 202 0.624 1.361 0.273
26ETH H1 203 0.596 1.363 0.486
26ETH H2 204 0.707 1.487 0.426
26ETH H3 205 0.760 1.318 0.435
26ETH H4 206 0.540 1.427 0.253
26ETH H5 207 0.593 1.258 0.262
26ETH H6 208 0.704 1.382 0.202
27ETH C1 209 1.243 0.729 0.899
27ETH C2 210 1.371 0.765 0.974
27ETH H1 211 1.168 0.805 0.917
27ETH H2 212 1.206 0.634 0.933
27ETH H3 213 1.263 0.724 0.792
27ETH H4 214 1.352 0.769 1.080
27ETH H5 215 1.408 0.860 0.939
27ETH H6 216 1.446 0.688 0.955
28ETH C1 217 0.968 1.446 0.290
28ETH C2 218 0.990 1.441 0.442
28ETH H1 219 1.037 1.517 0.246
28ETH H2 220 0.866 1.477 0.270
28ETH H3 221 0.984 1.348 0.248
28ETH H4 222 0.972 1.539 0.485
28ETH H5 223 1.091 1.410 0.462
28ETH H6 224 0.920 1.370 0.486
29ETH C1 225 0.873 1.487 0.750
29ETH C2 226 0.830 1.423 0.882
29ETH H1 227 0.814 1.575 0.732
29ETH H2 228 0.858 1.416 0.669
29ETH H3 229 0.978 1.514 0.754
29ETH H4 230 0.726 1.395 0.878
29ETH H5 231 0.846 1.493 0.963
29ETH H6 232 0.890 1.334 0.900
30ETH C1 233 0.273 1.208 0.855
30ETH C2 234 0.304 1.115 0.972
30ETH H1 235 0.309 1.307 0.877
30ETH H2 236 0.166 1.211 0.838
30ETH H3 237 0.322 1.171 0.765
30ETH H4 238 0.254 1.151 1.062
30ETH H5 239 0.411 1.111 0.989
30ETH H6 240 0.267 1.015 0.950
31ETH C1 241 0.355 0.216 1.360
31ETH C2 242 0.360 0.210 1.208
31ETH H1 243 0.252 0.210 1.394
31ETH H2 244 0.398 0.310 1.394
31ETH H3 245 0.412 0.133 1.402
31ETH H4 246 0.305 0.293 1.166
31ETH H5 247 0.317 0.117 1.174
31ETH H6 248 0.464 0.216 1.175
32ETH C1 249 0.319 0.679 1.046
32ETH C2 250 0.201 0.713 1.136
32ETH H1 251 0.393 0.624 1.103
32ETH H2 252 0.364 0.770 1.008
32ETH H3 253 0.286 0.618 0.963
32ETH H4 254 0.234 0.775 1.219
32ETH H5 255 0.156 0.623 1.174
32ETH H6 256 0.127 0.769 1.078
33ETH C1 257 0.990 1.000 1.442
33ETH C2 258 0.977 1.036 1.294
33ETH H1 259 1.075 1.053 1.485
33ETH H2 260 1.005 0.894 1.453
33ETH H3 261 0.900 1.029 1.495
33ETH H4 262 1.066 1.006 1.241
33ETH H5 263 0.962 1.142 1.284
33ETH H6 264 0.891 0.983 1.252
34ETH C1 265 0.168 0.729 0.117
34ETH C2 266 0.290 0.820 0.133
34ETH H1 267 0.198 0.626 0.128
34ETH H2 268 0.125 0.743 0.019
34ETH H3 269 0.094 0.753 0.193
34ETH H4 270 0.363 0.797 0.057
34ETH H5 271 0.333 0.806 0.231
34ETH H6 272 0.259 0.924 0.122
35ETH C1 273 1.317 1.396 0.400
35ETH C2 274 1.278 1.250 0.378
35ETH H1 275 1.228 1.455 0.415
35ETH H2 276 1.369 1.433 0.312
35ETH H3 277 1.382 1.404 0.487
35ETH H4 278 1.214 1.241 0.291
35ETH H5 279 1.225 1.213 0.466
35ETH H6 280 1.368 1.190 0.363
36ETH C1 281 0.907 0.261 1.445
36ETH C2 282 0.990 0.367 1.518
36ETH H1 283 0.810 0.252 1.493
36ETH H2 284 0.957 0.166 1.448
36ETH H3 285 0.892 0.291 1.341
36ETH H4 286 1.005 0.336 1.621
36ETH H5 287 0.940 0.462 1.515
36ETH H6 288 1.088 0.375 1.469
37ETH C1 289 1.435 1.420 1.441
37ETH C2 290 1.478 1.336 1.321
37ETH H1 291 1.488 1.385 1.529
37ETH H2 292 1.329 1.410 1.457
37ETH H3 293 1.459 1.524 1.424
37ETH H4 294 1.453 1.232 1.338
37ETH H5 295 1.584 1.346 1.305
37ETH H6 296 1.425 1.371 1.232
38ETH C1 297 0.409 1.119 0.353
38ETH C2 298 0.448 1.139 0.499
38ETH H1 299 0.465 1.035 0.312
38ETH H2 300 0.432 1.208 0.296
38ETH H3 301 0.303 1.098 0.346
38ETH H4 302 0.554 1.160 0.506
38ETH H5 303 0.426 1.049 0.556
38ETH H6 304 0.392 1.223 0.540
1.50000 1.50000 1.50000""")
%%bash
make_ndx -f box_38.gro -o 1.ndx
После запуска команды вводим сначала "r1", что выбирает первый остаток. Следом за этим появилась новая группа из 8 атомов, нажимаем "q" для выхода. Теперь нужно создать et1.gro файл, выбрать 3 группу, созданную на предыдущем шаге. А затем расположить молекулу по центру ячейки.
%%bash
editconf -f box_38.gro -o et1.gro -n 1.ndx
editconf -f et1.gro -o et.gro -d 2 -c
Затем нужно построить файл топологии et.top для этана. Предварительно просмотрев файл /usr/share/gromacs/top/oplsaa.ff/atomtypes.atp для изменения типа атомов.
less /usr/share/gromacs/top/oplsaa.ff/atomtypes.atp
with open("et.top",'w') as file:
file.write("""#include "/usr/share/gromacs/top/oplsaa.ff/forcefield.itp"
[ moleculetype ]
; Name nrexcl
et 3
[ atoms ]
; nr type resnr residue atom cgnr charge mass
1 opls_135 1 ETH C1 1 -0.189 12.01
2 opls_135 1 ETH C2 2 -0.155 12.01
3 opls_140 1 ETH H1 3 0.0059 1.008
4 opls_140 1 ETH H2 4 0.0059 1.008
5 opls_140 1 ETH H3 5 0.0059 1.008
6 opls_140 1 ETH H4 6 0.0056 1.008
7 opls_140 1 ETH H5 7 0.0056 1.008
8 opls_140 1 ETH H6 8 0.0056 1.008
[ bonds ]
; ai aj funct b0 kb
1 2 1
1 4 1
1 5 1
2 6 1
2 7 1
2 8 1
[ angles ]
; ai aj ak funct phi0 kphi
;around c1
3 1 4 1
4 1 5 1
3 1 5 1
2 1 3 1
2 1 4 1
2 1 5 1
;around c2
1 2 6 1
6 2 8 1
6 2 7 1
7 2 8 1
1 2 7 1
1 2 8 1
[ dihedrals ]
; ai aj ak al funct
3 1 2 6 3
3 1 2 7 3
3 1 2 8 3
4 1 2 6 3
4 1 2 7 3
4 1 2 8 3
5 1 2 6 3
5 1 2 7 3
5 1 2 8 3
[ pairs ]
; ai aj funct
3 6
3 7
3 8
4 6
4 7
4 8
5 6
5 7
5 8
[ System ]
; any text here
first one
[ molecules ]
;Name count
et 1""")
Нам даны 5 файлов с разными параметрами контроля температуры: - be.mdp - метод Берендсена для контроля температуры при постоянном времени. Также не происходит флуктуации кинетической энергии и образуется канонический ансамбль для маленьких систем. - vr.mdp - метод "Velocity rescale" для контроля температуры, использующий стохастический метод для перерасчета скорости. частиц - nh.mdp - метод Нуза-Хувера для контроля температуры, при постоянному времени образуется микроканонический ансамбль. - an.mdp - метод Андерсена для контроля температуры, основанный на случайном выборе частоты столкновения частиц. - sd.mdp - метод стохастической молекулярной динамики.
С помощью скипта построим входные файлы для молекулярно-динамического движка mdrun, применяя gropp, с последющим запуском mdrun. Файлы с результатами конвертируем в pdb и просмотрим в Pymol.
%%bash
for i in $(echo be vr nh an sd); do
grompp -f $i.mdp -c et.gro -p et.top -o et_$i.tpr
mdrun -deffnm et_$i -v -nt 1;
trjconv -f et_$i.trr -s et_$i.tpr -o et_$i.pdb;
done
При просмотре полученных .pbd начальное состояние абсолютно идентично. Однако при дальнейшем просмотре замечены следующие особенности: * метод Берендсена - начальное изменение длин связей, дальнейшее вращение метильных групп вокруг связи и более медленное вращение всей молекулы вокруг оси молекулы; * метод "Velocity rescale" - изменение длин связей на протяжении всех состояний, колебания валентных углов; * метод Нуза-Хувера - колебание валентных углов и вращение метильных групп вокруг связи; * метод Андерсена - несильное колебание длин связей и углов, нет вращения метильных групп, только очень медленное вращение вокург своей оси; * метод стохастической молекулярной динамики - хаотичное изменение положения молекулы, ее конформации.
Сравним потенциальную энергию связи и кинетическую энергию для каждой из 5 систем для этого в скрипт добавим строчку (параметры 10 и 11):
g_energy -f et_${i}.edr -o et_${i}_en.xvg
Полученные .xvg файлы переведем в .csv формат с помощью скрипта и построим графики изменения энергии.
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import pylab
from pylab import *
fig, axes = plt.subplots(1, 5,figsize=(25,5))
data = genfromtxt('be.csv', delimiter=',')
x = data[:,0]
y1 = data[:,1]
y2 = data[:,2]
data1 = genfromtxt('vr.csv', delimiter=',')
x1 = data1[:,0]
y11 = data1[:,1]
y21 = data1[:,2]
data2 = genfromtxt('nh.csv', delimiter=',')
x2 = data2[:,0]
y12 = data2[:,1]
y22 = data2[:,2]
data3 = genfromtxt('an.csv', delimiter=',')
x3 = data3[:,0]
y13 = data3[:,1]
y23 = data3[:,2]
data4 = genfromtxt('sd.csv', delimiter=',')
x4 = data4[:,0]
y14 = data4[:,1]
y24 = data4[:,2]
axes[0].plot(x,y1, x, y2,lw=2, ls='*',marker='+')
axes[0].set_xlabel('Energy, kJ/mol')
axes[0].set_ylabel('Time, ps')
axes[1].plot(x1,y11, x1, y21,lw=2, ls='*',marker='+')
axes[1].set_xlabel('Energy, kJ/mol')
axes[1].set_ylabel('Time, ps')
axes[2].plot(x2,y12, x2, y22,lw=2, ls='*',marker='+')
axes[2].set_xlabel('Energy, kJ/mol')
axes[2].set_ylabel('Time, ps')
axes[3].plot(x3,y13, x3, y23,lw=2, ls='*',marker='+')
axes[3].set_xlabel('Energy, kJ/mol')
axes[3].set_ylabel('Time, ps')
axes[4].plot(x4,y14, x4, y24,lw=2, ls='*',marker='+')
axes[4].set_xlabel('Energy, kJ/mol')
axes[4].set_ylabel('Time, ps')
axes[0].set_title("be")
axes[1].set_title("vr")
axes[2].set_title("nh")
axes[3].set_title("an")
axes[4].set_title("sd")
Рассмотрим распределение длинны связи С-С за время моделирования. Сначала создадим индекс файл с одной связью. В текстовом редакторе создайте файл b.ndx со следующим содержимым:
with open("b.ndx",'w') as file:
file.write("""[ b ]
1 2 """)
И запустим утилиту по анализу связей g_bond:
g_bond -f et_${i}.trr -s et_${i}.tpr -o bond_${i}.xvg -n b.ndx
Полученные .xvg также перевели в .csv и построили графики распределения длинны связи С-С во время моделирования.
fig, axes = plt.subplots(1, 5,figsize=(25,5))
data = genfromtxt('d_be.csv', delimiter=',')
x = data[:,0]
y1 = data[:,1]
data1 = genfromtxt('d_vr.csv', delimiter=',')
x1 = data1[:,0]
y11 = data1[:,1]
data2 = genfromtxt('d_nh.csv', delimiter=',')
x2 = data2[:,0]
y12 = data2[:,1]
data3 = genfromtxt('d_an.csv', delimiter=',')
x3 = data3[:,0]
y13 = data3[:,1]
data4 = genfromtxt('d_sd.csv', delimiter=',')
x4 = data4[:,0]
y14 = data4[:,1]
axes[0].hist(y1,bins=30)
axes[0].set_xlabel('Distance, nm')
axes[0].set_ylabel('Time, ps')
axes[1].hist(y11, color='green',bins=30)
axes[1].set_xlabel('Distance, nm')
axes[1].set_ylabel('Time, ps')
axes[2].hist(y12, color='red',bins=30)
axes[2].set_xlabel('Distance, nm')
axes[2].set_ylabel('Time, ps')
axes[3].hist(y13, color='orange',bins=30)
axes[3].set_xlabel('Distance, nm')
axes[3].set_ylabel('Time, ps')
axes[4].hist(y14, color='yellow',bins=30)
axes[4].set_xlabel('Distance, nm')
axes[4].set_ylabel('Time, ps')
axes[0].set_title("be")
axes[1].set_title("vr")
axes[2].set_title("nh")
axes[3].set_title("an")
axes[4].set_title("sd")
На основе полученных данных можно подразделить все исследуемые методы на "стохастические" и "нестохастические", то есть методы Velocity rescale и сам стохастический метод случайном выборе неопределенных параметров, чем не пользуются методы Берендсена, Нуза-Хувера и Андерсена. Самым худшим методом для одной молекулы можно назвать метод Андерсена, так как он основан на вероятности столкновения частиц, а мы имеет только одну частицу. Метод Берендсена образует канонический ансамбль, то есть система обменивается кинетический энергией с термостатом, что ухадшает расчет температуры. Однако при использовании метода Нуза-Хувера не происходит обмени ни энергия, ни массой и частицами, но он все же проигрывает стохастическим методам. Сам метод стохастический метод имеет уже указание о температуре, что делает этот алгоритм более медленным по сравнению с "Velocity rescale". Если сравнивать полученные графики с распределением Максвелла-Больцмана, то наиболее похожи стохастический метод и Velocity rescale. Однако, если сравнивать два pdb файла между собой, то метод Velocity rescale кажется куда более адекватным, и, наверное, он лучше всего подходит для контроля температуры.