Python launching

In [1]:
#python launching
import __main__
__main__.pymol_argv = [ 'pymol', '-x' ]
import pymol
import IPython
pymol.finish_launching()
from pymol import cmd
In [2]:
cmd.do('''
fetch 1lmp, async=0
remove solvent
bg_color white
''')

wizard-->sculpting вручную сохраним картинку до изменения

In [4]:
cmd.png(filename="without_sculpting.png",width='10cm',dpi=300,ray=3)
IPython.display.Image("without_sculpting.png", retina = True)
Out[4]:

сохраним картинку после изменения

In [6]:
cmd.png(filename='sculpted.png',width='10cm',dpi=300,ray=3)
IPython.display.Image("sculpted.png", retina = True)
Out[6]:
In [7]:
cmd.reinitialize()
In [8]:
cmd.bg_color(color="black")
In [9]:
cmd.do('''
set ray_trace_mode, 0
set antialias, .5
fetch 1lmp
''')

будем делать мутагенез. найдем подходящий остаток для мутагенеза. Для этого на сайте pdb подберем подходящий лиганд. Например, это Asn 46

In [10]:
cmd.do('''
remove solvent
extract lig, het
as surface, 1lmp
set cartoon_transparency, 0.5
as sticks, lig
center lig
origin lig
zoom lig
select residues, byres /1lmp//A  and (lig around 3.5)
show sticks, residues
label residues, resn,resi
''')
In [11]:
cmd.distance('hbonds', '(/1lmp//A)', 'lig', '3.5', '2')
cmd.do('''

color green, lig 
color violet, 1lmp
color rutherfordium, (/1lmp//A or lig) and name o*
color deepblue, (/1lmp//A or lig) and name n*
''')

лиганд отмечен зеленым видим карман белка, в котором находится лиганд видны водородные связи с кислородом и азотом

In [12]:
cmd.png(filename="ligand.png",width='10cm',dpi=300,ray=3)
IPython.display.Image("ligand.png", retina = True)
Out[12]:

проведем мутацию, заменив Asn46 на валин

In [13]:
from pymol import wizard
cmd.wizard("mutagenesis")
cmd.do("refresh_wizard")
In [14]:
cmd.get_wizard().set_mode("VAL")
cmd.get_wizard().do_select("/1lmp//A/46")
cmd.frame(1)
cmd.get_wizard().apply()
cmd.wizard(None)
In [15]:
cmd.color("sulfur", '/1lmp//A/46')
cmd.distance('hbonds', '(/1lmp//A)', 'lig', '3.5', '2')
Out[15]:
2.8769071102142334

рыжим цветом показан мутировавший остаток

In [16]:
cmd.png(filename="mutate.png",width='10cm',dpi=300,ray=3)
IPython.display.Image("mutate.png", retina = True)
Out[16]:

загрузим неизмененный белок

In [17]:
cmd.do('''
reinitialize
fetch 1lmp
''')

снова сделаем мутагенез+загрузим неизмененную структуру

In [18]:
cmd.wizard("mutagenesis")
cmd.do("refresh_wizard")
cmd.get_wizard().set_mode("VAL")
cmd.get_wizard().do_select("/1lmp//A/46")
cmd.frame(1)
cmd.get_wizard().apply()
cmd.wizard(None)
cmd.do('''
fetch 1lmp, 1lmpnew
''')

лиганд покрашен розовым

In [19]:
cmd.do('''
color palecyan, 1lmpnew
color lime, 1lmp
remove solvent
extract lig,het
as cartoon, 1lmpnew
as cartoon, 1lmp
as sticks, lig
color warmpink, lig
show stick, resi 46
zoom all
center all
''')
In [20]:
cmd.zoom()
In [21]:
cmd.do('''
set matrix_mode, 1
set movie_panel, 1
set cache_frames, 1
mset 1-180

frame 1
translate [0,60,0], object=1lmpnew 
mview store                     
mview store, object=1lmpnew         
mview store, object=1lmp

frame 60                        
translate [0,-60,0], object=1lmpnew 
mview store                     
mview store, object=1lmpnew         
mview store, object=1lmp        
mview interpolate, object=1lmpnew 

frame 90                      
orient resi 46                        
mview store                     
mview store, object=1lmpnew         
mview store, object=1lmp   

frame 120                       
orient resi 46                                      
mview store                     
mview store, object=1lmpnew          
mview store, object=1lmp
mplay
''')
In [22]:
cmd.mpng('mutation')

