Task8a
Version 8 (Andrey Golovin, 09.11.2023 17:24)
1 | 1 | Andrey Golovin | h1. Изучение работы методов контроля температуры в молекулярной динамике |
---|---|---|---|
2 | 1 | Andrey Golovin | |
3 | 1 | Andrey Golovin | |
4 | 1 | Andrey Golovin | Традиционные ссылки на полезные ресурсы: |
5 | 1 | Andrey Golovin | |
6 | 8 | Andrey Golovin | * Уроки по работе с GROMACS находятся https://tutorials.gromacs.org/ http://www.mdtutorials.com/gmx/. |
7 | 8 | Andrey Golovin | * Введение в скриптование в Bash http://www.opennet.ru/docs/RUS/bash_scripting_guide . |
8 | 5 | Andrey Golovin | * Colab заготовка находится тут https://colab.research.google.com/drive/1ztk3rEzEJWLd3mgHS45ElsM-Vj5zLROf?usp=sharing . |
9 | 5 | Andrey Golovin | * Важно установить Gromacs если вы работаете локально. |
10 | 1 | Andrey Golovin | |
11 | 1 | Andrey Golovin | |
12 | 1 | Andrey Golovin | *Сегодня мы будем изучать как реализован контроль температуры в молекулярной динамике на примере GROMACS. Объект исследования это одна молекула этана.* |
13 | 1 | Andrey Golovin | |
14 | 1 | Andrey Golovin | |
15 | 1 | Andrey Golovin | |
16 | 2 | Andrey Golovin | * 1. Начнем с того, что подготовим файл координат и файл топологии. |
17 | 1 | Andrey Golovin | |
18 | 1 | Andrey Golovin | > # Вам предоставлен gro файл(http://kodomo.fbb.msu.ru/FBB/year_08/term6/etane.gro) с координатами этана. |
19 | 1 | Andrey Golovin | > # Построим файл топологии et.top для этана, который выгляди примерно так: |
20 | 1 | Andrey Golovin | |
21 | 1 | Andrey Golovin | <pre> |
22 | 1 | Andrey Golovin | |
23 | 1 | Andrey Golovin | #include "/usr/share/gromacs/top/oplsaa.ff/forcefield.itp" |
24 | 1 | Andrey Golovin | |
25 | 1 | Andrey Golovin | [ moleculetype ] |
26 | 1 | Andrey Golovin | ; Name nrexcl |
27 | 1 | Andrey Golovin | et 3 |
28 | 1 | Andrey Golovin | |
29 | 1 | Andrey Golovin | [ atoms ] |
30 | 1 | Andrey Golovin | ; nr type resnr residue atom cgnr charge mass |
31 | 1 | Andrey Golovin | 1 CX 1 ETH C1 1 -0.189 12.01 |
32 | 1 | Andrey Golovin | 2 CX 1 ETH C2 2 -0.155 12.01 |
33 | 1 | Andrey Golovin | 3 HX 1 ETH H1 3 0.0059 1.008 |
34 | 1 | Andrey Golovin | 4 HX 1 ETH H2 4 0.0059 1.008 |
35 | 1 | Andrey Golovin | 5 HX 1 ETH H3 5 0.0059 1.008 |
36 | 1 | Andrey Golovin | 6 HX 1 ETH H4 6 0.0056 1.008 |
37 | 1 | Andrey Golovin | 7 HX 1 ETH H5 7 0.0056 1.008 |
38 | 1 | Andrey Golovin | 8 HX 1 ETH H6 8 0.0056 1.008 |
39 | 1 | Andrey Golovin | |
40 | 1 | Andrey Golovin | [ bonds ] |
41 | 1 | Andrey Golovin | ; ai aj funct b0 kb |
42 | 1 | Andrey Golovin | 1 2 1 |
43 | 1 | Andrey Golovin | 1 3 1 |
44 | 1 | Andrey Golovin | 1 4 1 |
45 | 1 | Andrey Golovin | 1 5 1 |
46 | 1 | Andrey Golovin | ........... |
47 | 1 | Andrey Golovin | надо дописать |
48 | 1 | Andrey Golovin | |
49 | 1 | Andrey Golovin | [ angles ] |
50 | 1 | Andrey Golovin | ; ai aj ak funct phi0 kphi |
51 | 1 | Andrey Golovin | ;around c1 |
52 | 1 | Andrey Golovin | 3 1 4 1 |
53 | 1 | Andrey Golovin | 4 1 5 1 |
54 | 1 | Andrey Golovin | 3 1 5 1 |
55 | 1 | Andrey Golovin | 2 1 3 1 |
56 | 1 | Andrey Golovin | 2 1 4 1 |
57 | 1 | Andrey Golovin | 2 1 5 1 |
58 | 1 | Andrey Golovin | ;around c2 |
59 | 1 | Andrey Golovin | ........... |
60 | 1 | Andrey Golovin | надо дописать |
61 | 1 | Andrey Golovin | |
62 | 1 | Andrey Golovin | [ dihedrals ] |
63 | 1 | Andrey Golovin | ; ai aj ak al funct |
64 | 1 | Andrey Golovin | 3 1 2 6 1 |
65 | 1 | Andrey Golovin | 3 1 2 7 1 |
66 | 1 | Andrey Golovin | 3 1 2 8 1 |
67 | 1 | Andrey Golovin | 4 1 2 6 1 |
68 | 1 | Andrey Golovin | ........... |
69 | 1 | Andrey Golovin | надо дописать |
70 | 1 | Andrey Golovin | |
71 | 1 | Andrey Golovin | [ pairs ] |
72 | 1 | Andrey Golovin | ; список атомов 1-4 |
73 | 1 | Andrey Golovin | ; ai aj funct |
74 | 1 | Andrey Golovin | 3 6 |
75 | 1 | Andrey Golovin | 3 7 |
76 | 1 | Andrey Golovin | 3 8 |
77 | 1 | Andrey Golovin | 4 6 |
78 | 1 | Andrey Golovin | 4 7 |
79 | 1 | Andrey Golovin | 4 8 |
80 | 1 | Andrey Golovin | 5 6 |
81 | 1 | Andrey Golovin | 5 7 |
82 | 1 | Andrey Golovin | 5 8 |
83 | 1 | Andrey Golovin | |
84 | 1 | Andrey Golovin | [ System ] |
85 | 1 | Andrey Golovin | ; any text here |
86 | 1 | Andrey Golovin | first one |
87 | 1 | Andrey Golovin | [ molecules ] |
88 | 1 | Andrey Golovin | ;Name count |
89 | 1 | Andrey Golovin | et 1 |
90 | 1 | Andrey Golovin | |
91 | 1 | Andrey Golovin | </pre> |
92 | 1 | Andrey Golovin | |
93 | 1 | Andrey Golovin | Этот вариант топологии работать не будет, надо изменить типы атомов. |
94 | 1 | Andrey Golovin | |
95 | 1 | Andrey Golovin | <pre> |
96 | 1 | Andrey Golovin | %%bash |
97 | 1 | Andrey Golovin | cat /usr/share/gromacs/top/oplsaa.ff/atomtypes.atp |
98 | 1 | Andrey Golovin | </pre> |
99 | 1 | Andrey Golovin | |
100 | 1 | Andrey Golovin | или намек как это сделать программно: |
101 | 1 | Andrey Golovin | <pre><code class="python"> |
102 | 1 | Andrey Golovin | # загрузим модули |
103 | 1 | Andrey Golovin | import rdkit |
104 | 1 | Andrey Golovin | from rdkit import Chem |
105 | 1 | Andrey Golovin | from rdkit.Chem import AllChem, Draw |
106 | 1 | Andrey Golovin | from rdkit.Chem import Descriptors |
107 | 1 | Andrey Golovin | from rdkit import RDConfig |
108 | 1 | Andrey Golovin | from IPython.display import Image,display |
109 | 1 | Andrey Golovin | import numpy as np |
110 | 1 | Andrey Golovin | </code></pre> |
111 | 1 | Andrey Golovin | |
112 | 1 | Andrey Golovin | <pre><code class="python"> |
113 | 1 | Andrey Golovin | # создадим этан |
114 | 1 | Andrey Golovin | mol=Chem.MolFromSmiles('CC') |
115 | 1 | Andrey Golovin | AllChem.Compute2DCoords(mol) |
116 | 1 | Andrey Golovin | m3d=Chem.AddHs(mol) |
117 | 1 | Andrey Golovin | Chem.AllChem.EmbedMolecule(m3d) |
118 | 1 | Andrey Golovin | AllChem.MMFFOptimizeMolecule(m3d,maxIters=500,nonBondedThresh=200 ) |
119 | 1 | Andrey Golovin | </code></pre> |
120 | 1 | Andrey Golovin | |
121 | 1 | Andrey Golovin | <pre><code class="python"> |
122 | 1 | Andrey Golovin | # и придумаем циклы |
123 | 1 | Andrey Golovin | ## связи |
124 | 1 | Andrey Golovin | bonds = m3d.GetBonds() |
125 | 1 | Andrey Golovin | for i,b in enumerate(bonds): |
126 | 1 | Andrey Golovin | print b.GetBeginAtomIdx() , b.GetEndAtomIdx() |
127 | 1 | Andrey Golovin | |
128 | 1 | Andrey Golovin | ## углы |
129 | 1 | Andrey Golovin | for b1 in m3d.GetBonds(): |
130 | 1 | Andrey Golovin | for b2 in m3d.GetBonds(): |
131 | 1 | Andrey Golovin | if b1.GetBeginAtomIdx() == b2.GetBeginAtomIdx() and b1.GetIdx() != b2.GetIdx(): |
132 | 1 | Andrey Golovin | print b1.GetEndAtomIdx() , b1.GetBeginAtomIdx(), b2.GetEndAtomIdx() |
133 | 1 | Andrey Golovin | ## dihedrals |
134 | 1 | Andrey Golovin | for b1 in m3d.GetBonds(): |
135 | 1 | Andrey Golovin | for b2 in m3d.GetBonds(): |
136 | 1 | Andrey Golovin | for b3 in .... |
137 | 1 | Andrey Golovin | ....... |
138 | 1 | Andrey Golovin | </code></pre> |
139 | 1 | Andrey Golovin | |
140 | 1 | Andrey Golovin | |
141 | 2 | Andrey Golovin | * 2 Вам даны 5 файлов с разными параметрами контроля температуры: |
142 | 2 | Andrey Golovin | > * http://kodomo.fbb.msu.ru/FBB/year_08/term6/be.mdp - метод Берендсена для контроля температуры. |
143 | 2 | Andrey Golovin | > * http://kodomo.fbb.msu.ru/FBB/year_08/term6/vr.mdp - метод "Velocity rescale" для контроля температуры. |
144 | 2 | Andrey Golovin | > * http://kodomo.fbb.msu.ru/FBB/year_08/term6/nh.mdp - метод Нуза-Хувера для контроля температуры. |
145 | 2 | Andrey Golovin | > * http://kodomo.fbb.msu.ru/FBB/year_08/term6/sd.mdp - метод стохастической молекулярной динамики. |
146 | 1 | Andrey Golovin | |
147 | 1 | Andrey Golovin | Начиная с этого момента вы можете написать функции, а можете делать всё вручную. |
148 | 2 | Andrey Golovin | |
149 | 4 | Student HSE | * 3 Очень краткое описание программ и типов файлов вы можете найти "здесь":https://kodomo.fbb.msu.ru/wiki/Main/Modelling/BioNanoPrac Сначала надо построить входные файлы для молекулярно-динамического движка mdrun с помощью grompp: |
150 | 1 | Andrey Golovin | |
151 | 1 | Andrey Golovin | <pre><code class="python"> |
152 | 6 | Andrey Golovin | gmx grompp -f %s.mdp -c et.gro -p et.top -o et_%s.tpr |
153 | 1 | Andrey Golovin | # где i: be,vr,nh,an,sd см. выше список mdp файлов |
154 | 1 | Andrey Golovin | </code></pre> |
155 | 1 | Andrey Golovin | |
156 | 2 | Andrey Golovin | *Задать i вне скрипта можно командой export i="be". * |
157 | 1 | Andrey Golovin | |
158 | 2 | Andrey Golovin | * 4 У Вас должно получиться 5 tpr файлов. Теперь для каждого из них запустим mdrun. |
159 | 1 | Andrey Golovin | <pre><code class="python"> |
160 | 6 | Andrey Golovin | gmx mdrun -deffnm et_%s -v -nt 1 |
161 | 1 | Andrey Golovin | </code></pre> |
162 | 1 | Andrey Golovin | |
163 | 2 | Andrey Golovin | * 5 Теперь переходим к анализу результатов. Начнем с визуального анализа. Для каждой из 5 систем проведите конвертацию в pdb и просмотрите в PyMol. |
164 | 1 | Andrey Golovin | <pre><code class="python"> |
165 | 6 | Andrey Golovin | gmx trjconv -f et_%s.trr -s et_%s.tpr -o et_%s.pdb |
166 | 1 | Andrey Golovin | </code></pre> |
167 | 1 | Andrey Golovin | |
168 | 1 | Andrey Golovin | В отчёт занесите ваши наблюдения и предварительные выводы. |
169 | 2 | Andrey Golovin | * 6 Сравним потенциальную энергию и кинетическую энергию для каждой из 5 систем. |
170 | 1 | Andrey Golovin | |
171 | 1 | Andrey Golovin | <pre><code class="python"> |
172 | 6 | Andrey Golovin | echo -e "12\n13" | gmx energy -f et_%s.edr -o et_%s_en.xvg -xvg none |
173 | 1 | Andrey Golovin | </code></pre> |
174 | 1 | Andrey Golovin | |
175 | 1 | Andrey Golovin | Постройте графики изменения энергий. Рекомендуемый вид это lines. Графики добавьте в отчёт. |
176 | 1 | Andrey Golovin | Удобно загружать данные с numpy.loadtxt |
177 | 1 | Andrey Golovin | |
178 | 1 | Andrey Golovin | <pre><code class="python"> |
179 | 1 | Andrey Golovin | import numpy as np |
180 | 1 | Andrey Golovin | a= np.loadtxt('%s.xvg' % name) |
181 | 1 | Andrey Golovin | t=a[:,0] |
182 | 1 | Andrey Golovin | y=... догадайтесь |
183 | 1 | Andrey Golovin | </code></pre> |
184 | 1 | Andrey Golovin | |
185 | 1 | Andrey Golovin | |
186 | 2 | Andrey Golovin | * 7 Рассмотрим распределение длинны связи С-С за время моделирования. Сначала создадим индекс файл с одной связью. В текстовом редакторе создайте файл b.ndx со следующим содержимым: |
187 | 1 | Andrey Golovin | <pre> |
188 | 1 | Andrey Golovin | [ b ] |
189 | 1 | Andrey Golovin | 1 2 |
190 | 1 | Andrey Golovin | </code></pre> |
191 | 1 | Andrey Golovin | |
192 | 1 | Andrey Golovin | И запустим утилиту по анализу связей g_bond: |
193 | 1 | Andrey Golovin | |
194 | 1 | Andrey Golovin | <pre><code class="python"> |
195 | 6 | Andrey Golovin | gmx distance -f et_%s.trr -s et_%s.tpr -o bond_%s.xvg -n b.ndx -xvg none |
196 | 1 | Andrey Golovin | </code></pre> |
197 | 1 | Andrey Golovin | Постройте графики распределения длинн связей. Рекомендуемый вид это гистограмма. Графики добавьте в отчёт. |
198 | 1 | Andrey Golovin | |
199 | 2 | Andrey Golovin | * 8 Учитывая форму распределения Больцмана и все Ваши наблюдения сделайте вывод о том какой из методов позволяет наиболее реалистично поддерживать температуру в системе. Опишите найденные Вами недостатки предложенных алгоритмов. Постройте таблицу зависимости быстродействия от алгоритма. |