Введение в Pymol

In [1]:
import numpy as np
import IPython 
from IPython.display import Image
In [2]:
import sys #импортируем pymol
import __main__
__main__.pymol_argv = ['pymol', '-x']

import pymol
pymol.finish_launching()
from pymol import cmd,stored
In [3]:
cmd.do('''
fetch 1c11, async = 0
bg_color white
as lines, n. C+O+N+CA
zoom i. 3+5
mset 1 x1000
mviev store''')
#fetch скачивает pdb, async 0/1 (default) 0 запускает в отедльном потоке
#zoom - приближаем нужный участок структуры (3 и 5 остаток)
#1000 фреймов видео
#Водород не включен

Итерация по остаткам

In [4]:
stored.r = [] 
cmd.iterate('1cll and n. CA','stored.r.append(resi)') #итерируем по всем аминокислотам и добавляем их в только
#что созданный пустой список

length = len(stored.r) #определяем длину белка
colors = np.linspace(1,0.5, length) # массив значений от 1 до 0.5 длины stored.r

for k,i in enumerate(stored.r): #итерируем по элементам и по индексам элементов
    cmd.set_color('col%d' %k, [colors[k],0.5,0.75]) #определяем новый цвет и даем ему название col%k
    print (1,1,colors[k])
    cmd.set('cartoon_color','col%d' %k ,'resi %d' %i) #выбираем остаток i и красим его
cmd.show_as('cartoon','all')

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

In [5]:
#С каждым десятым кадром приближаемся на i - i+7 
for i in range(length):
    cmd.frame((10*i)+1) 
    cmd.zoom( 'n. CA and i. %d+%d' % (i,i+7))
    cmd.mview('store')
In [6]:
from IPython.display import Image
display(Image(filename='pr1.gif'))
<IPython.core.display.Image object>

Sculpting

