Pr2: Работа с Pymol.

In [2]:
#загрузим необходимые пакеты
from IPython.display import Image
import os, sys, time
import __main__
__main__.pymol_argv = [ 'pymol', '-x' ]
import pymol
from pymol import cmd
from pymol import stored
pymol.finish_launching()

#для сохранения изображений
from IPython.display import Image
defaultImage = '/tmp/pymolimg.png'
def prepareImage(width=600, height=600, sleep=2, filename=defaultImage):
    cmd.ray(width, height)
    cmd.png('/tmp/pymolimg.png')
    time.sleep(sleep)
    
from pymol import wizard
import io
import base64
from IPython.display import HTML
import time

Задания: Оцените возможности Sculpting, в Wizard->Demo->Sculpting . Одиночная мутация в белке, которая может привести к потере связывания с лигандом. Анимационный ролик (mpeg) где происходит совмещение белков и показывается место мутации. Присоедините флуоресцентную метку TAMRA к белку через сложноэфирную связь Напишите скрипт для построения поли-аланиновой альфа спирали длинной 100 аминкислот. Напишите скрипт для построения B-формы ДНК длинной 100 пар нуклеотидов.

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

In [2]:
#посмотрим на молекулу
cmd.do('''
fetch 1lmp, async=0
remove solvent
bg_color white
color spectrum rainbow, 1lmp
''')
In [4]:
cmd.do(f'png pr21.png')
time.sleep(1)
Image(filename='pr21.png')
Out[4]:
In [4]:
#с помощью sculpting изменим конформацию лиганда
#было
cmd.do(f'png pr22.png')
time.sleep(1)
Image(filename='pr22.png')
Out[4]:
In [5]:
#стало
cmd.do(f'png pr23.png')
time.sleep(1)
Image(filename='pr23.png')
Out[5]:

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

In [3]:
cmd.do('''
util.cnc (all)
sele ligand, resn NAG+NDG
sele contact, ligand around 3.5
as sticks, not ligand
show surface, contact
util.cnc ligand
center ligand
origin ligand
zoom ligand
''')
In [9]:
cmd.do(f'png pr24.png')
time.sleep(1)
Image(filename='pr24.png')
Out[9]:
In [10]:
cmd.do('''
hide surface, contact
distance bond, ligand, contact, 3.5, 2
color blue, bond
''')
cmd.do(f'png pr2_5.png, height={1920}')
time.sleep(2)
Image(filename='pr2_5.png')
Out[10]:
In [12]:
#выберем 1 из остатков, участвующих в связывании лиганда(аспартат 52)
cmd.do('''
sele mut, resi 52
color purple, mut
util.cnc mut
center mut
zoom mut+NDG-132
''')

cmd.do(f'png pr2_6.png')
time.sleep(2)
Image(filename='pr2_6.png')
Out[12]:
In [4]:
#заменим на лизин
cmd.wizard("mutagenesis")
cmd.do("refresh_wizard")
cmd.get_wizard().set_mode("LYS")
cmd.get_wizard().do_select("/1lmp//A/52")
cmd.frame(1)
cmd.get_wizard().apply()
cmd.set_wizard("done")
cmd.do('''
delete bond
''')
In [18]:
cmd.do(f'png pr2_6.png')
time.sleep(2)
Image(filename='pr2_6.png')
Out[18]:

Анимационный ролик (mpeg) где происходит совмещение белков и показывается место мутации.

In [ ]:
cmd.do('''
reini
fetch 1lmp
show sticks
bg_color white
color deepteal, all
color red, resn THR+SER and elem O and sidechain
''')
In [ ]:
cmd.reinitialize()
cmd.bg_color(color="white")

cmd.do('''
load mut.pdb, 1lmp
''')
cmd.fetch("1lmp", "original")

