Работа с Pymol

Откроем Pymol

In [1]:
import __main__
__main__.pymol_argv = [ 'pymol', '-x' ]

import pymol
pymol.finish_launching()
from pymol import cmd,stored
In [4]:
from IPython.display import Image
import time

Загрузим нужную структуру, выберем удобный ракурс.

In [87]:
cmd.do('''
fetch 1LMP
as sticks
center all
orient
''')

Название структуры: Crystal structure of three complexes between chito-oligosaccharides and lysozyme from the rainbow trout. Имена лигандов NAG и NDG. Выделим их контрастным цветом, чтобы понять расположение активного центра.

In [88]:
cmd.select('ligand','resname NAG OR resname NDG')
cmd.color('yellow','ligand & n. c*')
cmd.select('none') # это чтобы на картинке не было маркеров выделения
Out[88]:
0

Покажем

In [89]:
cmd.png('prak2_1.png')
time.sleep(10)
Image(filename='prak2_1.png')
Out[89]:

Изменим структуру с помощью функции Sculpting и покажем результат.

In [90]:
v=cmd.get_view() # Запомним положение камеры
In [93]:
## В этом месте вручную делаем Sculpting 

cmd.set_view(v)
cmd.color('yellow','ligand & n. c*')
cmd.png('prak2_2.png')
time.sleep(10)
Image(filename='prak2_2.png')
Out[93]:

Вернем все обратно и покажем активный центр

In [31]:
cmd.reinitialize()
cmd.do('''
fetch 1LMP
as sticks
''')
cmd.select('ligand','resname NAG OR resname NDG')
cmd.color('yellow','ligand & n. c*')
cmd.center('ligand')
cmd.clip('slab',20)
In [16]:
## Вручную выбираем удобный ракурс
v=cmd.get_view()
cmd.png('prak2_3.png')
time.sleep(5)
Image(filename='prak2_3.png')
Out[16]:

Как можно заметить, остаток ASP52, видимо, участвует в связывании лиганда, образуя водородную связь с атомом О1L NDG. Проведем его мутацию, заменим на LEU, покажем

In [32]:
cmd.create('1LMP_mut','1LMP')# создаем мутантный белок
cmd.color('magenta','1LMP_mut & n. c*')
cmd.rotate([1,36,5],-50, object='1LMP')
cmd.translate([20,20,20],object='1LMP')# отгоним исходный белок в сторону
In [33]:
cmd.select('ligand1',' 1LMP_mut AND (resname NAG OR resname NDG) ')
cmd.color('yellow','ligand1 & n. c*') 
cmd.orient('ligand1')
In [20]:
## Мутируем вручную
cmd.set_view(v)
time.sleep(5)
cmd.png('prak2_4.png')
time.sleep(5)
Image(filename='prak2_4.png')
Out[20]:

Создадим видео, в котором белки накладываются друг на друга и показывается место мутации.

In [ ]:
cmd.set('matrix_mode',1)
cmd.mset('1 x500')# Зададим 500 кадров 

cmd.frame(1)
cmd.orient()
cmd.mview('store')
cmd.mview('store',object='1LMP')
cmd.mview('store',object='1LMP_mut')# Вид на оба белка
time.sleep(5)

cmd.frame(500)
cmd.mview('store')
cmd.mview('store',object='1LMP')
cmd.mview('store',object='1LMP_mut')# Это чтобы в конце они вернулись в исходное положение

cmd.frame(100)
cmd.super('1LMP','1LMP_mut')
cmd.orient()
cmd.mview('store')
cmd.mview('store',object='1LMP')
cmd.mview('store',object='1LMP_mut')# Наложим белки друг на друга

cmd.frame(150)
cmd.mview('store')
cmd.mview('store',object='1LMP')
cmd.mview('store',object='1LMP_mut')# Подождем 50 кадров

cmd.frame(250)
cmd.orient('ligand1')
cmd.mview('store')
cmd.mview('store',object='1LMP')
cmd.mview('store',object='1LMP_mut')# Наведем камеру на лиганд

cmd.frame(350)
cmd.orient('resi 52')
cmd.mview('store')
cmd.mview('store',object='1LMP')
cmd.mview('store',object='1LMP_mut')# Наведем камеру на мутированный остаток

cmd.frame(450)
cmd.mview('store')
cmd.mview('store',object='1LMP')
cmd.mview('store',object='1LMP_mut')# Подождем 50 кадров

cmd.mview('reinterpolate')
cmd.mview('reinterpolate',object='1LMP')
cmd.mview('reinterpolate',object='1LMP_mut') # Сгладим движения камеры

Сохраним видео вручную в формате mpg, конвертируем в mp4 и покажем. Эпилептикам не смотреть.

In [ ]: