Задание 9

Часть 1. Моделирование самосборки липидного бислоя

In [1]:
from IPython.display import Image

Визуализируем отдельно взятый липид:

In [2]:
Image(filename="dppc.png", width=500, height=500)
Out[2]:

И ячейку с 64 липидами:

In [3]:
Image(filename="b_64.png", width=500, height=500)
Out[3]:

В ходе оптимизации геометрии системы начальное значение максимальной силы было равно 4.3797e+05, а конечное 6.16887e+02.
Добавим в систему воду и сравним результаты при разных подходах к "утряске" воды.

In [4]:
Image(filename="b_pr.png", width=500, height=500)
Out[4]:
In [5]:
Image(filename="b_s.png", width=500, height=500)
Out[5]:

Особой разницы не видно.
Запускаем моделирование на суперкомпьтере.

Часть 2. Анализ результатов моделирование самосборки липидного бислоя

Визуализируем движение липидов:

In [6]:
from IPython.display import HTML
from base64 import b64encode
video = open('movie.mp4', 'rb').read()
video_encoded = b64encode(video)
video_tag = '<video controls alt="PyMol Movie" src="data:video/mp4;base64,{0}" type="video/mp4">'.format(video_encoded)
HTML(data=video_tag)
Out[6]:

Образование билипидного слоя происходит приблизительно на 60-ой итерации, что соответствует моменту времени t = 24500.
Если из файла b_pbc_1.pdb вывести координаты только первого атома для каждого липида, то будет видно, что координата x у них почти не варьируется в отличие от координат y и z, откуда следует, что билипидный слой перпендикулярен оси X.
Выведем зависимость площади средней площади проекции одного липида на плоскость YoZ от времени.

In [7]:
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

table = np.loadtxt('box_1.xvg', skiprows=24)
plt.figure(1)
plt.plot(table[:,0], table[:,2])
plt.title('Y Axis Projection')
plt.xlabel('Time')
plt.ylabel('Y Projection')

plt.figure(2)
plt.plot(table[:,0], table[:,3])
plt.title('Z Axis Projection')
plt.xlabel('Time')
plt.ylabel('Z Projection')

plt.figure(3)
plt.plot(table[:,0], table[:,2] * table[:,3] / 32.)
plt.title('YoZ Area Projection')
plt.xlabel('Time')
plt.ylabel('YoZ Area')
Out[7]:
Text(0,0.5,u'YoZ Area')

Построим зависимость изменения гидрофобной и гидрофильной поверхностей доступных растворителю от времени:

In [10]:
import matplotlib.patches as mpatches

table = np.loadtxt('sas_b.xvg', skiprows=22)
plt.plot(table[:,0], table[:,1], 'r', table[:,0], table[:,2], 'g')
plt.xlabel('Time')
plt.ylabel('Solvent Available Area')
plt.title('Solvent Available Area')
red_patch = mpatches.Patch(color='red', label='Hydrophobic')
green_patch = mpatches.Patch(color='green', label='Hydrophilic')
plt.legend(handles=[red_patch, green_patch])
Out[10]:
<matplotlib.legend.Legend at 0x7f2e4148cb50>

Видно, что уменьшается и гидрофильная и гидрофобная поверхности. За счет этого уменьшается энергия системы, что приводит к сборке фосфолипидного бислоя.

Визуализируем меру порядка для начала и конца траектории:

In [13]:
table = np.loadtxt('ord_start.xvg', skiprows=12)
plt.figure(1)
plt.title('Trajectory Start')
plt.plot(table[:,0], table[:,1])

table = np.loadtxt('ord_end.xvg', skiprows=12)
plt.figure(2)
plt.title('Trajectory End')
plt.plot(table[:,0], table[:,1])
Out[13]:
[<matplotlib.lines.Line2D at 0x7f2e40f31190>]

Графики меры порядка для начала и конца траектории очень похожи.