#pragma css /css/2017.css
<<BI>>




= Изучение работы методов контроля температуры в молекулярной динамике =



Традиционные ссылки на полезные ресурсы: 
 * Уроки по работе с GROMACS находятся [[http://www.gromacs.org/Documentation/Tutorials|здесь]].



'''Сегодня мы будем изучать как реализован контроль температуры в молекулярной динамике на примере GROMACS. Объект исследования это одна молекула этана.'''
<<BR>>


 1. Начнем с того, что подготовим файл координат и файл топологии. 

 a. Вам предоставлен gro файл(http://kodomo.fbb.msu.ru/FBB/year_08/term6/etane.gro) с координатами этана.
 a. Построим  файл топологии et.top для этана, который выгляди примерно так: 

   {{{

#include "/usr/share/gromacs/top/oplsaa.ff/forcefield.itp"

[ moleculetype ]
; Name            nrexcl
et            3

[ atoms ]
;   nr  type  resnr  residue  atom   cgnr     charge       mass
    1   CX      1    ETH      C1      1    -0.189      12.01
    2   CX      1    ETH      C2      2    -0.155      12.01
    3   HX      1    ETH      H1      3     0.0059       1.008
    4   HX      1    ETH      H2      4     0.0059       1.008
    5   HX      1    ETH      H3      5     0.0059       1.008
    6   HX      1    ETH      H4      6     0.0056       1.008
    7   HX      1    ETH      H5      7     0.0056       1.008
    8   HX      1    ETH      H6      8     0.0056       1.008
    
[ bonds ]
;  ai    aj funct  b0       kb
     1   2   1  
     1   3   1
     1   4   1  
     1   5   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
........... 
надо дописать 

[ dihedrals ]
;  ai    aj    ak    al funct  
    3    1     2     6      1  
    3    1     2     7      1 
    3    1     2     8      1  
    4    1     2     6      1  
 ........... 
надо дописать 
 
[ pairs ]
; список атомов 1-4
;  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
    }}}

Этот вариант тпологии работать не будет, надо изменить типы атомов.

Вам придется угадать типы атомов из файла на kodomo:
{{{
%%bash
cat /usr/share/gromacs/top/oplsaa.ff/atomtypes.atp
}}}

{{{#!wiki green/solid
Есть ещё один квест, 1 после номеров атомов это тип потенциала. Неожиданно в поле OPLS тип функционала для торсионных углов не "1". Узнайте какой это тип. Посмотрите файл /usr/share/gromacs/top/oplsaa.ff/forcefield.itp там будет ссылка на файл с парметрами для ковалентных взаимодействий, в том файле и надо найти нужное значение для типа dihedrals.
}}}

или намек как это сделать программно:
{{{#!highlight python
# загрузим модули
import rdkit
from rdkit import Chem
from rdkit.Chem import AllChem, Draw
from rdkit.Chem import Descriptors
from rdkit import RDConfig
from IPython.display import Image,display
import numpy as np
}}}

{{{#!highlight python
# создадим этан
mol=Chem.MolFromSmiles('CC')
AllChem.Compute2DCoords(mol)
m3d=Chem.AddHs(mol)
Chem.AllChem.EmbedMolecule(m3d)
AllChem.MMFFOptimizeMolecule(m3d,maxIters=500,nonBondedThresh=200 )
}}}

{{{#!highlight python
# и придумаем циклы 
## связи
bonds = m3d.GetBonds()
for i,b in enumerate(bonds):
    print b.GetBeginAtomIdx() , b.GetEndAtomIdx()

## углы    
for b1 in m3d.GetBonds():
    for b2 in m3d.GetBonds():
        if b1.GetBeginAtomIdx() == b2.GetBeginAtomIdx() and b1.GetIdx() != b2.GetIdx():
            print b1.GetEndAtomIdx() , b1.GetBeginAtomIdx(), b2.GetEndAtomIdx()
## dihedrals            
for b1 in m3d.GetBonds():
    for b2 in m3d.GetBonds():
        for b3 in ....
             .......
            
}}}


 1.#2 Вам даны 5 конфигурационных  файлов с разными  алгоритмами контроля температуры:
    * [[http://kodomo.fbb.msu.ru/FBB/year_08/term6/be.mdp|be.mdp]] - метод Берендсена для контроля температуры.
    * [[http://kodomo.fbb.msu.ru/FBB/year_08/term6/vr.mdp|vr.mdp]] - метод "Velocity rescale" для контроля температуры.
    * [[http://kodomo.fbb.msu.ru/FBB/year_08/term6/nh.mdp|nh.mdp]] - метод Нуза-Хувера для контроля температуры.
    * [[http://kodomo.fbb.msu.ru/FBB/year_08/term6/an.mdp|an.mdp]] - метод Андерсена для контроля температуры.
    * [[http://kodomo.fbb.msu.ru/FBB/year_08/term6/sd.mdp|sd.mdp]] - метод стохастической молекулярной динамики.

Начиная с этого момента вы можете написать функции, а можете делать всё вручную. 

 1.#3 Очень краткое описание программ и типов файлов вы можете найти [[https://kodomo.fbb.msu.ru/wiki/Main/Modelling/BioNanoPrac|здесь]] Сначала надо построить входные файлы для молекулярно-динамического движка mdrun с помощью grompp: 
{{{#!highlight bash 
gmx grompp -f %s.mdp -c et.gro -p et.top -o et_%s.tpr
# где i: be,vr,nh,an,sd  см. выше список mdp файлов
}}}
'''Задать i вне скрипта можно командой export i="be".  '''
 1.#4 У Вас должно получиться 5 tpr файлов. Теперь для каждого из них запустим mdrun.
{{{#!highlight bash 
gmx mdrun -deffnm et_%s -v -nt 1
}}}
 1.#5 Теперь переходим к анализу результатов. Начнем с визуального анализа. Для каждой из 5 систем проведите конвертацию в pdb и просмотрите в PyMol.
{{{#!highlight bash 
gmx trjconv -f et_%s.trr -s et_%s.tpr -o et_%s.pdb
}}}
В отчёт занесите ваши наблюдения и предварительные выводы. 
 1.#6 Сравним потенциальную энергию и кинетическую энергию для каждой из 5 систем.
{{{#!highlight bash 
gmx energy -f et_%s.edr -o et_%s_en.xvg -xvg none
}}}

Постройте графики изменения энергий. Рекомендуемый вид это lines. Графики добавьте в отчёт.
Удобно загружать данные с numpy.loadtxt
{{{#!highlight python
import numpy as np
a= np.loadtxt('%s.xvg' % name)
t=a[:,0]
y=... догадайтесь
}}}

 1.#7 Рассмотрим распределение длинны связи С-С за время моделирования. Сначала создадим индекс файл с одной связью. В текстовом редакторе создайте файл b.ndx со следующим содержимым:
{{{#!highlight bash 
[ b ]
1 2 
}}}

И запустим утилиту по анализу связей distance :

{{{#!highlight bash 
gmx distance -f et_%s.trr -s et_%s.tpr -oh bond_%s.xvg -n b.ndx -xvg none
}}}
Постройте графики распределения длинн связей. Рекомендуемый вид это гистограмма. Графики добавьте в отчёт.

 1.#8 Учитывая форму распределения Больцмана и все Ваши наблюдения сделайте вывод о том какой из методов позволяет наиболее реалистично поддерживать температуру в системе. Опишите найденные Вами недостатки предложенных алгоритмов. Постройте таблицу зависимости быстродействия от алгоритма.