from IPython.display import Image,display
import io
import base64
from IPython.display import HTML
import matplotlib.pyplot as plt
import matplotlib.patches as ptch
import numpy as np
Скачаем все необходимые файлы:
!wget "http://kodomo.cmm.msu.ru/~golovin/bilayer/dppc.itp"
!wget "http://kodomo.cmm.msu.ru/~golovin/bilayer/lipid.itp"
!wget "http://kodomo.cmm.msu.ru/~golovin/bilayer/dppc.gro"
!wget "http://kodomo.cmm.msu.ru/~golovin/bilayer/b.top"
!wget "http://kodomo.cmm.msu.ru/~golovin/bilayer/em.mdp"
!wget "http://kodomo.cmm.msu.ru/~golovin/bilayer/pr.mdp"
!wget "http://kodomo.cmm.msu.ru/~golovin/bilayer/md.mdp"
Дальше создаем ячейку с 64 липидами:
genconf -f dppc.gro -o b_64.gro -nbox 4 4 4
и преобразуем gro файл в pdb:
editconf -f dppc.gro -o dppc.pdb
editconf -f b_64.gro -o b_64.pdb
Посмотрим, что получилось в PYMOL
Image(filename="lipid_1.png")
Image(filename="lipid_64.png")
Установили в b.top значение кол-ва молекул в 64...
Начальное значение силы:
Image(filename="start_power.png")
Image(filename="end_power.png")
Налили воды и получили следующий результат:
Image(filename="b_pr.png")
Image(filename="b_s.png")
С помощью команды:
scp -r * lom:_scratch/hse/mrPukenshtein
Копернули все файлы на сервер.
Запустили тест, остановились из-за лимита по времени. Значит - все ок.
Image(filename="stop.png")
Номер задачи:
Image(filename="job_nm.png")
Посмотрим видео образования бислоя:
name="b_pbc_1"
video = io.open('{0}.mp4'.format(name), 'r+b').read()
encoded = base64.b64encode(video)
display(HTML(data='<video alt="test" controls><source src="data:video/mp4;base64,{0}" type="video/mp4" /></video>'.format(encoded)))
Начиная где-то с 50 модели идет образование бислоя.
Ось , перпендикулярная поверхности бислоя: yz.
Построим зависимость y*z/(кол-во липидов в одном слое(32)) от времени.
(Чуть подправили файл , заменив @ на #)
a= np.loadtxt("box_1.xvg")
#moment of time
t=a[:,0]
y=a[:,2]
z=a[:,3]
plt.plot(t,y*z/32,'orange')
lab=ptch.Patch(color='orange',label='yz square')
plt.legend(handles=[lab])
plt.xlabel('time')
plt.ylabel('square')
plt.show()
Видно, что липиды со временем занимают меньшее пространство. Определим изменение гидрофобной и гидрофильной поверхности в ходе самосборки.
a= np.loadtxt("sas_b.xvg")
#moment of time
t=a[:,0]
phob=a[:,2]
phil=a[:,3]
plt.plot(t,phob,'orange')
plt.plot(t,phil,'blue')
lab_phob=ptch.Patch(color='orange',label='hydrophob')
lab_phil=ptch.Patch(color='blue',label='hydrophill')
plt.legend(handles=[lab_phob,lab_phil])
plt.xlabel('time')
plt.ylabel('surface')
plt.show()
Видно, что поверхности уменьшаются в размере. Гидрофильная поверхность больше в целом с течением времени.
Скачаем ndx-файл:
!wget "http://kodomo.cmm.msu.ru/~golovin/bilayer/sn1.ndx"
b= np.loadtxt("ord_start.xvg")
e=np.loadtxt("ord_end.xvg")
t=b[:,0]
order_start=b[:,1]
order_end=e[:,1]
plt.plot(t,order_start,'orange')
plt.plot(t,order_end,'blue')
lab_s=ptch.Patch(color='orange',label='start')
lab_e=ptch.Patch(color='blue',label='end')
plt.xlabel('atom number')
plt.ylabel('order')
plt.legend(handles=[lab_s,lab_e])
plt.show()
Видно, что хвост липидов в бислое лучше упорядочен, чем на начале.
import subprocess
converted = subprocess.call(["jupyter-nbconvert", '--to', 'html',"hw7_golovin.ipynb"], shell=False)
if converted==0:
print 'Your file was sucessfully converted!'
else:
print 'Smth went wrong. for instance, check the filename...'