HW2

Marina Volosnikova

In [1]:
from IPython.display import Image, HTML
import io
from base64 import b64encode

import time
In [2]:
import __main__
#__main__.pymol_argv = [ 'pymol', '-x' ]

### Если вывод в графическое окно тормозит или не нужен, то:
__main__.pymol_argv = [ 'pymol', '-cp' ]


import pymol
 
pymol.finish_launching()
 
from pymol import cmd

Sculpting (https://pymolwiki.org/index.php/Molecular_Sculpting)

1) Оцените возможности Sculpting, в Wizard->Demo->Sculpting

In [3]:
Image(filename='./sculpting.png')
Out[3]:

Двигаем с помощью cmd + left-click (to drag atoms).

In [4]:
Image(filename='./sculpting_cmd_lclick.png', width=700, height=500) 
Out[4]:

Двигаем с помощью cmd + rignt-click (to rotate bonds).

In [5]:
Image(filename='./sculpting_cmd_rclick.png', width=700, height=500) 
Out[5]:

Hydrogen bonds

2) Используя select within найдите водородные связи которыми белок связывает лиганд. Опишите эти возможные другие взаимодействия белка с лигандом. Попробуйте поискать альтернативный способ поиска водородных связей.

In [6]:
cmd.delete('all')
cmd.fetch('1lmp')
cmd.png('./1lmp.png')
time.sleep(2)
Image(filename='./1lmp.png') 
Out[6]:
In [7]:
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')
Out[7]:

Mutagenesis

3) Средствами Tcl/Tk интерфейса Wizard->Mutagenesis проведите мутацию в белке, которая по вашему мнению должна привести к потере связывания с лигандом.

In [8]:
cmd.color('white', 'resi 52')

cmd.turn('x', 180)

cmd.png('./resi_52.png')
time.sleep(2)
Image(filename = './resi_52.png')
Out[8]:
In [9]:
#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')
Out[9]:
In [10]:
cmd.save('./1lmp_mutated.pdb', '1lmp')

Animation

4) Используя команды mset, mview, super, translate создайте анимационный ролик mpeg где происходит совмещение белков и показывается место мутации. Обратите внимание на указания в object motions на http://www.pymolwiki.org pymolwiki.

In [11]:
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')
In [12]:
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)
Out[12]:

Poly-Leu chain

6) Напишите скрипт для построения поли-аланиновой ( Вы вольны использовать любую аминоксилоту) альфа спирали длинной 100 аминкислот. Псевдо-код вы можете найти в подсказках.

In [21]:
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')
In [22]:
Image(filename='./poly_leu_chain.png')
Out[22]: