Работа с Pymol

In [1]:
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

Задание 1

В данном задании нужно было оценить возможность Sculpting (Wizard>Demo>Sculpting), изменить структуру белка 1LMP. На первой картинке представлена структура до применения функции, на второй - после.

In [2]:
cmd.do('''
fetch 1lmp, async=0
as cartoon, n. C+O+N+CA
align center
remove solvent
''')
In [3]:
cmd.png('1lmp.png') 
Image(filename='1lmp.png')
Out[3]:
In [4]:
Image(filename='1lmp1_sculp.png')
Out[4]:

Задание 2

В данном задании необходимо было выбрать аминокислоту, которая отвечает за связь с лигандом, и с помощью команды Wizard>Mutagenesis мутировать эту аминокислоту, что должно привести к потере связывания. С лигандом связано 5 аминокислот белка: на рисунке ниже представлено 4 из них и их контакты с лигандом. Для мутации я выбрала Asp52.

In [5]:
Image(filename='contact.png')
Out[5]:
In [6]:
cmd.reinitialize()
cmd.do('''
fetch 1lmp, async=0
as cartoon, n. C+O+N+CA
remove solvent
select lig, resn ndg+nag 
show sticks, resi 52
dist hbond, lig, resi 52,3.6, mode=2
select before, resi 52 + resn ndg
zoom before, 2
deselect
''')
In [7]:
cmd.png('Asp_before.png')
Image(filename='Asp_before.png')
Out[7]:
In [8]:
from pymol.wizard import Wizard
cmd.do('''
delete hbond
wizard mutagenesis
refresh_wizard
cmd.get_wizard().set_mode("GLY")
cmd.get_wizard().do_select("resi 52")
cmd.get_wizard().apply()
cmd.set_wizard()
dist hbond, lig, resi 52,3.6, mode=2
''')
In [9]:
cmd.png('Asp_after.png')
Image(filename='Asp_after.png')
Out[9]:

Задание 3

В данном задании необходимо создать mpeg, где происходит совмещение белков и показывается место мутации. Сначала создаю 2 структуры (с мутацией и без), находящиеся рядом - визуализирую с помощью картинки. Затем совмещаю данные структуры и сохраняю видео. У меня возникли проблемы со вставкой видео, поэтому я сконвертировала видео формата mpeg в gif и вставила на страницу gif.

In [10]:
cmd.reinitialize()
cmd.do('''
fetch 1lmp, mut
as cartoon, n. C+O+N+CA
remove solvent
select lig, resn ndg+nag 
show sticks, resi 52
zoom 1lmp
deselect
wizard mutagenesis
refresh_wizard
cmd.get_wizard().set_mode("GLY")
cmd.get_wizard().do_select("resi 52")
cmd.get_wizard().apply()
cmd.set_wizard()
''')
In [11]:
cmd.do('''
fetch 1lmp, without
as cartoon, n. C+O+N+CA
remove solvent
show sticks, resi 52
translate [-30, 0, 0], without
center all
zoom center, 30
''')
In [12]:
cmd.png('Mix.png')
Image(filename='Mix.png')
Out[12]:
In [13]:
cmd.do('''
mset 1x240

frame 1
mview store
mview store, object=mut
mview store, object=without

frame 60
mview store
translate [15, 0, 0], object=without
mview store, object=without
translate [-15, 0, 0], object=mut
mview store, object=mut

frame 100
zoom mut
mview store, object=without
mview store, object=mut
mview store

frame 180
zoom resi 52, 6
center resi 52
mview store, object=mut
mview store, object=without
mview store

frame 240
mview store, object=mut
mview store, object=without
zoom resi 52, 2
turn y, 180
mview store
 
mview reinterpolate, object=without
mview reinterpolate, object=mut
mview reinterpolate

mplay

movie.produce movie.mpg, quality=180
''')
In [14]:
from IPython.display import display

display(Image(filename='movie.gif', format='png'))

Задание 4

В этом задании необходимо было присоединить флуоресцентную метку TAMRA к белку через сложноэфирную связь.

In [15]:
cmd.reinitialize()
In [16]:
cmd.do('''
fetch 1lmp, async=0
as cartoon, n. C+O+N+CA
remove solvent
hide sticks
load Tag.sdf
show sticks, resi 50
remove resi 50 and name OG1
fuse Tag and donor, resi 50 and name CB
remove Tag
unpick
select tag_, resi 50 + Tag
zoom tag_, 8
rotate x,90
deselect
''')
In [17]:
cmd.png('Tag.png')
Image(filename='Tag.png')
Out[17]:

Задание 5

В задании необходимо построить поли-аланиновую альфа спираль длинной 100 аминокислот.

In [18]:
cmd.reinitialize()
cmd.fragment('ALA')
phi = -60
psi = -45
for x in range(2,100):
     cmd.edit("/ALA///"+str(x)+"/c")
     cmd.editor.attach_amino_acid("pk1","ALA")  
for x in range (2, 101):
    cmd.do(f'''
    set_dihedral resi {x} & n. N, resi {x} & n. CA, resi {x} & n. C, resi {x+1} & n. N, {phi}
    set_dihedral resi {x} & n. C, resi {x+1} & n. N, resi {x+1} & n. CA, resi {x+1} & n. C, {psi}
    ''')
cmd.zoom()
cmd.orient()
cmd.unpick()
In [19]:
cmd.png('ALA.png')
Image(filename='ALA.png')
Out[19]:

Задание 6

В задании необходимо написать скрипт для построения B-формы ДНК длинной 100 пар нуклеотидов. Заготовок для нуклеиновых кислот нет, поэтому необходимо взять файл pdb, вычленить оттуда нуклеотидные пары, определеить матрицу превращения при совмещении одной пары нуклеотидов с последующей. Потом используем эту матрицу для построения цепочки.

In [20]:
cmd.reinitialize()
cmd.do('''
fetch 1ZEW
remove solvent
remove resn NA
create pair, resi 9+12
create nextpair, resi 8+13
create 1, pair
pair_fit pair, nextpair
''')
trans = cmd.get_object_matrix("pair")
for x in range(2,100):
    cmd.create(str(x), str(x-1))
    cmd.transform_selection (str(x), trans, homogenous=0)
cmd.do('''
delete 1ZEW
show sticks
orient
zoom all
''') 
In [21]:
cmd.png('DNA.png')
Image(filename='DNA.png')
Out[21]:
In [ ]: