Python launching
#python launching
import __main__
__main__.pymol_argv = [ 'pymol', '-x' ]
import pymol
import IPython
pymol.finish_launching()
from pymol import cmd
cmd.do('''
fetch 1lmp, async=0
remove solvent
bg_color white
''')
wizard-->sculpting вручную сохраним картинку до изменения
cmd.png(filename="without_sculpting.png",width='10cm',dpi=300,ray=3)
IPython.display.Image("without_sculpting.png", retina = True)
сохраним картинку после изменения
cmd.png(filename='sculpted.png',width='10cm',dpi=300,ray=3)
IPython.display.Image("sculpted.png", retina = True)
cmd.reinitialize()
cmd.bg_color(color="black")
cmd.do('''
set ray_trace_mode, 0
set antialias, .5
fetch 1lmp
''')
будем делать мутагенез. найдем подходящий остаток для мутагенеза. Для этого на сайте pdb подберем подходящий лиганд. Например, это Asn 46
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
''')
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*
''')
лиганд отмечен зеленым видим карман белка, в котором находится лиганд видны водородные связи с кислородом и азотом
cmd.png(filename="ligand.png",width='10cm',dpi=300,ray=3)
IPython.display.Image("ligand.png", retina = True)
проведем мутацию, заменив Asn46 на валин
from pymol import wizard
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.color("sulfur", '/1lmp//A/46')
cmd.distance('hbonds', '(/1lmp//A)', 'lig', '3.5', '2')
рыжим цветом показан мутировавший остаток
cmd.png(filename="mutate.png",width='10cm',dpi=300,ray=3)
IPython.display.Image("mutate.png", retina = True)
загрузим неизмененный белок
cmd.do('''
reinitialize
fetch 1lmp
''')
снова сделаем мутагенез+загрузим неизмененную структуру
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
''')
лиганд покрашен розовым
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
''')
cmd.zoom()
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
''')
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
выкладываем видео,где происходит совмещение двух белков и показывается место мутации, на страницу:
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')))
Присоединение флуоресцентной метки TAMRA
покажем метку
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)
cmd.do('''
fetch 1lmp
remove solvent
''')
cmd.color('green','1lmp')
cmd.show('cartoon', '1lmp')
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')
cmd.fuse('at', 'og', 1)
cmd.zoom('1lmp')
cmd.png(filename='tamra2.png',width='11cm',dpi=300, ray=1)
import IPython
IPython.display.Image("tamra2.png", retina = True)
построение полиаланиновой альфа-спирали длиной 100 аминокислот. примем угол φ=-61° и ψ=-42°.
cmd.reinitialize()
cmd.bg_color('white')
первый остаток добавляем при помощи команды fragment, удлиняем цепь при помощи attach_amino_acid
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)
скрипт для построения B-формы ДНК длиной 100 нуклеотидов. Суть подхода состоит в определении матрицы превращения при совмещении одной пары нуклеотидов с последующей. Взяла структуру 1ZEW
cmd.reinitialize()
cmd.do('''
fetch 1zew
show cartoon
remove solvent
''')
cmd.bg_color('white')
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''')
размножаем полученную матрицу
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))
cmd.delete('1zew')
cmd.show('sticks')
cmd.zoom('center','70')
cmd.png(filename='bdna.png',width='8cm',dpi=300, ray=1)
import IPython
IPython.display.Image("bdna.png", retina = True)