In [3]:
#Загружаем структуру 1lmp
cmd.delete("all")
cmd.bg_color('white')
cmd.fetch("1lmp")
cmd.remove("solvent")
cmd.color("blue")
cmd.do('''
util.cnc hetatm
set ray_shadows, off
set cartoon_highlight_color, grey50
set field_of_view, 70''')
cmd.cartoon("dumbbell", "ss h")
cmd.zoom()
In [4]:
#Изображение структуры до применения Sculpting
import time
from IPython.display import Image
cmd.png('l.png')
time.sleep(2)
Image(filename='l.png')
Out[4]:
In [5]:
#При помощи sculpting структура была изменена. Зеленое - менялось (просто все поломал), голубое для контекста, серое - на него влияние незначительно.
cmd.png('s.png')
time.sleep(2)
Image(filename='s.png')
Out[5]:
In [3]:
#Далее выбирался остаток, мутация в котором привела бы к потере связывания с лигандом. Для этого был изучен участок связывания с лигандом.
cmd.delete("all")
cmd.do('''fetch 1lmp
as cartoon, all
color green
show sticks, not polymer.protein
select ligand, all and organic and not polymer.protein
show sticks, byres (all and polymer.protein) within 7 of ligand
hide sticks, (backbone and not name CA)
select cent, ligand or (byres (all and polymer.protein) within 7 of ligand)
set transparency, 0.5
color hydrogen,  ligand and element C
hide everything, not cent
show surface, cent and not ligand
orient ligand''')
In [7]:
cmd.draw(1200,800)
cmd.ray(1000)
cmd.png('/home/emkeller/Desktop/g.png')
time.sleep(2)
Image(filename='/home/emkeller/Desktop/g.png')
Out[7]:
In [8]:
#Для внесения мутации был выбран остаток TYR-62, который образует гидрофобный карман для связи с лигандом.
#Как обычно в молбиоле - засуним на место любой важной ак триптофан и он все порушит и никто никуда не свяжется.
cmd.do('''
show sticks, (sidechain or name CA) and  byres all within 7 of resi 62
show surface, resi 62
''')
In [9]:
cmd.ray(1200,800)
cmd.ray(1000)
cmd.png('./task1_4.png')
time.sleep(2)
Image(filename='./task1_4.png')
Out[9]:
In [4]:
cmd.do('''save mutant.pdb, 1lmp''')
In [3]:
#загружаем белок заново, а старый - мутант сдвигаем и называем его mutant
cmd.do('''
bg color white
delete all
load mutant.pdb
translate [25,25,25], mutant
load 1lmp.cif
hide everything, all
show cartoon, all
set cartoon_transparency, 0
set stick_transparency, 0.5
select n_ligand,1lmp and organic and not polymer.protein
select ligand, mutant and organic and not polymer.protein
color green
color hydrogen,  (n_ligand or ligand) and element C
show sticks, (ligand or n_ligand)
color salmon, mutant and not( ligand)
''')
In [4]:
cmd.mset("1 x1")
cmd.mdelete("1")
In [5]:
#Далее был сделан фильм, совмещающий две структуры: без мутации и с ней.
cmd.mset("1 x1")
cmd.mdelete("1")
cmd.mset("1 x1500")
cmd.do('''orient mutant or 1lmp
set matrix_mode, 1
set movie_loop, on
set movie_auto_interpolate, on

frame 1
mview store, object=mutant
mview store, object=1lmp
mview store

frame 100
orient mutant
mview store
mview store, object=mutant
mview store, object=1lmp

frame 200
show sticks, resi 62 and mutant
orient resi 62 and mutant
mview store
mview store, object=mutant
mview store, object=1lmp


frame 300
mview store
mview store, object=mutant
mview store, object=1lmp

frame 400
orient mutant or 1lmp
mview store
mview store, object=mutant
mview store, object=1lmp

frame 500
orient 1lmp
mview store
mview store, object=mutant
mview store, object=1lmp

frame 600
show sticks, resi 62 and 1lmp
orient resi 62 and 1lmp
mview store
mview store, object=mutant
mview store, object=1lmp

frame 700
mview store
mview store, object=mutant
mview store, object=1lmp

frame 800
orient mutant or 1lmp
mview store
mview store, object=mutant
mview store, object=1lmp

frame 1000
super 1lmp, mutant
mview store, object=mutant
mview store, object=1lmp
mview store

frame 1100
orient 1lmp
mview store
mview store, object=mutant
mview store, object=1lmp

frame 1200
orient resi 62 and mutant
mview store
mview store, object=mutant
mview store, object=1lmp


frame 1500
mview store
mview store, object=mutant
mview store, object=1lmp

''')
In [8]:
cmd.do('''movie.produce movie.gif, quality=90''')
In [10]:
display(Image('movie.gif', format='gif'))
<IPython.core.display.Image object>
In [23]:
#Затем к OH- группе белка была присоединена флуоресцентная метка TAMRA.
cmd.reinitialize()
cmd.do('''fetch 2762604, type=cid, name=tamra''')
cmd.remove('tamra and id 4')
cmd.select('at', 'id 32')
Out[23]:
1
In [24]:
cmd.do('''fetch 1lmp, async=0''')
cmd.remove('solvent')
cmd.select('ser', '/1lmp//A/SER`15')
cmd.hide('sticks', '1lmp')
cmd.show('cartoon', '1lmp')
cmd.show('sticks', 'ser')
cmd.color('tv_red', 'ser')
cmd.select('og','/1lmp//A/SER`15/OG')
cmd.color('blue', 'og')
cmd.set('cartoon_transparency','0.3')
In [25]:
cmd.fuse('at', 'og', 1)
cmd.torsion(-40.0)
In [26]:
cmd.zoom('1lmp')
cmd.turn("y", "80.0")
cmd.unpick()
In [27]:
cmd.bg_color("white")
In [29]:
cmd.png('Tamra.png')
Image(filename='Tamra.png')
Out[29]:
In [4]:
#Далее была построена поли-аланиновую альфа спираль длинной 100 аминокислот.
cmd.reinitialize()
phi = -60
psi = -45
cmd.fragment('ala')
acid = 'ala'
for i in range (2,101):
    cmd.edit("i. %i & n. C" % i)
    cmd.do('editor.attach_amino_acid("pk1", "%s")' % acid)
    cmd.set_dihedral("i. %i & n. N" % i, "i. %i & n. CA" % i,
                    "i. %i & n. C" % i, "i. %i & n.  N" % (i+1),
                     phi)
    cmd.set_dihedral("i. %i & n.  C" % i, "i. %i & n. N" % (i+1),
                     "i. %i & n. CA" % (i+1), "i. %i & n. C" % (i+1),
                     psi)
In [7]:
cmd.do('''
orient all
png 11.png
''')
Image(filename='11.png')
Out[7]: