Работа с PyMol

На этой странице приведены примеры использования PyMol для решения разных задач.

Запустим PyMol:

In [1]:
from xmlrpclib import ServerProxy
from IPython.display import Image
import os, sys, time

# pymol launching
import __main__
__main__.pymol_argv = [ 'pymol', '-cp' ]
# __main__.pymol_argv = [ 'pymol', '-x' ]  # for GUI

import pymol
from pymol import cmd
pymol.finish_launching()

Создание картинок, параметры по умолчанию:

In [2]:
defaultImage = 'pymolimg.png'
def prepareImage(width=300, height=300, sleep=5, filename=defaultImage):
    ## To save the rendered image
    cmd.ray(width, height)
    cmd.png('pymolimg.png')
    time.sleep(sleep)
    
# Define some shortcuts
def focus(x):
    cmd.center(x)
    cmd.zoom(x)

Мутагенез

Проведем работу с белком 1bl8 (калиевый канал из Streptomyces lividans). В нем находятся 3 атома калия, 1 молекула воды (внутри канала).

In [18]:
cmd.fetch('1bl8')
prepareImage()
cmd.do('''
rotate [1,0,1], 100
select K, (name K)
K
focus(K)
show spheres, K
alter K, vdw=2.0
rebuild
''')
cmd.select('K')
cmd.disable('K')
cmd.show('sticks', 'K')

prepareImage()
Image(defaultImage)
#K403 вроде как связан с амк 75. участвуют для всех К: 75-78
Out[18]:

Один калий удерживают треонины 75 разных цепей.

In [24]:
k_resi = 'resi 75'

focus(k_resi)
cmd.select(k_resi)
cmd.do('''
label n. CA and i. 75, "Thr75"
''')
prepareImage()
Image(defaultImage)
Out[24]:

Проведем мутагенез треонина 75 в цепи А: заменим его на аланин.

In [33]:
mutant_resi = 'resi 75 and chain A'
focus(mutant_resi) #delete when win
cmd.select(mutant_resi)
prepareImage()
Image(defaultImage)
Out[33]:
In [38]:
cmd.select(mutant_resi)
cmd.wizard("mutagenesis")
cmd.do("refresh_wizard")
cmd.do('cmd.get_wizard().do_select("%s")' % mutant_resi)
cmd.do('cmd.get_wizard().set_mode("ALA")')
cmd.do("refresh_wizard")
cmd.do("cmd.get_wizard().apply()")
cmd.do("cmd.set_wizard()")

# Sometimes the temp mutant is not removed
#try:
#    cmd.remove("/_tmp_mut")
#except:
#    pass


focus(mutant_resi) #delete when win
prepareImage()
Image(defaultImage)
Out[38]:

Что-то он не мутирует. Не хочет калий терять свой треонин.

Создание анимации

Цель: создать анимационный ролик (mpeg) где происходит совмещение белков и показывается место мутации (команды mset, mview, super, translate, указания в object motions).

Совмещение произойдет, когда будет белок с мутацией...

Построение третичной структуры кубана на основе SMILES

С помощью программы babel строим третичную структуру вещества на основе SMILE нотации: C12C3C4C1C5C2C3C45.

In [3]:
%%bash
echo C12C3C4C1C5C2C3C45 > cubane.smi
obgen cubane.smi > cubane.mol
In [4]:
cmd.reinitialize()
cmd.bg_colour('white')

cmd.load('cubane.mol')
prepareImage()
Image(defaultImage)
Out[4]:

Присоединение флуоресцентной метри TAMRA к белку

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

Получим структуру TAMRA-метки в формате SDF:

In [6]:
import urllib2
tamra_url = "https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/cid/2762604/record/SDF/?response_type=save&record_type=3d"
connection = urllib2.urlopen(tamra_url)
sdf = connection.read()
with open('tamra.sdf', 'w') as w:
    w.write(sdf)
In [10]:
cmd.load('tamra.sdf')

focus('tamra')
cmd.set('ray_trace_mode', '0')
prepareImage()
Image(defaultImage)
Out[10]:

cmd.reinitialize() cmd.bg_colour('white') cmd.fetch('1bl8') anchor = 'resi 62 and chain A' anchor_O = '/1bl8//A/TYR`62/OH' #cmd.zoom(anchor_O)

cmd.show('sticks', anchor)
focus(anchor)

prepareImage() Image(defaultImage)

In [16]:
tamra_C  = '/tamra///UNK`/C'
In [19]:
#cmd.zoom('tamra')
#выбираем атом C в TAMRA для присоединения (Ctrl+правый клик): '/tamra///UNK`/C' < pk1
tamra_C = 'pk1'
In [21]:
select anchor_O, '/1bl8//A/TYR`62/OH'
select tamra_C, 'pk1'
cmd.fuse(anchor_O, tamra_C) #не работает без выбора атома в pymol (вручную)

Эти товарищи не соединяются... Поддерживается ли fuse в educational версии pymol?

Построение полипролиновой α-спирали

С помощью скрипта (код) получен полипептид из пролина длиной 100, показана часть.

Последнее изменение: 1.03.2016

In []: