Силовое поле, используемое при построении топологии: lipid.itp
Заряд системы: 0 (для атомов липида подобраны заряды в файле dppc.itp)
Размер и форма ячейки, nm: параллелепипед 6.26 x 4.443 x 5.778 (по файлу b_ec.gro)
Минимизация энергии
Алогритм минимизации энергии: L-BFGS
Алгоритм расчета электростатики и VdW взаимодействий: Cut-off
Модель растворителя: spc216
Утряска растворителя
Число шагов: 10000
Длина шага, ps: 0.001
Алгоритм расчета электростатики: PME
Алгоритм расчета VdW взаимодействий: Cut-off
Алгоритм термостата: V-rescale
Алгоритм баростата: No (Anisotropic)
Основной расчет
Время моделирования: 9h01:19
Длина траектории, ns: 50
Число шагов: 10000000
Длина шага, ps: 0.005
Алгоритм интегратора: md
Алгоритм расчета электростатики: PME
Алгоритм расчета VdW взаимодействий: Cut-off
Алгоритм термостата: V-rescale
Алгоритм баростата: Berendsen (Semiisotropic)
Конвертируем соответствующие файлы в формат pdb в программе trjconv:
trjconv -f b_md.xtc -s b_md.tpr -o b_pbc_1_mol.pdb -skip 20 -pbc mol
При визуальном анализе в Pymol можно заметить, что настоящий липидный бислой не образуется, а образуется только плоская мицелла. Структура, наиболее похожая на липидный бислой, впервые наблюдается на 37 наносекунде моделирования и соответствует 75 модели:
Видео самосборки липидного бислоя | Модель 75 |
---|---|
![]() |
Получим размеры ячейки во время моделирования:
g_traj -f b_md.xtc -s b_md.tpr -ob box_1.xvg
Построим график зависимости площади поверхности ячейки, параллельной липидному бислою, от времени и найдем площадь, занимаемую одним липидом:
%matplotlib inline
import matplotlib.pyplot as plt
def read_box_1(filename):
xs = list()
ys = list()
xvg = open(filename, 'r')
for line in xvg:
if line.startswith('#') == False and line.startswith('@') == False:
fields = line.strip().split('\t')
time = float(fields[0])
x = float(fields[1])
z = float(fields[3])
area = x*z
xs.append(time)
ys.append(area)
if time == 37000.0:
print "One lipid area: %s nm"%(area/32)
xvg.close()
return xs, ys
xs, ys = read_box_1('box_1.xvg')
plt.plot(xs, ys, color='lightgreen', marker='o', ls='*')
plt.xlabel("Time (ps)")
plt.ylabel("Area (nm^2)")
Площадь, занимаемая одним липидом, была рассчитана путем нормирования площади соответствующей поверхности ячейки во время 37 наносекунды моделирования на число липидов в монослое, которое равно 32. Таким образом, один липид занимает ~0.7 нанометров.
Получим площади гидрофобной и гидрофильной поверхностей липидов во время моделирования:
g_sas -f b_md.xtc -s b_md.tpr -o sas_b.xvg
# 2 (DPPC)
# 0 (System)
Построим график зависимости площадей гидрофобной и гидрофильной поверхностей липидов от времени:
import re
def read_sas_b(filename):
xs_time = list()
ys_phob = list()
ys_phil = list()
xvg = open(filename, 'r')
for line in xvg:
if line.startswith('#') == False and line.startswith('@') == False:
fields = re.split(' +', line.strip())
time = float(fields[0])
phob = float(fields[1])
phil = float(fields[2])
xs_time.append(time)
ys_phob.append(phob)
ys_phil.append(phil)
xvg.close()
return xs_time, ys_phob, ys_phil
xs_time, ys_phob, ys_phil = read_sas_b('sas_b.xvg')
plt.plot(xs_time, ys_phil, color='blue', marker='o', ls='*', label='Hydrophilic')
plt.plot(xs_time, ys_phob, color='lightgreen', marker='o', ls='*', label='Hydrophobic')
plt.legend(loc='upper center')
plt.xlabel("Time (ps)")
plt.ylabel("Area (nm^2)")
На графике выше видно, что в ходе самосборки бислоя уменьшается как площадь гидрофобной поверхности, так и площадь гидрофильной поверхности липидов, доступная для растворителя, что энергетически выгодно.
Получим значения меры порядка для атомов одного из жирных хвостов липида (C34-C50) в начале и в конце моделирования:
g_order -s b_md -f b_md.xtc -o ord_start.xvg -n sn1.ndx -e 5000 -d y
g_order -s b_md -f b_md.xtc -o ord_end.xvg -n sn1.ndx -b 45000 -d y
Постоим графики зависимости меры порядка от атома одного из жирных хвостов липида (C34-C50) в начале и в конце самосборки бислоя:
def read_ord(filename):
xs = list()
ys = list()
xvg = open(filename, 'r')
for line in xvg:
if line.startswith('#') == False and line.startswith('@') == False:
fields = re.split(' +', line.strip())
atom = float(fields[0])
measure = float(fields[3])
xs.append(atom)
ys.append(measure)
xvg.close()
return xs, ys
xs_start, ys_start = read_ord('ord_start.xvg')
xs_end, ys_end = read_ord('ord_end.xvg')
plt.plot(xs_start, ys_start, color='blue', marker='o', ls='*', label='Start')
plt.plot(xs_end, ys_end, color='lightgreen', marker='o', ls='*', label='End')
plt.legend(loc='center')
plt.xlabel("Atom")
plt.ylabel("Measure of order")
На графике выше видно, что упорядоченность атомов одного из жирных хвостов липида (C34-C50) в конце самосборки бислоя примерно в пять раз больше, чем в начале самосборки бислоя, причем атомы, расположенные рядом с головкой липида, упорядочены сильнее, чем атомы, расположенные на конце жирного хвоста липида.