Работа с Pymol

In [1]:
from IPython.display import Image, display
import __main__
__main__.pymol_argv = [ 'pymol', '-x' ]

import pymol
pymol.finish_launching()
from pymol import cmd, stored

Задание 1 - Sculpting

In [66]:
cmd.reinitialize()
cmd.fetch('1lmp')
Out[66]:
'1lmp'

Для начала визуализируем 1lmp нормального человека

In [67]:
cmd.do('''
bg_color white
orient
hide everything
show cartoon
spectrum count, blue_red
png pr2_1lmp.png, width=1080, height=720, ray=3
''')
In [45]:
Image(filename='pr2_1lmp.png')
Out[45]:

А теперь "поиздеваемся" над ним с помощью Wizard -> Sculpting

In [68]:
cmd.do('''
orient
hide everything
show cartoon
spectrum count, blue_red
png pr2_1lmp_sculpt.png, width=1080, height=720, ray=3
''')
In [69]:
Image(filename='pr2_1lmp_sculpt.png')
Out[69]:

Задание 2 - Одиночная мутация

In [101]:
cmd.reinitialize()
cmd.fetch('1lmp')
Out[101]:
'1lmp'

Построим 2Д диаграмму взаимодействий с помощью Poseview на сайте Proteins.Plus: https://proteins.plus/1lmp

In [72]:
Image(filename='pr2_poseview.png')
Out[72]:

А теперь посмотрим на взаимодействие лиганда с белком в 3D.

In [102]:
cmd.do('''
bg_color white
select ligand, byres all within 4 of chain B
set cartoon_side_chain_helper, 1
color yellow, chain B
hide everything
show sticks, ligand
show cartoon
set cartoon_transparency, 0.5
orient ligand
''')
In [106]:
cmd.png('pr2_ligand.png')
In [107]:
Image(filename='pr2_ligand.png')
Out[107]:

Asp-52 кажется довольно перспективным остатком. Расстояние от лиганда 2.4 Å. Пожалуй, замутируем этот остаток на Trp.

In [114]:
cmd.wizard('mutagenesis')
cmd.refresh_wizard()
cmd.get_wizard().do_select('resi 52')
cmd.get_wizard().set_mode('TRP')
cmd.refresh_wizard()
cmd.get_wizard().apply()
cmd.set_wizard()

Результат мутагенеза представлен ниже. 52-ой остаток, который мутировали обозначен голубым, лиганд - жёлтым.

In [118]:
cmd.do('png pr2_mut.png, width=1080, height=720, ray=3')
In [119]:
Image(filename='pr2_mut.png')
Out[119]:

Задание 3 - Анимационный ролик

In [ ]:
 

Задание 4 - Метка TAMRA

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

In [120]:
Image(filename='pr2_tamra.png')
Out[120]:
In [129]:
cmd.reinitialize()
cmd.fetch('1lmp')
Out[129]:
'1lmp'

Присоединим метку к 47-ому остатку.

In [133]:
cmd.do('''
bg_color white
load Conformer3D_CID_2762604.sdf, tamra
remove tamra and id 54
show sticks, resi 47
remove resi 47 and name OG1
fuse tamra and donor, resi 47 and name CB, mode=1
remove tamra
orient resi 47
''')
In [134]:
cmd.do('png pr2_metka.png, width=1080, height=720, ray=3')
In [135]:
Image(filename='pr2_metka.png')
Out[135]:

Задание 5 - Полиаланиновая спираль

Нужно построить поли-аланиновую альфа-спираль длиной 100 аминокислот.

In [136]:
cmd.reinitialize()
for i in range(1, 100):
    cmd.editor.attach_amino_acid('pk1', 'ALA', ss=1)
In [12]:
cmd.do('''
bg_color white
orient
hide everything
show sticks
color chains
png pr2_helix.png, width=1080, height=540, ray=3
''')
In [13]:
Image(filename='pr2_helix.png')
Out[13]:

Задание 6 - B-форма ДНК

Нужно построить B-форму ДНК длинной 100 пар нуклеотидов. За основу возьмём структуру B-формы ДНК с PDB ID: 2BNA.

In [34]:
cmd.reinitialize()
cmd.do('''
fetch 2bna
create pair1, chain A and resi 4 or chain B and resi 21
create pair2, chain A and resi 5 or chain B and resi 20
create 1, pair1
pair_fit pair1, pair2
''')

transform = cmd.get_object_matrix("pair1")
for x in range(2, 101):
    cmd.create(str(x), str(x-1))
    cmd.do('cmd.transform_selection(%i, %s, homogenous=0)' % (x, transform))

cmd.delete('2bna')
cmd.do('''
bg_color white
hide everything
show spheres
orient
png pr2_bdna.png, width=1080, height=540, ray=3
''')
In [35]:
Image(filename='pr2_bdna.png')
Out[35]: