Изучение работы методов контроля температуры в GROMACS
Подготовительный этап
Подготовка файла координат и файла топологии
Имеется .gro файл с 38 молекулами этана.
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 ...
Создадим индекс файл котором будет группа из одной молекулы этана.
%%bash ## создание новой группы (из одной молекулы этана) make_ndx -f box_38.gro -o 1.ndx r 1 q ## запись новой группы в отдельный файл editconf -f box_38.gro -o et1.gro -n 1.ndx #№ задание ячейки и расположение молекулы по центру ячейки editconf -f et1.gro -o et.gro -d 2 -c
Теперь построим файл топологии et.top для этана, который выгляди примерно так et.top. Но этот вариант топологии не рабочий, надо изменить типы атомов, которые надо взять из файла на kodomo. Кроме того (как выяснилось уже при запуске mdrun) есть еще ошибка в разделе [ dihedrals ], а так же в описании связей в молекуле - не хватает строчки (исправим это сразу в файле et.top):
[ bonds ] ; ai aj funct b0 kb ... 1 3 1 ... [ angles ]
Для проверки правильности догадок используем команду:
grompp -f be.mdp -c et.gro -p et.top -o et_test.tpr
Методом научного тыка, выяснилось, что подходит (grompp не ругается) несколько сочетаний разных типов С и Н атомов (см. файлы et_correct_*_*.top в рабочей директории). Методом здравого смысла из них было выбрано сочетание et_correct_7_11.top :
opls_135 12.01100 ; alkane CH3 opls_140 1.00800 ; alkane H.
Итак, файл топологии: et_correct.top, файл координат молекулы этана et.gro
Параметры контроля температуры
- be.mdp - метод Берендсена для контроля температуры.
- vr.mdp - метод "Velocity rescale" для контроля температуры.
- nh.mdp - метод Нуза-Хувера для контроля температуры.
- an.mdp - метод Андерсена для контроля температуры.
- sd.mdp - метод стохастической молекулярной динамики.
for i in $(echo be vr nh an sd); do wget http://kodomo.fbb.msu.ru/FBB/year_08/term6/$i.mdp -O $i.mdp done
Входные файлы для mdrun (с помощью grompp)
%%bash for i in $(echo be vr nh an sd); do grompp -f $i.mdp -c et.gro -p et_correct.top -o et_$i.tpr mdrun -deffnm et_$i -v -nt 1; done
Анализ результатов
Визуальный анализ
Для визуального анализа необходима конвертация в .pdb
%%bash for i in $(echo be vr nh an sd); do trjconv -f et_${i}.trr -s et_${i}.tpr -o et_${i}.pdb done for i in $(echo be vr nh an sd); do ffmpeg -i et_${i}_states/et_${i}_state0%03d.png -b:v 5000000 -c:v libx264 et_${i}_states.mp4 done
Все команды работа в PyMol тут.
![]() |
![]() |
Рис.1. Молекула этана с двух сторон. Для всех пяти наборов параметров расчета молекулы получились абсолютно одинаковыми для первого состояния. |
Различия можно заметить между положениями молекулы в разное время (states в PyMol). Например, в методе Нуза-Хувера (nh)) в системе изменяется только длина одной C — H связи, а так же смена конформации (из заторможенной в заслоненную), в то время как другие методы изменяют как длины связей, так и углы молекулы, но не меняют конформацию (см. видео).
Видео 1. Движения молекулы этана, полученные методом Андерсена для контроля температуры. | Видео 2. Движения молекулы этана, полученные методом Берендсена для контроля температуры. |
Видео 3. Движения молекулы этана, полученные методом Нуза-Хувера для контроля температуры. | Видео 4. Движения молекулы этана, полученные методом стохастической молекулярной динамики для контроля температуры. |
Видео 5. Движения молекулы этана, полученные методом "Velocity rescale" для контроля температуры. |
Сравнение потенциальной энергии связи и кинетической энергии всех систем
for i in $(echo be vr nh an sd); do g_energy -f et_${i}.edr -o et_${i}_en.xvg >10 >11 done
Графики изменения энергий посмтроим в Gnuplot в виде dot-plot.
%%gnuplot set term png; set xrange [-5:255]; set yrange [1:1000]; set logscale y 10; set xlabel "time, ps"; set ylabel "log10 Energy"; set output "et_an_en_log.png"; plot "et_an_en.xvg" using 1:2 title "Potential energy, kJ/mol" lt rgb "#48D1CC" pointtype 7 pointsize 0.6, "et_an_en.xvg" using 1:3 title "Kinetic energy, kJ/mol" lt rgb "#BA55D3" pointtype 8 pointsize 0.6;
![]() |
![]() |
Рис.2. График изменения потенциальной и кинетической энергий в системе, полученной методом Андерсена для контроля температуры. | |
![]() |
![]() |
Рис.3. График изменения потенциальной и кинетической энергий в системе, полученной методом Берендсена для контроля температуры. | |
![]() |
![]() |
Рис.4. График изменения потенциальной и кинетической энергий в системе, полученной методом Нуза-Хувера для контроля температуры. | |
![]() |
![]() |
Рис.5. График изменения потенциальной и кинетической энергий в системе, полученной методом стохастической молекулярной динамики для контроля температуры. | |
![]() |
![]() |
Рис.6. График изменения потенциальной и кинетической энергий в системе, полученной методом "Velocity rescale" для контроля температуры. |
Как видно из графиков, изменение энергии в различных методах происходит очень по-разному.
Распределение длинны связи С-С за время моделирования
echo -e '[ b ]\n1 2' > b.ndx ##индекс файл с одной связью for i in $(echo be vr nh an sd); do g_bond -f et_${i}.trr -s et_${i}.tpr -o bond_${i}.xvg -n b.ndx ##утилита по анализу связей done
Графики распределения длинн связей посмтроим в Gnuplot в виде histogram.
set term png; set xlabel "bond length, nm"; set ylabel "quantity"; set xrange [0.14:0.17]; set yrange [0:400]; set output "et_an_bond.png"; plot "bond_an.xvg" using 1:2 title "An" with boxes lc rgb "#3CB371"; set output "et_be_bond.png"; plot "bond_be.xvg" using 1:2 title "Be" w boxes lc rgb "#3CB371"; set output "et_nh_bond.png"; plot "bond_nh.xvg" using 1:2 title "NH" w boxes lc rgb "#3CB371"; set output "et_sd_bond.png"; plot "bond_sd.xvg" using 1:2 title "SD" w boxes lc rgb "#3CB371"; set output "et_vr_bond.png"; plot "bond_vr.xvg" using 1:2 title "VR" w boxes lc rgb "#3CB371"; -->
![]() |
Рис.7. График изменения потенциальной и кинетической энергий в системе, полученной методом Андерсена для контроля температуры. |
![]() |
Рис.8. График изменения потенциальной и кинетической энергий в системе, полученной методом Берендсена для контроля температуры. |
![]() |
Рис.9. График изменения потенциальной и кинетической энергий в системе, полученной методом Нуза-Хувера для контроля температуры. |
![]() |
Рис.10. График изменения потенциальной и кинетической энергий в системе, полученной методом стохастической молекулярной динамики для контроля температуры. |
![]() |
Рис.11. График изменения потенциальной и кинетической энергий в системе, полученной методом "Velocity rescale" для контроля температуры. |
Лучше всего распределением Больцмана описываюся методы "Velocity rescale" и стохастической молекулярной динамики, распределения для методов Нуза-Хувера и Берендсена имеют слишком острый пик, т.е. длина связи меняется слабо, метод Андерсена не описывается распределением Больцмана вообще.