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
__main__.pymol_argv = ['pymol','-qc']
pymol.finish_launching()
pymol.cmd.reinitialize()
pymol.cmd.load('b_64.pdb')
pymol.cmd.do('''
png b_64.png
''')
Image(filename='b_64.png')
Заменили 34 на 64 в файле b.top
%%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
%%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_s.pdb')
pymol.cmd.do('''
png b_s.png
''')
Image(filename='b_s.png') #картинка, когда добавили воду
__main__.pymol_argv = ['pymol','-qc']
pymol.finish_launching()
pymol.cmd.reinitialize()
pymol.cmd.load('b_pr.pdb')
pymol.cmd.do('''
png b_pr.png
''')
Image(filename='b_pr.png') #картинка, когда утрясли воду
В самом деле, последняя картинка менее "беспорядочна".
Запустил на Ломоносове 1652073 test, output.log пустой, в error.log ошибка GPU
Попробовал еще раз, 1652110 test2, то же самое, но вроде это нормально.
Запустил основное моделирование 1652128
Скачал файлы после окончания, вроде бы в error-gpu.log все хорошо
# ! trjconv -f b_md.xtc -s b_md.tpr -o b_pbc_1.pdb -skip 20 -pbc mol
В целом, исходная структура сразу "ломается", и кажется, что где-то к 65 кадру мы видим четкое разделение на два слоя
Image(filename='fr0001.png')
Image(filename='fr0035.png')
Image(filename='fr0065.png') # 65-ый фрейм
Image(filename='fr0101.png') # конечное состояние
REMARK GENERATED BY TRJCONV
TITLE bilayer in water t= 32000.00000
REMARK THIS IS A SIMULATION BOX
CRYST1 75.084 53.290 40.208 90.00 90.00 90.00 P 1 1
MODEL 65
# g_traj -f b_md.xtc -s b_md.tpr -ob box_1.xvg
x - нормаль
import pandas as pd
coordinates = pd.read_csv('box_1.xvg', header = None, skiprows = 24, sep='\t')
coordinates = coordinates[[1,2,3,4]]
coordinates.columns = ['t', 'x', 'y', 'z']
coordinates.head(10)
plt.figure(figsize=(15,8))
lip_sizes = np.array(coordinates['y'])*np.array(coordinates['z'])/32. #32 - количество липидов в слое
plt.plot(np.array(coordinates['t']), lip_sizes);
Структура стремится к порядку.
#! g_sas -f b_md.xtc -s b_md.tpr -o sas_b.xvg -dt 100
hydro = pd.read_csv('sas_b.xvg', header = None, skiprows = 22, sep='\s+')
hydro = hydro[[0,1,2]]
hydro.columns = ['t', 'Hydrophobic', 'Hydrophilic']
hydro.head(10)
plt.figure(figsize=(17,8))
plt.plot(np.array(hydro['t']), hydro['Hydrophobic'], label='Hydrophobic', color='red');
plt.plot(np.array(hydro['t']), hydro['Hydrophilic'], label='Hydrophilic', color='blue');
plt.legend();
Обе площади уменьшаются, тем самым уменьшая энергию системы и приводя к самосборке
! 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 #для начала траектории
start = pd.read_csv('ord_start.xvg', header = None, skiprows = 12, sep='\s+')
end = pd.read_csv('ord_end.xvg', header = None, skiprows = 12, sep='\s+')
start.head()
plt.figure(figsize=(17,8))
plt.plot(np.array(start[0]), start[3], label='Start', color='red');
plt.plot(np.array(end[0]), end[3], label='End', color='green');
plt.legend();
Упорядоченность в конце сборки сильно выше, чем в начале