from IPython.display import Image, HTML
import io
from base64 import b64encode
import time
import __main__
#__main__.pymol_argv = [ 'pymol', '-x' ]
### Если вывод в графическое окно тормозит или не нужен, то:
__main__.pymol_argv = [ 'pymol', '-cp' ]
import pymol
pymol.finish_launching()
from pymol import cmd
1) Оцените возможности Sculpting, в Wizard->Demo->Sculpting
Image(filename='./sculpting.png')
Двигаем с помощью cmd + left-click (to drag atoms).
Image(filename='./sculpting_cmd_lclick.png', width=700, height=500)
Двигаем с помощью cmd + rignt-click (to rotate bonds).
Image(filename='./sculpting_cmd_rclick.png', width=700, height=500)
2) Используя select within найдите водородные связи которыми белок связывает лиганд. Опишите эти возможные другие взаимодействия белка с лигандом. Попробуйте поискать альтернативный способ поиска водородных связей.
cmd.delete('all')
cmd.fetch('1lmp')
cmd.png('./1lmp.png')
time.sleep(2)
Image(filename='./1lmp.png')
cmd.delete('all')
cmd.fetch('1lmp')
cmd.remove('solvent')
cmd.select('ligand', 'het')
cmd.show_as('sticks', 'ligand')
cmd.center('ligand')
cmd.origin('ligand')
cmd.zoom('ligand', 4)
cmd.color('white','ligand')
cmd.show('lines', 'br. 1lmp w. 3.2 of ligand')
# Hydrogen bonds between specific atoms
cmd.distance('hbonds', '1lmp', 'ligand', 3.2, mode=2)
cmd.select('active_site', '1lmp within 3.2 of ligand')
# (назв, номер остатка)
cmd.label('active_site & !ligand', 'resn, resi')
cmd.set('label_color', 'white', 'active_site')
cmd.turn('x', 100)
cmd.turn('y', 120)
cmd.png('./protein_ligand.png')
time.sleep(2)
Image(filename = './protein_ligand.png')
3) Средствами Tcl/Tk интерфейса Wizard->Mutagenesis проведите мутацию в белке, которая по вашему мнению должна привести к потере связывания с лигандом.
cmd.color('white', 'resi 52')
cmd.turn('x', 180)
cmd.png('./resi_52.png')
time.sleep(2)
Image(filename = './resi_52.png')
#ASP-52 (2.4 A) -> LYS-52
cmd.wizard('mutagenesis')
cmd.do('refresh_wizard')
cmd.get_wizard().do_select('resi 52')
cmd.get_wizard().set_mode('LYS')
cmd.frame(1)
cmd.get_wizard().apply()
cmd.wizard(None)
cmd.color('red','resi 52')
cmd.center('ligand')
cmd.origin('ligand')
cmd.zoom('ligand', 4)
cmd.turn('x', 180)
# cmd.turn('y', 120)
cmd.png('./mutagenesis.png')
time.sleep(2)
Image(filename = './mutagenesis.png')
cmd.save('./1lmp_mutated.pdb', '1lmp')
4) Используя команды mset, mview, super, translate создайте анимационный ролик mpeg где происходит совмещение белков и показывается место мутации. Обратите внимание на указания в object motions на http://www.pymolwiki.org pymolwiki.
cmd.delete('all')
cmd.load('1lmp.pdb')
cmd.load('1lmp_mutated.pdb')
cmd.remove('solvent')
cmd.hide('lines')
cmd.translate('[-50, 0, 0]', '1lmp_mutated')
cmd.show_as('cartoon', '1lmp_mutated')
cmd.set('cartoon_sampling', 1)
cmd.set('cartoon_tube_radius', 0.5)
cmd.select('ligand_mut', 'het')
cmd.show_as('sticks', 'ligand_mut')
cmd.colour('red', 'ligand_mut')
cmd.color('green', '1lmp_mutated & resi 52')
cmd.label('1lmp_mutated & n. CA and i. 52', 'resn, resi')
cmd.show_as('cartoon', '1lmp')
cmd.set('cartoon_sampling', 1)
cmd.set('cartoon_tube_radius', 0.5)
cmd.delete('hbonds')
cmd.color('blue', '1lmp & resi 52')
cmd.show_as('sticks', 'ligand')
cmd.color('yellow', 'ligand')
cmd.show_as('sticks', '1lmp_mutated & resi 52')
cmd.show_as('sticks', '1lmp & resi 52')
cmd.label('1lmp & n. CA and i. 52', 'resn,resi')
cmd.label('1lmp_mutated & n. CA and i. 52', 'resn,resi')
cmd.zoom('all')
cmd.turn('x', -180)
cmd.mset('1 x200')
cmd.frame('1')
cmd.do('mview store, object=1lmp_mutated')
cmd.do('mview store')
cmd.frame('100')
cmd.do('translate [50, 0, 0], object=1lmp_mutated')
cmd.zoom('1lmp')
cmd.do('mview store')
cmd.frame('200')
cmd.zoom('1lmp and i. 52')
cmd.do('mview store, object=1lmp_mutated')
cmd.do('mview store')
cmd.do('mview reinterpolate')
# cmd.mplay()
cmd.set('ray_trace_frames', '1')
cmd.set('ray_trace_mode', '1')
cmd.set('antialias', '1')
cmd.mpng('/home/shad/hse/volosnikova/hw2/mov/pic')
video = io.open('./mov.mp4', 'r+b').read()
video_encoded = b64encode(video)
html_code = '<video controls alt="PyMol Movie" src="data:video/mp4;base64,{}" type="video/mp4">'.format(video_encoded)
HTML(html_code)
6) Напишите скрипт для построения поли-аланиновой ( Вы вольны использовать любую аминоксилоту) альфа спирали длинной 100 аминкислот. Псевдо-код вы можете найти в подсказках.
cmd.delete('all')
cmd.fragment ("leu")
for x in range(2,101):
cmd.edit("resi " + str(x) + " and name C")
cmd.editor.attach_amino_acid("pk1","leu")
cmd.edit("resi " + str(x) + " and name N", "resi " + str(x) + " and name CA")
cmd.torsion(-75)
cmd.edit("resi " + str(x) + " and name C", "resi " + str(x) + " and name CA")
cmd.torsion(150)
cmd.zoom('all')
cmd.ray()
cmd.png('./poly_leu_chain.png')
Image(filename='./poly_leu_chain.png')