Метадинамика

Создайте рабочую директорию.

  • Координаты белка возьмите из записи PDB:1L2Y .
  • файл настроек для минимизации энергии em.mdp
  • файл настроек для "утряски" воды pr.mdp
  • файл настроек для молекулярной динамики md.mdp
  • Теперь построим файл топологии системы в силовом поле amber99sb и файл с координатами в формате Gromacs.
    1gmx pdb2gmx -f p.pdb -o p -p  -ff amber99sb -water tip3p
    
  • Делаем небольшой отступ в ячейке от белка.
    1gmx editconf -f p.gro -o p_ec -d 1.5
    
  • Проведём оптимизацию геометрии системы, что бы удалить "плохие" контакты в молекуле.
    1gmx grompp -f em -c p_ec -p  -o p_em -maxwarn 1
    2gmx mdrun -deffnm dna_p -v
    

    *Отметье в отчёте изменение максимальной силы в ходе оптимизации геометрии. Знаесите начальное и конечное значение максимальной силы.
  • Добавим в ячейку молекулы воды
    1gmx genbox -cp p_em -p  -cs  -o p_s
    
  • Нейтрализуем заряд системы. Это делаем в два шага: строим tpr и запускаем genion. В выводе grompp обратите внимание на информацию о заряде системы.
    1gmx grompp -f em -p  -c p_s -o p_s
    2gmx genion -s p_s -o p_si -p  -neutral -conc 0.15
    
  • Проведём "утряску" воды:
    1gmx grompp -f pr -c p_si -p  -o p_pr -maxwarn 1
    2gmx mdrun -deffnm p_pr -v
    
  • Cравните визуально изменения в системах p_pr.gro и p_si.gro . Занесите наблюдения в отчёт.
  • Запускаем тестовое моделирование молекулярной динамики.
    1gmx grompp -f md -c p_pr -p  -o p_md -maxwarn 1
    2gmx mdrun  -deffnm p_md -v -nsteps 1000000 -ntomp 4
    

    Просмотреть ход счёта можно в файле p_md.log

Метадинамика

  • Попробуем странную штуку https://github.com/spiwokv/af2cv/tree/main
  • Pickle для белка можно сделать в ColabFold с выбором AlphaFold2_mmseqs2 и обязательно поставить галочку Save All. Pickle будет в архиве.
  • Вероятно, что при утряске воды система будет взрываться, надо в em.mdp поменять integrator на steep. И потом:
1gmx grompp -f em -c p_si -p  -o p_em2 -maxwarn 1
2gmx mdrun -deffnm p_em2 -v
3gmx grompp -f pr -c p_em2 -p  -o p_pr -maxwarn 1
4gmx mdrun -deffnm p_pr -v
  • Скопируйте себе библиотеку для этой CV и файл plumed.dat
  • В начале файла надо внести изменения в путь к библиотеке с CV

Для варианта дизайна этого пептида надо догадаться как поменять номера атомов в двух местах: WHOLEMOLECULES и ATOMS=

  • Запускаем
1gmx  mdrun -deffnm p_md -ntomp 4 -v  -plumed plumed.dat

Анализ метадинамики

  • В ходе расчета у вас получились файлы со структурами : trr и xtc
  • Файл HILLS это информация об наложенных потенциалах, это тот самый "песок"
  • Файл COLVAR это файл в который сохраняли значения CV и сумарное наложенный bias.
  • Посомотрите на результат в PyMol
        gmx trjconv -f p_md -s p_md -o view1.pdb -skip 20 -pbc mol
        или
        trjconv -f p_md.xtc -s p_md.tpr -o view2.pdb -skip 20 -fit rot+trans
  • Воспользуйтесь plumed sum_hills для востановления поверхности свободной энергии
  • Используя matplotlib и подобное постройте график
  • Попробуйте придумать способ для оценки сходимости
  • Давайте попробуем построить график FES на основе перевзвешенных данных.
         plumed driver --plumed rew.dat --noatoms
  • Постройте график и сравните с sum_hills
  • Возможно это не самая лучшая переменная, давайте попробуем превзвесить на радиус инерции (предположительное распрямление белка)
  • Расчитаем RG c помошью этих директив в отдельном dat файле
        rg: GYRATION TYPE=RADIUS ATOMS=1-284
        PRINT ARG=rg STRIDE=1 FILE=rg
  • Расчёт новой переменной будет сделан в новый файл
        plumed driver --plumed rg.dat --mf_trr p_md.trr
  • Теперь надо скомбинировать данные meta.rbias из COLVAR и значения радиуса гирации в один новый файл формата COLVAR , обратите внимание на разницу в шаге. Вот некоторые функции в помощь
        def GetPlumedColumns(f):
            with open(f,'r') as dat:
            arr = dat.readline().split()
            return arr[2:]

        def LoadNumpy(f,names):
            a = np.loadtxt(f)
            df = pd.DataFrame()
            for i,n in enumerate(names):
            df[n] = a[:,i]
            return copy.deepcopy(df)

        def combinevars(.......):
            c = LoadNumpy(file, cnames )
            gr = LoadNumpy(file, danames )
            out =  pd.merge(crf, da, on='time')
  • Расчитайте график свободной энергии в завимисомти от радиуса инерции, надо сделать новый rev.dat
  • Попрбуйте сделать анализ от двух переменных RG и alfascore
  • Может есть силы поискать другие переменные которые могут лучше описывать процесс : https://www.plumed.org/doc-v2.9/user-doc/html/_colvar.html
  • Для выбранной переменной сделайте анализ мутантного белка и ранее стабилизированного белка, данные лежат выше *

Подсказка

Общий пайплан построения FES : Подготовить COLVAR (слить, фильтровать) - Адаптировать rew.dat - Запустить plumed driver --plumed rew.dat --noatoms

  • На hub запуск Plumed:
        /home/anur/miniconda3/envs/plumed/bin/plumed driver --plumed rew2d.dat --noatoms
  • Для работы дома надо подготовить все возможные COLVAR и положить их в свою директорию на hub