Анализ результатов моделирования самосборки липидного бислоя
# Любой анализ начинают с визуального анализа движений молекул. При вопросе о выводе групп выберите DPPC
trjconv -f b_md.xtc -s b_md.tpr -o b_pbc_1.pdb -skip 20
Откроем полученный b_pbc_1.pdb в Pymol
import __main__
__main__.pymol_argv = [ 'pymol', '-x' ]
import pymol
from pymol import cmd,stored
import IPython
pymol.finish_launching()
cmd.bg_color("white")
cmd.load("b_pbc_1.pdb")
Посмотрим, что получилось
import io
import base64
from IPython.display import HTML
import pymol
from pymol import cmd,stored
import IPython
pymol.finish_launching()
cmd.set("ray_trace_mode", 0)
cmd.set("ray_trace_color", "black")
cmd.mpng('prac8')
video = io.open('movie8.mp4', 'r+b').read()
encoded = base64.b64encode(video)
HTML(data='''<video alt="test" controls>
<source src="data:video/mp4;base64,{0}" type="video/mp4" />
</video>'''.format(encoded.decode('ascii')))
видео хаотично и непонятно. попробуем применить следующую команду:
trjconv -f b_md.xtc -s b_md.tpr -o b_pbc_3.pdb -skip 20 -pbc mol
cmd.bg_color("white")
cmd.load("b_pbc_3.pdb")
cmd.set("ray_trace_mode", 0)
cmd.set("ray_trace_color", "black")
cmd.mpng('prac13')
import io
import base64
from IPython.display import HTML
video = io.open('movie123.mp4', 'r+b').read()
encoded = base64.b64encode(video)
HTML(data='''<video alt="test" controls>
<source src="data:video/mp4;base64,{0}" type="video/mp4" />
</video>'''.format(encoded.decode('ascii')))
на видео видно, что что-то добавилось, но, в целом, видно плохо. покажем картинку.
import pymol
from pymol import cmd,stored
import IPython
pymol.finish_launching()
#cmd.reset()
#сделаем картинку (последний фрейм)
IPython.display.Image("prac130051.png", retina = True)
Кажется, что-то со сборкой липидного бислоя получилось, но не до конца. Возможно, что-то пошло не так на этапе подсчета, видны артефакты. Выбрали DPPC. Выберем System - сделаем структуру с молекулами воды. И рассмотрим последнюю - 51ую модель. TITLE bilayer in water t= 25000.00000
cmd.bg_color("white")
cmd.load("b_pbc_4.pdb")
cmd.do('''
show spheres, solvent
''')
cmd.set("ray_trace_mode", 0)
cmd.set("ray_trace_color", "black")
cmd.mpng('prac14')
import pymol
from pymol import cmd,stored
import IPython
pymol.finish_launching()
IPython.display.Image("prac140051.png", retina = True)
IPython.display.Image("prac140001.png", retina = True) #покажем самый первый фрейм
Ладно, судя по тому, что на картинке последнего фрейма в бислое молекулы воды не торчат, бислой образовался, хотя и странный. Теперь определим, в какой модели это все-таки произошло.
import pymol
from pymol import cmd,stored
import IPython
pymol.finish_launching()
#видео,чтобы это понять
video = io.open('movie124.mp4', 'r+b').read()
encoded = base64.b64encode(video)
HTML(data='''<video alt="test" controls>
<source src="data:video/mp4;base64,{0}" type="video/mp4" />
</video>'''.format(encoded.decode('ascii')))
видно, что вода на видео отступает
IPython.display.Image("prac140010.png", retina = True)
IPython.display.Image("prac140011.png", retina = True)
на 10 и 11 фреймах еще не совсем отступила. а вот между 22 и 23 фреймами - да
IPython.display.Image("prac140022.png", retina = True)
IPython.display.Image("prac140023.png", retina = True)
TITLE bilayer in water t= 11000.00000
определим площадь модели, занимаемую одним липидом
#размеры ячейки из траектории
g_traj -f b_md.xtc -s b_md.tpr -ob box_1.xvg
time1 = []
square = []
with open("box_1.xvg", 'r') as f1:
lines = f1.readlines()
for line in lines:
if (not line.startswith("@")) and (not line.startswith("#")):
linelist = line.split("\t")
time1.append(linelist[1])
square.append(float(linelist[3])*float(linelist[4])/32)
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
from scipy import optimize
plt.plot(time1, square, c='red',alpha=1)
plt.xlim()
plt.show()
площадь, занимаемая липидом, с течением времени уменьшается за счет того, что липиды компактизуются в пространстве и укладываются в бислой.
Определим изменение гидрофобной и гидрофильной поверхности в ходе самосборки.
g_sas -f b_md.xtc -s b_md.tpr -o sas_b.xvg
import pandas as pd
with open("sas_b.xvg", 'r') as f:
lines = [item.strip('\n') for item in f.readlines()
if (not item.startswith("@")) and (not item.startswith("#"))]
time = [int(item.split()[0]) for item in lines]
hphob = [float(item.split()[1]) for item in lines]
hphil = [float(item.split()[2]) for item in lines]
dt = pd.DataFrame({'time':time, 'Hydrophobic':hphob, 'Hydrophilic':hphil})
dt.plot(x="time", y = ["Hydrophobic", "Hydrophilic"])
plt.show()
В начале моделирования гидрофобная поверхность максимальна, весь липид доступен для воды. Но это состояние не выгодно в присутствии растворителя, и гидрофобная поверхность резко снижается - образуется мицеллоподобная структура. Выход на плато - образование бислоя (собственно, на 10 и 11 фрейме заметно довольно р гидрофобной поверхности).
Оценим меру порядка (традиционную меру оценки фазового состояния)
#был скачан индекс-файл sn1.ndx
#был запущен анализ
#нормалью к поверхности бислоя является ось X
g_order -s b_md -f b_md.xtc -o ord_start.xvg -n sn1.ndx -e 5000 -d X #для начала траектории
g_order -s b_md -f b_md.xtc -o ord_end.xvg -n sn1.ndx -b 45000 -d X #для конца траектории
Однако с параметром -b 45000 программа ломается. Судя по графикам, -b нужно поставить 25000 Получили файлы ord_start.xvg, ord_end.xvg
with open("ord_start.xvg", 'r') as f:
lines = [i.strip('\n') for i in f.readlines()
if (not i.startswith("@")) and (not i.startswith("#"))]
x = [int(i.split()[0]) for i in lines]
start = [float(i.split()[2]) for i in lines]
with open("ord_end.xvg", 'r') as f:
lines = [i.strip('\n') for i in f.readlines()
if (not i.startswith("@")) and (not i.startswith("#"))]
end = [float(i.split()[2]) for i in lines]
data = pd.DataFrame({'x':x, 'Start_order':start, 'End_order':end})
data.plot(x="x", y = ["Start_order", "End_order"])
plt.show()
В конце траектории упорядоченность сильно растет. Значения меры порядка сильно колеблются, что можно объяснить хаотичностью движений молекул липидов. В общем, мне все равно кажется, что что-то пошло не так в подсчете - с самого начала много артефактов. Хотя бы сборка бислоя (см. предыдущие графики) соответствует каким-то общим закономерностям.
Минимизация энергии: