Цель данного занятия - ознакомиться с возможностями моделирования молекулярной динамики. Команды выполнялись в командной строке, а основные вычисления - на суперкомпьютере Ломоносов-2. Здесь показаны результаты вычислений и выводы.
На основе одного липида создадим ячейку с 64 липидами (дипальмитоилфосфатидилхолин), c помощью editconf преобразуем dppc.gro и b_64.gro в pdb файлы, посмотрим на них в PyMol. Видим одну молекулу липида и 64 его копии.
genconf -f dppc.gro -o b_64.gro -nbox 4 4 4
editconf -f dppc.gro -o dppc.pdb
editconf -f b_64.gro -o b_64.pdb
from IPython.display import Image
Image(filename='dppc.png')
Image(filename='b_64.png')
В текстовом редакторе в файле b.top установим правильное количество липидов в системе. Сделаем небольшой отступ в ячейке от липидов, чтобы добавить примерно 2500 молекул воды.
editconf -f b_64.gro -o b_ec -d 0.5
Проведём оптимизацию геометрии системы, чтобы удалить "плохие" контакты молекул.
grompp -f em -c b_ec -p b -o b_em -maxwarn 2
mdrun -deffnm b_em -v
Вот начальное и конечное значение максимальной силы:
Step= 0, Dmax= 2.0e-02 nm, Epot= 4.74007e+05 Fmax= 4.37970e+05, atom= 1842
Step= 51, Dmax= 1.9e-06 nm, Epot= 3.20911e+03 Fmax= 6.16887e+02, atom= 2765
Соответственно, изменение максимальной силы в ходе оптимизации геометрии равно 1,79.
Добавим в ячейку молекулы воды типа spc, проведём "утряску" воды:
genbox -cp b_em -p b -cs spc216 -o b_s
grompp -f pr -c b_s -p b -o b_pr -maxwarn 1
mdrun -deffnm b_pr -v
Переформатируем b_pr.gro и b_s.gro в pdb формат. И изучим визуально в PyMol изменения в файлах.
Появились молекулы воды, что и следовало ожидать. В b_s вода распределена более равномерно вокруг липидов, в b_pr ее меньше по бокам.
Image(filename='b_s.png')
Image(filename='b_pr.png')
Скопируем файлы на суперкомпьютер, запустим тестовое, а затем и основное моделирование. После того, как посчиталось, переделали .tpr файл, так как считалось оно по новой версии этого файла, а у нас - старый gromacs. При вопросе о выводе групп выбрали DPPC.
Скопировала b_pbc_1.pdb к себе с Ломоносова: Посмотрим, что получилось.
scp b_pbc_1.pdb sunnymouse@kodomo.fbb.msu.ru:term8/Vasyutkina
Посмотрим, что получилось. Видим, что молекулы "вылезают" за границы ячейки, при этом они перерисовываются с другой стороны - это эффект pbc. Поэтому используем не первую, а вторую команду:
trjconv -f b_md.xtc -s b_md.tpr -o b_pbc_1.pdb -skip 20
trjconv -f b_md.xtc -s b_md.tpr -o b_pbc_1.pdb -skip 20 -pbc mol
Бислоя нет, мицелла. Так выглядит последнее состояние (101-е) системы:
Image(filename='b_pbc_1.png')
Определим размер, который занимает один липид. Если открыть PDB файл в PyMOL, то изначально ось X слева направо, Y снизу вверх, Z на нас. Я считаю, что нормаль в моем случае - это ось Y. Тогда площадь - это X*Z/2. Возьмем X и Z из box_1.xvg. Размер box меняется. PyMOL показывает только ячейку стартового состояния. Надо построить зависимость площади от времени, нормированную на 1 липид. Это приблизительно, но сойдет для нас.
g_traj -f b_md.xtc -s b_md.tpr -ob box_1.xvg -xvg none
%matplotlib inline
import matplotlib.pyplot as plt
import csv
t = []
s = []
with open('box_1.xvg', 'r') as box:
box_reader = csv.reader((row for row in box if not row.startswith('#')), delimiter='\t')
for row in box_reader:
lipid_time = row[1]
t.append(int(lipid_time))
x = float(row[2])
z = float(row[4])
s_one = x*z/32
s.append(s_one)
plt.plot(t, s, "b-")
plt.title('Surface of one lipid during time')
plt.xlabel('Time, ps')
plt.ylabel('SAS of one lipid, nm^2')
plt.show()
Действительно, при сворачивании липидного бислоя или мицеллы, площадь поверхности липида, доступная растворителю, стремится к минимуму. Уменьшается в итоге в 2 раза: от ~1,2 до 0,6 nm^2
Определим изменения в гидрофобной и гидрофильной поверхностях. Группы: calculation group, output group = 2 (DPPC)
g_sas -f b_md.xtc -s b_md.tpr -o sas_b.xvg
%matplotlib inline
t = []
hf_list = []
hb_list = []
with open('sas_b.xvg', 'r') as box_reader:
for line in box_reader:
row = line.split()
lipid_time = row[0]
t.append(int(lipid_time))
hb = float(row[1])
hf = float(row[2])
hb_list.append(hb)
hf_list.append(hf)
plt.plot(t, hf_list, "r-",label="Hydrophylic")
plt.plot(t, hb_list, "b-",label="Hydrophobic")
plt.title('SAS during time')
plt.xlabel('Time, ps')
plt.ylabel('Surface, nm^2')
plt.legend()
plt.show()
Мы видим, что при образовании бислоя происходит уменьшение как гидрофобной, так и гидрофильной поверхностей. Это приводит к уменьшению энергии системы в водном растворе. Площадь гидрофобной поверхности гораздо сильнее уменьшается. После 250 ps величина доступной растворителю гидрофобной поверхности становится меньше гидрофильной поверхности. За счет уменьшения гидрофобной поверхности происходит сборка липидов в мицеллу.
Традиционной мерой оценки фазового состояния бифильных молекул является мера порядка. Показывает, насколько упорядочены липидные хвосты. Некоторые части более упорядочены, чем другие. Как посчитать? Угол C-C относительно нормали бислоя. В среднем для постоянно изменяющегося угла <3/2 cos a - 1/2> или <cos a - 1> дают 0, и не 0, если упорядоченность. Для разных связей - разная упорядоченность.
Для анализа нам понадобится специальный индекс файл: http://kodomo.cmm.msu.ru/~golovin/bilayer/sn1.ndx
g_order -s b_md -f b_md.xtc -o ord_end.xvg -n sn1.ndx -b 45000 -d Y #для конца траектории
g_order -s b_md -f b_md.xtc -o ord_start.xvg -n sn1.ndx -e 5000 -d Y #для начала траектории
%matplotlib inline
with open('ord_start.xvg','r') as order:
mol_num = []
s_start = []
for line in order:
if line.startswith(' '):
line = line.strip(None).split()
mol_num.append(int(line[0]))
s_start.append(float(line[1]))
with open('ord_end.xvg','r') as order:
s_end = []
for line in order:
if line.startswith(' '):
line = line.strip(None).split()
s_end.append(float(line[1]))
plt.plot(mol_num, s_start, "ro",label="start of modelling")
plt.plot(mol_num, s_end, "bo",label="end of modelling")
plt.title('Order of C-C')
plt.xlabel('Atom number')
plt.ylabel('Order')
plt.legend(loc='center left')
plt.show()
В начале траектории значения меры порядка колеблются, что связано с хаотичностью движений молекул липидов.
В конце траектории видно, что головки липидов более ограничены в движении, чем хвосты. Когда мицелла приобрела четко сформированную структуру, подвижность молекул липидов падает, по сравнению с началом траектории.