Для начала откроем PyMOL и подгрузим все необходимые модули:
import __main__
__main__.pymol_argv = [ 'pymol', '-x' ]
import pymol
pymol.finish_launching()
from pymol import cmd,stored
from IPython.display import Image
import time
import sys
import numpy as np
Загружаем структуру нашего белка - 1LMP. Это лизоцим в комплексе с лигандами NDG и NAG.
cmd.do('''
fetch 1lmp, async=0
as cartoon, n. C+O+N+CA
mset 1 x1000
mview store''')
cmd.do('''
color marine
bg_color white
select s1, resn nag+ndg
util.cbaw s1
set ray_trace_mode, 3
set ray_opaque_background, 0
ray 600,700''')
#cmd.remove("solvent")
cmd.png('1lmp.png')
time.sleep(3)
Image(filename='1lmp.png')
cmd.do('''
select s2, resi 52''')
В первом задании оцениваем возможности Sculpting. Переходим (Wizard->Demo->Sculpting) в специальную вкладку Sculping, где c помощью мышки можем изменять структуру белка, которая после оптимизируется программой.
Оценим область взаимодействия с лигандом и выберем остаток для мутации. Лучше всего подходит ASP52 (окрашен розовым цветом).
cmd.do('''
hide all
select s1, resn nag+ndg
select s2, resi 48-58
util.cbaw s1
util.cbab s2
util.cbak resi 52
show sticks, s1
show sticks, s2
set ray_trace_mode, 3
set ray_opaque_background, 0
ray 600,600''')
cmd.png('1lmp.png')
time.sleep(3)
Image(filename='1lmp.png')
Ипользуем функцию mutagenesis для внесения мутации и оценим ее эффект.
import rotkit
rotkit.mutate("1LMP", chain="A", resi=52, target="TRP", mutframe=1) #ошибка
cmd.refresh()
cmd.do('''
hide all
select s1, resn nag+ndg
select s2, resi 48-58
util.cbaw s1
util.cbab s2
util.cbak resi 52
show sticks, s1
show sticks, s2
set ray_trace_mode, 3
set ray_opaque_background, 0
ray 600,700''')
cmd.png('1lmp.png')
time.sleep(3)
Image(filename='1lmp.png')
Сперва создадим изображение структур мутантного и дикого типа белка
mutant = "resi 52"
cmd.fetch("1lmp", "native_protein")
cmd.remove("solvent")
cmd.select("native_ligand", "native_protein and hetatm")
cmd.show("cartoon", "native_protein")
cmd.show("cartoon", "1lmp")
cmd.color("salmon", "native_protein")
cmd.show("sticks", "*ligand")
cmd.color("wheat", "*ligand")
cmd.show("sticks", "native_protein and {}".format(mutant))
cmd.show("sticks", "1lmp and {}".format(mutant))
cmd.util.cbag("native_protein and {}".format(mutant))
cmd.translate("[-30, 0, 0]", "native_protein")
cmd.center('native_protein + 1lmp')
cmd.zoom('center', '40')
cmd.do('''
bg_color white
set ray_trace_mode,3
set ray_opaque_background, 0
ray 1500,700''')
cmd.png('1lmp.png')
time.sleep(3)
Image(filename='1lmp.png')
Создаем анимационный ролик в котором показано совмещение структур с мутацией и без.
cmd.bg_color("white")
cmd.mset('1 x480')
cmd.frame('1')
cmd.mview('store')
cmd.mview('store', object='native_protein')
cmd.frame('90')
cmd.mview('store')
cmd.translate('[30, 0, 0]', object='native_protein')
cmd.mview('store', object='native_protein')
cmd.frame('210')
cmd.center('native_protein')
cmd.zoom('native_protein')
cmd.mview('store', object='native_protein')
cmd.mview('store')
cmd.frame('300')
cmd.mview('store', object='native_protein')
cmd.center(mutant)
cmd.zoom(mutant)
cmd.mview('store')
cmd.frame('480')
cmd.mview('store', object='native_protein')
cmd.center(mutant)
cmd.zoom(mutant)
cmd.turn('y', 135)
cmd.mview('store')
cmd.mview('reinterpolate')
cmd.mview('reinterpolate', object='native_protein')
Сохраняем видео и подгружаем его для просмотра
import io
import base64
from IPython.display import HTML
video = io.open('final_1.mp4', 'r+b').read()
encoded = base64.b64encode(video)
HTML(data='''<video alt="test" controls>
<source src="data:video/mp4;base64,{0}" type="video/mp4" />
</video>'''.format(encoded.decode('ascii')))
Анимация
Необходимо скачать <a href = 'https://pubchem.ncbi.nlm.nih.gov/compound/2762604'>флоуресцентную метку TAMRA</a> и далее прикрепить ее к белку с образованием сложноэфирной связи.
cmd.reinitialize()
cmd.bg_color('white')
cmd.load("tamra.sdf")
cmd.remove('tamra and id 4')
cmd.select('tamra_O', 'id 32')
cmd.fetch("1lmp")
cmd.remove("solvent")
cmd.zoom()
cmd.do('''
select THR_O, resn thr and resi 43 and name OG1
show sticks, resn thr and resi 43
hide cartoon, resi 43
''')
cmd.fuse('tamra_O', 'THR_O', 1)
Сохраняем изображение
cmd.do('''
bg_color white
set ray_trace_mode,3
set ray_opaque_background, 0
ray 1200,700''')
cmd.png('1lmp.png')
time.sleep(3)
Image(filename='1lmp.png')