Домашнее задание №9

Моделирование самосборки липидного бислоя (Whaaat?? Not again....)

In [24]:
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

Скачаем все необходимые файлы:

In [1]:
!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"
--2017-12-22 14:32:33--  http://kodomo.cmm.msu.ru/~golovin/bilayer/dppc.itp
Resolving kodomo.cmm.msu.ru (kodomo.cmm.msu.ru)... 93.180.63.127
Connecting to kodomo.cmm.msu.ru (kodomo.cmm.msu.ru)|93.180.63.127|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 12772 (12K)
Saving to: `dppc.itp'

100%[======================================>] 12,772      --.-K/s   in 0s      

2017-12-22 14:32:33 (87.3 MB/s) - `dppc.itp' saved [12772/12772]

--2017-12-22 14:32:33--  http://kodomo.cmm.msu.ru/~golovin/bilayer/lipid.itp
Resolving kodomo.cmm.msu.ru (kodomo.cmm.msu.ru)... 93.180.63.127
Connecting to kodomo.cmm.msu.ru (kodomo.cmm.msu.ru)|93.180.63.127|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 34337 (34K)
Saving to: `lipid.itp'

100%[======================================>] 34,337      --.-K/s   in 0s      

2017-12-22 14:32:33 (163 MB/s) - `lipid.itp' saved [34337/34337]

--2017-12-22 14:32:33--  http://kodomo.cmm.msu.ru/~golovin/bilayer/dppc.gro
Resolving kodomo.cmm.msu.ru (kodomo.cmm.msu.ru)... 93.180.63.127
Connecting to kodomo.cmm.msu.ru (kodomo.cmm.msu.ru)|93.180.63.127|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2329 (2.3K)
Saving to: `dppc.gro'

100%[======================================>] 2,329       --.-K/s   in 0s      

2017-12-22 14:32:33 (385 MB/s) - `dppc.gro' saved [2329/2329]

--2017-12-22 14:32:33--  http://kodomo.cmm.msu.ru/~golovin/bilayer/b.top
Resolving kodomo.cmm.msu.ru (kodomo.cmm.msu.ru)... 93.180.63.127
Connecting to kodomo.cmm.msu.ru (kodomo.cmm.msu.ru)|93.180.63.127|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 573
Saving to: `b.top'

100%[======================================>] 573         --.-K/s   in 0s      

2017-12-22 14:32:33 (68.7 MB/s) - `b.top' saved [573/573]

--2017-12-22 14:32:33--  http://kodomo.cmm.msu.ru/~golovin/bilayer/em.mdp
Resolving kodomo.cmm.msu.ru (kodomo.cmm.msu.ru)... 93.180.63.127
Connecting to kodomo.cmm.msu.ru (kodomo.cmm.msu.ru)|93.180.63.127|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1088 (1.1K)
Saving to: `em.mdp'

100%[======================================>] 1,088       --.-K/s   in 0s      

2017-12-22 14:32:33 (157 MB/s) - `em.mdp' saved [1088/1088]

--2017-12-22 14:32:33--  http://kodomo.cmm.msu.ru/~golovin/bilayer/pr.mdp
Resolving kodomo.cmm.msu.ru (kodomo.cmm.msu.ru)... 93.180.63.127
Connecting to kodomo.cmm.msu.ru (kodomo.cmm.msu.ru)|93.180.63.127|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1164 (1.1K)
Saving to: `pr.mdp'

100%[======================================>] 1,164       --.-K/s   in 0s      

2017-12-22 14:32:34 (175 MB/s) - `pr.mdp' saved [1164/1164]

--2017-12-22 14:32:34--  http://kodomo.cmm.msu.ru/~golovin/bilayer/md.mdp
Resolving kodomo.cmm.msu.ru (kodomo.cmm.msu.ru)... 93.180.63.127
Connecting to kodomo.cmm.msu.ru (kodomo.cmm.msu.ru)|93.180.63.127|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1277 (1.2K)
Saving to: `md.mdp'

100%[======================================>] 1,277       --.-K/s   in 0s      

2017-12-22 14:32:34 (167 MB/s) - `md.mdp' saved [1277/1277]

Дальше создаем ячейку с 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

In [5]:
Image(filename="lipid_1.png")
Out[5]:
In [6]:
Image(filename="lipid_64.png")
Out[6]:

Установили в b.top значение кол-ва молекул в 64...

Начальное значение силы:

In [7]:
Image(filename="start_power.png")
Out[7]:
In [8]:
Image(filename="end_power.png")
Out[8]:

Налили воды и получили следующий результат:

In [9]:
Image(filename="b_pr.png")
Out[9]:
In [10]:
Image(filename="b_s.png")
Out[10]:

С помощью команды:

scp -r * lom:_scratch/hse/mrPukenshtein

Копернули все файлы на сервер.

Запустили тест, остановились из-за лимита по времени. Значит - все ок.

In [11]:
Image(filename="stop.png")
Out[11]:

Номер задачи:

In [12]:
Image(filename="job_nm.png")
Out[12]:

Посмотрим видео образования бислоя:

In [20]:
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)) от времени.

(Чуть подправили файл , заменив @ на #)

In [33]:
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()

Видно, что липиды со временем занимают меньшее пространство. Определим изменение гидрофобной и гидрофильной поверхности в ходе самосборки.

In [34]:
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-файл:

In [35]:
!wget "http://kodomo.cmm.msu.ru/~golovin/bilayer/sn1.ndx"
--2017-12-23 17:43:03--  http://kodomo.cmm.msu.ru/~golovin/bilayer/sn1.ndx
Resolving kodomo.cmm.msu.ru (kodomo.cmm.msu.ru)... 93.180.63.127
Connecting to kodomo.cmm.msu.ru (kodomo.cmm.msu.ru)|93.180.63.127|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 5328 (5.2K)
Saving to: `sn1.ndx'

100%[======================================>] 5,328       --.-K/s   in 0s      

2017-12-23 17:43:03 (299 MB/s) - `sn1.ndx' saved [5328/5328]

In [43]:
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()
Out[43]:
"\nt=a[:,0]\nphob=a[:,2]\nphil=a[:,3]\nplt.plot(t,phob,'orange')\nplt.plot(t,phil,'blue')\nlab_phob=ptch.Patch(color='orange',label='hydrophob')\nlab_phil=ptch.Patch(color='blue',label='hydrophill')\nplt.legend(handles=[lab_phob,lab_phil])\nplt.xlabel('time')\nplt.ylabel('surface')\nplt.show()\n"

Видно, что хвост липидов в бислое лучше упорядочен, чем на начале.

In [ ]:
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...'