дальше в командной строке выполняем вот это: ffmpeg -i mutation0%03d.png -c:v libx264 -pix_fmt yuv420p -vf "scale=trunc(iw/2)2:trunc(ih/2)2" movie2.mp4

выкладываем видео,где происходит совмещение двух белков и показывается место мутации, на страницу:

In [23]:
import io
import base64
from IPython.display import HTML
video = io.open('movie2.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')))
Out[23]:

Присоединение флуоресцентной метки TAMRA

покажем метку

In [26]:
cmd.reinitialize()
cmd.load("tamra.sdf")
cmd.color('violet','tamra')
cmd.remove('tamra and id 4')
cmd.select('at', 'id 32')
cmd.png(filename="tamra.png",width='10cm',dpi=300,ray=3)
import IPython
IPython.display.Image("tamra.png", retina = True)
Out[26]:
In [27]:
cmd.do('''
fetch 1lmp
remove solvent
''')
cmd.color('green','1lmp')
cmd.show('cartoon', '1lmp')
In [28]:
cmd.select('ser', '/1lmp//A/SER`15')
cmd.select('og','/1lmp//A/SER`15/OG')
cmd.show('cartoon', '1lmp')
cmd.show('sticks', 'ser')
cmd.color('yellow', 'ser')
cmd.color('orange', 'og')
cmd.set('cartoon_transparency','0.5')
In [29]:
cmd.fuse('at', 'og', 1)
cmd.zoom('1lmp')
In [30]:
cmd.png(filename='tamra2.png',width='11cm',dpi=300, ray=1)
import IPython
IPython.display.Image("tamra2.png", retina = True)
Out[30]:

построение полиаланиновой альфа-спирали длиной 100 аминокислот. примем угол φ=-61° и ψ=-42°.

In [101]:
cmd.reinitialize()
cmd.bg_color('white')

первый остаток добавляем при помощи команды fragment, удлиняем цепь при помощи attach_amino_acid

In [102]:
cmd.fragment('ala')
ala = 'ala'
cmd.do('''
python
for x in range(2,101):
     cmd.edit("/ala///"+str(x)+"/c")
     editor.attach_amino_acid("pk1","ala")
for x in range(2,101):
     cmd.edit("/ala///"+srt(x)+"/N","/ala///"+srt(x)+"/CA")
     cmd.torsion (-61) #rotates the torsion angle
     cmd.edit("/ala///"+srt(x)+"/CA","/ala///"+srt(x+1)+"/C")
     cmd.torsion (-42)
python end
zoom resn ala
show cartoon, ala''')
cmd.zoom('center','60')
cmd.png(filename='ala.png',width='51cm',dpi=300, ray=1)
import IPython
IPython.display.Image("ala.png", retina = True)
Out[102]:

скрипт для построения B-формы ДНК длиной 100 нуклеотидов. Суть подхода состоит в определении матрицы превращения при совмещении одной пары нуклеотидов с последующей. Взяла структуру 1ZEW

In [162]:
cmd.reinitialize()
In [163]:
cmd.do('''
fetch 1zew
show cartoon
remove solvent
''')
cmd.bg_color('white')
In [164]:
cmd.do('''create pair1, chain A and resi 8 or chain B and resi 13
create pair2, chain A and resi 7 or chain B and resi 14
create 1, pair1
pair_fit pair1, pair2''')

размножаем полученную матрицу

In [165]:
transformation = cmd.get_object_matrix("pair1")
for x in range(2, 100):
    cmd.create(str(x), str(x-1))
    cmd.do('cmd.transform_selection(%i, %s, homogenous=0)' % (x, transformation))
    
In [166]:
cmd.delete('1zew')
cmd.show('sticks')
In [167]:
cmd.zoom('center','70')
cmd.png(filename='bdna.png',width='8cm',dpi=300, ray=1)
import IPython
IPython.display.Image("bdna.png", retina = True)
Out[167]: