Задание:
Используя select within найдите водородные связи которыми белок связывает лиганд. Опишите эти возможные другие взаимодействия белка с лигандом. Попробуйте поискать альтернативный способ поиска водородных связей.
Сначала загрузим непосредственно белок, предварительно загрузив необходимые библиотеки:
import pymol
from pymol import cmd
from IPython.display import Image
pymol.finish_launching(['pymol', '-q'])
cmd.fetch('1lmp')
cmd.png("C:/Users/Mister_Ruvim/Pictures/shush.png")
Image(filename='C:/Users/Mister_Ruvim/Pictures/shush.png')
Теперь уже внутри программы я с помощью тулов нахожу лиганд: на белке action->ligand ->preset->ligands
Получили следующее:
Image(filename="C:/Users/Mister_Ruvim/Desktop/pictures/ligand.png")
Далее, выделим водородные связи , которые связывают остальной белок и лиганд. Для этого я сделал следующее: 1) выделил остальной белок в командной строке командой: select excProtein, ! (ligand) 2) выделил ligand, команда find->polar_contacts->to_other_atoms_in_object
Image(filename='C:/Users/Mister_Ruvim/Desktop/pictures/hydrogen_bonds.png')
Для того, чтобы понять, какую мутацию надо провести в белке, чтобы он потерял связь с лигандом, необходимо понять, какие остатки находятся на минимальном расстоянии от лиганда. Затем этот остаток можно мутировать и , наверняка, учитывая его близкую связь с лигандом это приведет к потере связывания.
Посмотрим, какие остатки находятся на минимальном расстоянии от лиганда с помощью команды distance: возьмем порог 3
команда в консоле:distance dist ,(ligand), (excProtein), 3
Image(filename='C:/Users/Mister_Ruvim/Desktop/pictures/resi 101.png')
В результате оказалось, что остатки 52 и 101 оказались на самом минимальном расстоянии 2.4 . Поэтому было решено мутировать один из этих остатков. В лейцин, например. Последовательность действий была следующая: 1) wizard->mutagenesis 2) Выбрали остаток 101 3) no mutation 4) LEU , ->apply->done
Image(filename='C:/Users/Mister_Ruvim/Desktop/pictures/LEU.png')
С помощью команды save molecule мы сохранили мутированный объект в формате pdb. Теперь откроем оба белка и начнем построение ролика.
cmd.reinitialize()
cmd.fetch('1lmp_orig')
cmd.fetch('1lmp_mut_leu')
cmd.set('cartoon_side_chain_helper', 'on')
cmd.hide('everything')
cmd.show('cartoon','1lmp_orig')
cmd.show('cartoon','1lmp_mut_leu')
cmd.colour('blue','1lmp_orig')
cmd.colour('green','1lmp_mut_leu')
cmd.translate('[-35, 0, 0]', '1lmp_orig')
cmd.center('1lmp_orig + 1lmp_mut_leu')
cmd.zoom('1lmp_orig + 1lmp_mut_leu')
#cmd.ray(500, 500)
cmd.png("C:/Users/Mister_Ruvim/Pictures/shush.png")
Image("C:/Users/Mister_Ruvim/Pictures/shush.png")
Дальше я выделил опять лиганды и остатки в этом проекте и сохранил его, чтобы имея оба белка раскрасить нужные структуры в нужный цвет. (Да, немного криво - но лучше не придумал)
cmd.load('seans.pse')
cmd.center('1lmp_orig + 1lmp_mut_leu')
cmd.hide('everything')
cmd.show('cartoon','1lmp_orig & !ligand_orig')
cmd.show('cartoon','1lmp_mut_leu& !ligand_mut')
cmd.colour('red','1lmp_orig')
cmd.colour('pink','1lmp_mut_leu')
cmd.show('sticks','ligand_orig')
cmd.colour('blue','ligand_orig')
cmd.show('sticks','ligand_mut')
cmd.colour('blue','ligand_mut')
cmd.show('sticks','resi_mut')
cmd.show('sticks','resi_orig')
cmd.colour('yellow','resi_orig')
cmd.colour('orange','resi_mut')
cmd.center('1lmp_orig + 1lmp_mut_leu')
cmd.zoom('1lmp_orig + 1lmp_mut_leu')
cmd.ray(700, 700)
cmd.png("C:/Users/Mister_Ruvim/Pictures/shush.png")
Image("C:/Users/Mister_Ruvim/Pictures/shush.png")
После того, как все было покрашено в необходимый цвет - я приступил к созданию ролика. Наверху слева оригинальный 1lmp , а справа мутированный. Ролик я прикрепил отдельно в отчет (простите заради Создателя Вселенной).
cmd.load('seans.pse')
cmd.center('1lmp_orig + 1lmp_mut_leu')
cmd.hide('everything')
cmd.show('cartoon','1lmp_orig & !ligand_orig')
cmd.show('cartoon','1lmp_mut_leu& !ligand_mut')
cmd.colour('red','1lmp_orig')
cmd.colour('pink','1lmp_mut_leu')
cmd.show('sticks','ligand_orig')
cmd.colour('blue','ligand_orig')
cmd.show('sticks','ligand_mut')
cmd.colour('blue','ligand_mut')
cmd.show('sticks','resi_mut')
cmd.show('sticks','resi_orig')
cmd.colour('yellow','resi_orig')
cmd.colour('orange','resi_mut')
cmd.center('1lmp_orig + 1lmp_mut_leu')
cmd.zoom('1lmp_orig + 1lmp_mut_leu')
#cmd.ray(700, 700)
#################
cmd.mset('1x120')
cmd.super('1lmp_orig','1lmp_mut_leu')
cmd.frame('1')
cmd.do('translate [-25, 0, 0], object= 1lmp_orig')
cmd.zoom('1lmp_orig')
cmd.mview('store')
cmd.frame('100')
cmd.do('translate [25, 0, 0], object= 1lmp_orig')
cmd.zoom('resi_mut')
cmd.mview('store')
#mview reinterpolate
#cmd.frame('120')
#cmd.zoom('1lmp_orig')
#cmd.mview('store')
#cmd.center('1lmp_orig + 1lmp_mut_leu')
#cmd.frame('300')
#cmd.do('mview store, object=original')
cmd.mpng('1LMP_mutation')
На википедии в статье под названием "Белок" нашел информацию о том, что в сложноэфирной связи может принимать участие серин, треонин, тирозин... Искал серин с помощью команды sele resn thr и среди них выбрал нужный остаток (resi122).
cmd.reinitialize()
cmd.load('tamra.sdf')
cmd.fetch('1lmp')
cmd.hide('everything')
cmd.set('cartoon_side_chain_helper', 'on')
cmd.show('cartoon','1lmp')
cmd.show('sticks','1lmp & resi 47')
cmd.show('lines','tamra')
cmd.colour('green','tamra')
dot1='1lmp & resi 47 & n. OG1'
cmd.colour('yellow',dot1)
cmd.center(dot1)
cmd.zoom(dot1)
cmd.png("C:/Users/Mister_Ruvim/Pictures/shush.png")
Image("C:/Users/Mister_Ruvim/Pictures/shush.png")
Присоединим метку к данному атому. Атом в метке выбирался вручную.
cmd.zoom('tamra')
dot2='/tamra///UNK`/C'
cmd.fuse(dot1,dot2)
cmd.zoom(dot2+dot1)
Image("C:/Users/Mister_Ruvim/Desktop/Pictures/tamra.png")
Углы нашел у Ramachadran . Каждый раз цепляем аланин и задаем нужные углы.
cmd.do("reinitialize")
phi = -58
psi = -47
omega = 180
n = 100
cmd.do('frag ala')
cmd.set_name('ala','helix')
cmd.alter('helix','resi=1')
cmd.do('frag ala')
cmd.alter('ala','resi=2')
cEnd='helix & name C'
nEnd='ala & name N'
cmd.fuse(nEnd,cEnd)
for i in range(2,n-1):
cEnd="helix & name C & resi %d"%i
#create new residue to append to previous
cmd.alter('ala','resi=%d'%(i+1))
nEnd='ala & name N & resi %d'%(i+1)
#appending
cmd.fuse(nEnd,cEnd)
# atoms list= CA previous, C previous, N current, CA current, C current, next N
atoms = [
"helix & name CA & resi %d"%(i-1),
"helix & name C & resi %d"%(i-1),
"helix & name N & resi %d"%i,
"helix & name CA & resi %d"%i,
"helix & name C & resi %d"%i,
"helix & name N & resi %d"%(i+1),
]
#set angles
cmd.set_dihedral(atoms[2], atoms[3], atoms[4], atoms[5], psi)
cmd.set_dihedral(atoms[1], atoms[2], atoms[3], atoms[4], phi)
cmd.set_dihedral(atoms[0], atoms[1], atoms[2], atoms[4], omega)
cmd.hide('everything')
cmd.show('sticks')
cmd.center('helix + ala')
cmd.zoom('helix + ala')
cmd.ray(width=1000, height=500)
cmd.png("C:/Users/Mister_Ruvim/Pictures/shush.png")
Image("C:/Users/Mister_Ruvim/Pictures/shush.png")
#cmd.edit(bond)
#time.sleep(5)
#cmd.edit('bond, "resi 2 & name C","resi 3 & name N" ')
#cmd.bond("ala & resi 2 & name C","ala & resi 3 & name N")
#cmd.bond("resi 2 & name C","resi 3 & name N")
#cmd.edit()
#cmd.alter
cmd.png("C:/Users/Mister_Ruvim/Pictures/theDownwardSpiral.png")
Image("C:/Users/Mister_Ruvim/Pictures/theDownwardSpiral.png")