Установка Pymol через командную строку:
conda install -c schrodinger pymol
import numpy as np
Запуск Pymol:
import __main__
__main__.pymol_argv = [ 'pymol', '-x' ]
import pymol
pymol.finish_launching()
from pymol import cmd,stored
Загрузка структуры белка, установка цвета фона, способаотображения структуры, положения, приближения:
cmd.do('''
fetch 1cll, async=0
bg_color white
as sticks, n. C+O+N+CA
zoom i. 4+5
mset 1 x1000
mview store''')
Список аминокислот белка:
stored.r = []
cmd.iterate('1cll and n. CA','stored.r.append(resi)')
152
Создаем массив colors, который содержит значение от 1 до 0.5 для каждого аминокислотного остатка белка:
length = len(stored.r)
colors = np.linspace(1,0.5, length)
Задаем набор цветов col0, col1 и т.д. с параметрами [значение из colors, 0.5, 0.75], далее каждому остатку белка присваиваем свой цвет:
for k,i in enumerate(stored.r):
cmd.set_color('col%d' %k, [colors[k],0.5,0.75])
cmd.set('cartoon_color','col%d' % k ,'resi %s' % i)
cmd.show_as('cartoon','all')
Для окрашенной по остаткам структуры создаем анимацию, которая отображается в окне Pymol:
for i in range(length):
cmd.frame((10*i)+1)
cmd.zoom( 'n. CA and i. %d+%d' % (i,i+7))
cmd.mview('store')
cmd.mplay()
Загрузка Pymol и модулей:
import __main__
__main__.pymol_argv = [ 'pymol', '-x' ]
import pymol
pymol.finish_launching()
from pymol import cmd,stored
import numpy as np
from IPython.display import Image
import time
Загрузка структуры белка 1lmp:
cmd.do('''
fetch 1lmp, async=0
as lines, n. C+O+N+CA
mset 1 x1000
mview store''')
Sculpting
C помощью вкладки Sculpting в окне pymol (Wizard - Demo - Sculpting) можно изменить структуру белка (положение атомов, углы). После внесения изменений происходит автоматическая оптимизация структуры.
До sculpting:
Image('img1.png')
После sculpting:
Image('img2.png')
Одиночная мутация в области взаимодействия с лигандом
cmd.do('''
reini
fetch 1lmp, async=0
bg_color white
remove solvent
hide everything
select ligand, resn NAG+NDG
select site, byres ligand around 3.5
as sticks, ligand
as lines, site
util.cbaw ligand
util.cbay site
distance h, ligand, site, 3.5, 2
color hotpink, h
set label_size, 10
orient resi 52 or ligand
''')
cmd.set('ray_trace_mode', 3)
cmd.png('img3.png', '1920', '1080', ray=3)
Image('img3.png')
Лиганд образует несколько водородных связей с остатками белкового окружения, как с остовом, так и с атомами боковых радикалов. Для мутагенеза был выбран остаток Asp52, боковой радикал которого образует водородную связь с лигандом.
cmd.wizard("mutagenesis")
cmd.do("refresh_wizard")
cmd.get_wizard().set_mode("GLY")
cmd.select("resi 52")
cmd.get_wizard().do_select("sele")
cmd.get_wizard().apply()
cmd.set_wizard()
После внесения мутации была произведена оптимизация получаенной структуры с помощью Sculpting:
cmd.do('''
set auto_sculpt, on
set sculpting, on
sculpt_activate all
''')
time.sleep(60)
cmd.do('''
set sculpting, off
''')
Новое изображение:
cmd.do('''
delete h
hide site
select new_site, byres ligand around 3.5
as lines, new_site
util.cbay new_site
distance h, ligand, new_site, 3.5, 2
color hotpink, h
set label_size, 10
orient resi 52 or ligand
''')
cmd.set('ray_trace_mode', 3)
cmd.png('img4.png', '1920', '1080', ray=3)
Image('img4.png')
Видно, что при внесении одиночной мутации теряется не только водородная связь с остатком, который мутируется, но и с прилежащими аминоксилотными остатками в этой области.
Сохраняем новую структуру:
cmd.save('mut1LMP.pdb')
Видео совмещения структур
Загружаем исходную структуру и структуру с мутацией, подготавливаем оформление структур:
cmd.do('''
reini
fetch 1lmp, async=0
load mut1LMP.pdb
bg_color white
remove solvent
select ligand, resn NAG+NDG
hide everything
as lines, not ligand
as sticks, ligand
color lightpink, not ligand and 1lmp
color palegreen, not ligand and mut1LMP
util.cbak ligand and 1lmp
util.cbag ligand and mut1LMP
select resi 52 and 1lmp
util.cbak sele
as sticks, sele
select resi 52 and mut1LMP
util.cbag sele
as sticks, sele
super 1lmp, mut1LMP
''')
Записываем видео:
cmd.mset('1 x90')
cmd.translate('[0, 0, 50]', 'mut1LMP')
cmd.translate('[0, 0, -50]', '1lmp')
cmd.center('mut1LMP + 1lmp')
cmd.zoom('center', '20')
cmd.mview('store')
cmd.frame('1')
cmd.mview('store')
cmd.mview('store', object='mut1LMP')
cmd.mview('store', object='1lmp')
cmd.frame('50')
cmd.translate('[0, 0, -50]', object='mut1LMP')
cmd.translate('[0, 0, 50]', object='1lmp')
cmd.mview('store')
cmd.mview('store', object='mut1LMP')
cmd.mview('store', object='1lmp')
cmd.frame('90')
cmd.center('resi 52')
cmd.zoom('resi 52', 5)
cmd.mview('store')
cmd.mview('store', object='mut1LMP')
cmd.mview('store', object='1lmp')
Полученное видео (конвертировано в формат gif с помощью стороннего ресурса):
from IPython.display import Image
display(Image("movie.gif", format='png'))
Присоединение флуоресцентной метки TAMRA
Загружаем структуру белка и структуру TAMRA:
cmd.do('''
reini
bg_color white
load TAMRA.sdf
util.cbam TAMRA
fetch 1lmp, async=0
util.cbay 1lmp
remove solvent
select ligand, resn NAG+NDG and 1lmp
as sticks, ligand
as cartoon, not ligand and 1lmp
''')
На поверхности белка располагается остаток треонина, атом кислорода в боковом радикале которого может участвовать в образовании сложноэфирной связи. В структуре TAMRA присутствует карбоксильная группа, которая моет участвовать в образовании сложноэфирной связи.
cmd.do('''
select prot_thr, resi 81 and name CB
as sticks, resi 81 and 1lmp
remove elem H
remove name OG and resi 81
''')
Присоединяем метку:
cmd.fuse('TAMRA and donor', 'prot_thr')
Задаем положение изображения:
cmd.do('''
select site, prot_thr around 7
orient site''')
cmd.set('ray_trace_mode', 3)
cmd.png('img5.png', '1920', '1080', ray=3)
Конечное изображение:
Image('img5.png')
Построение полиаланиновой полимерной цепи
cmd.do('''
reini
bg_color white
fragment ala
as sticks, ala
util.cbas ala
''')
for i in range(1,100):
cmd.edit(f'resi {i + 1} and name C')
cmd.editor.attach_amino_acid('pk1', 'ala', ss=1)
cmd.set('ray_trace_mode', 1)
cmd.png('img6.png', '1920', '1080', ray=1)
Image('img6.png')