import nglview
import IPython.display
import ipywidgets
from IPython.display import display,display_svg,SVG,Image, HTML
import __main__
from time import sleep
import pymol
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
%%bash
genconf -f dppc.gro -o b_64.gro -nbox 4 4 4
%%bash
editconf -f dppc.gro -o dppc.pdb
%%bash
editconf -f b_64.gro -o b_64.pdb
%%bash
ls
__main__.pymol_argv = ['pymol','-qc']
pymol.finish_launching()
pymol.cmd.load('b_64.pdb')
pymol.cmd.do('''
png b_64.png
''')
Image(filename='b_64.png')
__main__.pymol_argv = ['pymol','-qc']
pymol.finish_launching()
pymol.cmd.load('dppc.pdb')
pymol.cmd.do('''
png dppc.png
''')
Image(filename='dppc.png')
С помощью команды nano исправили количество липидов на 64
%%bash
editconf -f b_64.gro -o b_ec -d 0.5
%%bash
grompp -f em -c b_ec -p b -o b_em -maxwarn 2
mdrun -deffnm b_em -v
Начальное значение максимальной силы - 4.37970e+05
Конечно значени максимальной силы - 6.16887e+02
Сила значительно уменьшилась
%%bash
genbox -cp b_em -p b -cs spc216 -o b_s
%%bash
grompp -f pr -c b_s -p b -o b_pr -maxwarn 1
mdrun -deffnm b_pr -v
%%bash
editconf -f b_pr.gro -o b_pr.pdb
editconf -f b_s.gro -o b_s.pdb
Визуализация
__main__.pymol_argv = ['pymol','-qc']
pymol.finish_launching()
pymol.cmd.load('b_pr.pdb')
pymol.cmd.do('''
png b_pr.png
''')
Image(filename='b_pr.png')
__main__.pymol_argv = ['pymol','-qc']
pymol.finish_launching()
pymol.cmd.load('b_s.pdb')
pymol.cmd.do('''
png b_s.png
''')
Image(filename='b_s.png')
Есть отличие в конформации и в положение воды. b_s более плотный
scp -r ./hw9 lom:_scratch/chem/didkovskaya_hw9
ssh lom
cd _scratch/chem/didkovskaya_hw9/hw9
cp /home/users/golovin/progs/share/gromacs/top/residuetypes.dat .
grompp -f md -c b_pr -p b -o b_md -maxwarn 1
sbatch -n 4 -e error.log -o output.log -t 5 -p test impi /opt/ccoe/gromacs-5.0.4/build/bin/gmx_mpi mdrun -testverlet -deffnm b_md -v
Запускаем основное моделирование на суперкомпьтере.
sbatch -N1 --ntasks-per-node=2 -e error-gpu.log -o output.log -t 350 -p gpu impi /opt/ccoe/gromacs-5.0.4/build/bin/gmx_mpi mdrun -testverlet -deffnm b_md -v
Копируем получившиеся файлы обратно на сервер:
scp -r lom:_scratch/chem/didkovskaya_hw9/hw9/b_md.* ./
%%bash
trjconv -f b_md.xtc -s b_md.tpr -o b_pbc_1.pdb -skip 20 -pbc mol
__main__.pymol_argv = ['pymol','-qc']
pymol.finish_launching()
pymol.cmd.load('b_pbc_1.pdb')
pymol.cmd.do('''
png b_pbc_1.png
''')
Image(filename='b_pbc_1.png')
Конечное состояние:
Image(filename='end.png')#101 кадр
В промежуточных кадрах происходит что-то страшное..
Image(filename='67.png')#67 кадр
Визуально кажется, что образование происходит на 67 кадре, изображенном выше.
REMARK GENERATED BY TRJCONV
TITLE bilayer in water t= 33000.00000
CRYST1 78.069 55.409 37.098 90.00 90.00 90.00 P 1 1
MODEL 67
%%bash
g_traj -f b_md.xtc -s b_md.tpr -ob box_1.xvg
С помощью SuperSym определяем, что нормалью будет ось Х
Чтобы выудить координаты, отрежем первые 23 строки и запишем в новый файл "box_2.xvg"
box = 'box_2.xvg'
ax=np.loadtxt(box, skiprows=0)
ax[0][1:4]
time=[]
shape=[]
for i in range(len(ax)):
time.append(ax[i][0]) # время
shape.append(ax[i][1:4])
shape=np.asarray(shape) # координаты
S_xy=shape[:,0]*shape[:,1]
S_xz=shape[:,0]*shape[:,2]
S_yz=shape[:,1]*shape[:,2]
s_norm=S_yz/32
plt.plot(time, s_norm)
plt.xlabel('time')
plt.ylabel('Square of ZY')
Вид графика достаточно ожидаем после просмотра видео. Со времени структура приходит в оптимальное и упорядоченное положение, значит площадь со временем должна уменьшаться
Формируем файл и потом опять удаляем из него ненужные начальные строки. Важно: нулевой стобец-время, первый- гидрофобные, второй - гидрофильный
%%bash
g_sas -f b_md.xtc -s b_md.tpr -o sas_b.xvg -dt 100
sas = 'sas_b.xvg'
sas1=np.loadtxt(sas, skiprows=0)
time=[]
fob=[]
fil=[]
for i in range(len(sas1)):
time.append(sas1[i][0]) # время
fob.append(sas1[i][1]) # гидрофобный
fil.append(sas1[i][2]) # гидрофильный
plt.plot(time, fil,'g',label='hydrofil')
plt.plot(time, fob,'r',label='hydrofob')
plt.xlabel('time')
plt.ylabel('gidro')
plt.legend()
По графику видно, что в ходе образования бислоя уменьшаются обе площади, что ожидаемо, так как энергетически выгодно.
%%bash
wget http://kodomo.cmm.msu.ru/~golovin/bilayer/sn1.ndx
Для конца траектории:
%%bash
g_order -s b_md -f b_md.xtc -o ord_end.xvg -n sn1.ndx -b 45000 -d X
Для начала траектории:
%%bash
g_order -s b_md -f b_md.xtc -o ord_start.xvg -n sn1.ndx -e 5000 -d X
Снова с помощью функции sed отрезаем шапки файлов.
start = 'ord_start.xvg'
st=np.loadtxt(start, skiprows=0)
end = 'ord_end.xvg'
end=np.loadtxt(end, skiprows=0)
mol = st[:,0]
f_s = st[:,3]
f_e = end[:,3]
plt.plot(mol, f_s,'g',label='start',marker='o')
plt.plot(mol, f_e,'r',label='end',marker='o')
plt.xlabel('DSSP atom number')
plt.ylabel("Measure of order")
plt.legend()
Упорядоченность атомов одного из жирных хвостов липида в конце самосборки бислоя выше примерно в 4 раза, чем в начале самосборки бислоя, причем атомы, расположенные вблизи головки липида, упорядочены сильнее, чем атомы, расположенные на конце.