На этой странице приведены примеры использования PyMol для решения разных задач.
Запустим PyMol:
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()
Создание картинок, параметры по умолчанию:
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 молекула воды (внутри канала).
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
Один калий удерживают треонины 75 разных цепей.
k_resi = 'resi 75'
focus(k_resi)
cmd.select(k_resi)
cmd.do('''
label n. CA and i. 75, "Thr75"
''')
prepareImage()
Image(defaultImage)
Проведем мутагенез треонина 75 в цепи А: заменим его на аланин.
mutant_resi = 'resi 75 and chain A'
focus(mutant_resi) #delete when win
cmd.select(mutant_resi)
prepareImage()
Image(defaultImage)
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)
Что-то он не мутирует. Не хочет калий терять свой треонин.
Цель: создать анимационный ролик (mpeg) где происходит совмещение белков и показывается место мутации (команды mset, mview, super, translate, указания в object motions).
Совмещение произойдет, когда будет белок с мутацией...
С помощью программы babel строим третичную структуру вещества на основе SMILE нотации: C12C3C4C1C5C2C3C45.
%%bash
echo C12C3C4C1C5C2C3C45 > cubane.smi
obgen cubane.smi > cubane.mol
cmd.reinitialize()
cmd.bg_colour('white')
cmd.load('cubane.mol')
prepareImage()
Image(defaultImage)
Приседеним флуорусцентную метку TAMRA к белку через сложноэфирную связь (используем команды fuse и torsion).
Получим структуру TAMRA-метки в формате SDF:
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)
cmd.load('tamra.sdf')
focus('tamra')
cmd.set('ray_trace_mode', '0')
prepareImage()
Image(defaultImage)
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)
tamra_C = '/tamra///UNK`/C'
#cmd.zoom('tamra')
#выбираем атом C в TAMRA для присоединения (Ctrl+правый клик): '/tamra///UNK`/C' < pk1
tamra_C = 'pk1'
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