cmd.do('''
remove solvent
bg_color white
delete bond
sele original_ligand, original and hetatm
sele 1lmp_ligand, 1lmp and hetatm
show cartoon, original
show cartoon, 1lmp
sele resi_51_53, resi 51-53
show sticks, resi_51_53
color pink, original
color lightteal, 1lmp
color lightorange, original and resi 52 or original_ligand
color palecyan, 1lmp and resi 52 or 1lmp_ligand
translate [28,22,0], original
center original + 1lmp
delete resi_51_53
''')
cmd.zoom('center', '27')
cmd.do('''
set matrix_mode, 1
set movie_panel, 1
set cache_frames, 1
mset 1-360   

frame 1
as lines, not *ligand and not resi 52
mview store 
mview store, object=original        
mview store, object=1lmp 

frame 60
translate [-14,-11,0], object=original
translate [14,11,0], object=1lmp
mview store                     
mview store, object=original        
mview store, object=1lmp 

frame 120                       
orient *ligand
mview store                     
mview store, object=original     
mview store, object=1lmp
mview reinterpolate, object=original
mview reinterpolate, object=1lmp


frame 180                      
orient resi 52                        
mview store                     
mview store, object=original      
mview store, object=1lmp    


frame 390                       
orient resi 52 and *ligand                                     
mview store                     
mview store, object=original       
mview store, object=1lmp  

frame 240                       
orient resi 52  and *ligand 
turn y, 180
mview store                     
mview store, object=original      
mview store, object=1lmp   

frame 300                       
orient resi 52  and *ligand
mview store                     
mview store, object=original      
mview store, object=1lmp

frame 360                       
mview reinterpolate, object=original
mview reinterpolate, object=1lmp
frame 1
mplay                           
''')
In [3]:
Image(filename='pr2_gif.gif')
Out[3]:
<IPython.core.display.Image object>

Присоедините флуоресцентную метку TAMRA к белку через сложноэфирную связь

In [7]:
cmd.do('''
reini
fetch 1lmp
show sticks
bg_color white
color spectrum/rainbow, all
color red, resn THR+SER and elem O and sidechain
''')
In [10]:
cmd.do('''
center resi 24
zoom resi 24
label resi 24
''')
cmd.zoom('center', '7')
In [13]:
cmd.do(f'png pr2_301.png')
time.sleep(1)
Image(filename='pr2_301.png')
Out[13]:
In [16]:
cmd.reinitialize()
cmd.load('Tam.sdf')
cmd.remove('tam and id 4')
cmd.select('at', 'id 32')
cmd.bg_color('white')
cmd.do('''fetch 1lmp, async=0''')
cmd.color('pink', '1lmp')
cmd.remove('solvent')
cmd.select('ser', '/1lmp//A/SER`24')
cmd.select('ligand', 'resn NDG+NAG')
cmd.hide('sticks', '1lmp')
cmd.show('cartoon', '1lmp')
cmd.show('sticks', 'ser')
cmd.show('sticks', 'ligand')
cmd.color('palecyan', 'ligand')
cmd.color('wheat', 'ser')
cmd.select('og','/1lmp//A/SER`24/OG')
cmd.color('red', 'og')
cmd.set('cartoon_transparency','0.5')
cmd.fuse('at', 'og', 1)
cmd.torsion(-40.0)
cmd.zoom('1lmp')
cmd.turn("y", "80.0")
cmd.unpick()
cmd.do(f'png pr2_89.png')
time.sleep(2)
In [17]:
Image(filename='pr2_89.png')
Out[17]:

Напишите скрипт для построения поли-аланиновой альфа спирали длинной 100 аминкислот, спирали ДНК 100 нуклеотидов

In [20]:
cmd.reinitialize()
phi = 45
psi = 90
cmd.fragment('ala')
acid = 'ala'
for i in range (2,102):
    cmd.edit("i. %i & n. C" % i)
    cmd.do('editor.attach_amino_acid("pk1", "%s")' % acid)
    cmd.set_dihedral("i. %i & n. N" % i, "i. %i & n. CA" % i,
                    "i. %i & n. C" % i, "i. %i & n.  N" % (i+1),
                     phi)
    cmd.set_dihedral("i. %i & n.  C" % i, "i. %i & n. N" % (i+1),
                     "i. %i & n. CA" % (i+1), "i. %i & n. C" % (i+1),
                     psi)
cmd.show_as('cartoon')
cmd.save('pr2_7.pdb')
cmd.zoom()
cmd.bg_color('white')
In [21]:
cmd.do(f'png pr2_101.png, height={2000}')
time.sleep(2)
Image(filename='pr2_101.png')
Out[21]:
In [24]:
cmd.do('''
reini
bg_color white
fetch 2bna
create new_pair, resi 7+18
copy bdna, new_pair
delete 2bna
alter bdna, resi=0
''')
for i in range(99):
    cmd.transform_object('new_pair', trans)
    cmd.alter('new_pair', f'resi={i+1}')
    cmd.fuse('new_pair', 'bdna', mode=3)
cmd.unpick()
cmd.delete('new_pair')
cmd.save('DNA_B.pdb')
cmd.reinitialize()
cmd.load('DNA_B.pdb')
cmd.orient()
cmd.bg_color('white')
cmd.move('z', 300)
In [25]:
cmd.do(f'png pr2_11.png, height={1920}')
time.sleep(2)
Image(filename='pr2_11.png')
Out[25]:
In [ ]: