In [20]:
from xmlrpc.client import ServerProxy
from IPython.display import Image
import os, sys, time
In [21]:
#from pymol import cmd,stored
In [22]:
cmd = ServerProxy(uri="http://localhost:9123/RPC2")
In [23]:
cmd.fetch('1lmp')
Out[23]:
'1lmp'
In [32]:
cmd.do('''
fetch 1lmp, async=0
as lines, n. C+O+N+CA
zoom i. 4+5
mset 1 x1000
mview store''')
In [25]:
cmd.png('1lmp.png')
time.sleep(2)
Image(filename='1lmp.png')
Out[25]:

Далее Wizard -> Sculpting. И немного изменила структуру молекулы.

In [26]:
cmd.png('1lmp_Sculpting.png')
time.sleep(2)
Image(filename='1lmp_Sculpting.png')
Out[26]:
In [27]:
cmd.hide('all')
cmd.select('nomutant','resi 100 + resn nag + resn ndg')
cmd.show('sticks', 'nomutant')
cmd.zoom('nomutant')
cmd.png('nomutant.png')
cmd.deselect()
cmd.png('nomutant.png')
time.sleep(2)
Image(filename='nomutant.png')
Out[27]:
In [28]:
#производим мутацию 
cmd.wizard("mutagenesis")
cmd.do("refresh_wizard")
cmd.do("cmd.get_wizard().do_select('resi 52')")
In [29]:
cmd.do("cmd.get_wizard().set_mode('PHE')") 
cmd.do("cmd.get_wizard().apply()")
cmd.do("cmd.set_wizard()")
In [31]:
cmd.do("cmd.hide('all')")
cmd.do("cmd.select('mutant','resi 52 + resn nag + resn ndg')")
cmd.do("cmd.show('sticks', 'mutant')")
cmd.do("cmd.zoom('mutant')")
cmd.do("cmd.deselect()")
cmd.do("cmd.png('mutant.png')")
time.sleep(2)
Image(filename='mutant.png')
Out[31]:

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

In [36]:
cmd.fetch('1lmp', 'nomutlmp')
cmd.hide('all')
cmd.select('ligandmut', '1lmp & resn nag+ndg')
cmd.select('ligandmomut', 'nomutlmp & resn nag+ndg')
cmd.disable('ligand*')

cmd.set('cartoon_side_chain_helper', 'on')

cmd.show('cartoon', '(1lmp | nomutlmp) & !ligand*')
cmd.colour('deepblue', '1lmp')
cmd.colour('deepblue', 'nomutlmp')

cmd.show('sticks', 'ligand*')
cmd.colour('green', 'ligand*')

cmd.show('sticks', 'resi 52')
cmd.colour('yellow', '1lmp & resi 52')
cmd.colour('red', 'nomutlmp & resi 52')

cmd.translate('[-50, 0, 0]', 'nomutlmp')
cmd.center('nomutlmp + 1lmp')
cmd.zoom('center', '40')
cmd.png('compare.png')
time.sleep(2)
Image(filename='compare.png')
Out[36]:
In [38]:
cmd.mset('1 x360')
cmd.frame('1')
cmd.mview('store')
cmd.do('mview store, object=nomutlmp')

cmd.frame('60')
cmd.do('translate [50, 0, 0], object=nomutlmp')
cmd.do('mview store, object=original')

cmd.frame('360')
cmd.zoom('resi 52','5')
cmd.do('mview store, object=nomutlmp')

cmd.frame('120')
cmd.zoom('resi 52','5')
cmd.mview('store')

cmd.frame('180')
cmd.do('mview store, object=nomutlmp')
cmd.zoom('resi 52','5')
cmd.do('util.mrock(180, 360, 360)')
cmd.mview('store')

cmd.frame('360')
cmd.zoom('resi 52','5')
cmd.clip('near', '100'); cmd.clip('far', '-100')
cmd.mview('store')

cmd.do('mview interpolate, object=nomutlmp')
cmd.mview('reinterpolate')
cmd.mpng('mut_nomut_combination')
cmd.mplay()
In [40]:
#немного не то что я ожидала получилось)) но тем не менее видео и они даже сближались
import io
import base64
from IPython.display import HTML

video = io.open('test.mpg', 'r+b').read()
encoded = base64.b64encode(video)
HTML(data='''<video alt="test" controls>
                <source src="data:video/mpg;base64,{0}" type="video/mpg" />
             </video>'''.format(encoded.decode('ascii')))
Out[40]:

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

In [45]:
#Мы выбираем атомы метки и белка между
#которыми хотим создать связь и с помощью команды fuse сливаем две молекулы с образованием сложноэфирной связи.
cmd.do("cmd.reinitialize()")
cmd.do("cmd.bg_color('white')")
cmd.do("cmd.load('tamra.sdf')")
cmd.do("cmd.remove('tamra and id 4')")
cmd.do("cmd.select('tamra_O', 'id 32')")

cmd.do("cmd.fetch('1lmp')")
cmd.do("cmd.remove('solvent')")
cmd.do("cmd.zoom()")
cmd.do('''
select THR_O, resn thr and resi 89 and name OG1
show sticks, resn thr and resi 89
''')

cmd.do("cmd.fuse('tamra_O', 'THR_O', 1)")

cmd.do(''' 
zoom center, 20
rotate z,300, all
rotate x, -50, all
rotate y, 20, all
''')
In [46]:
cmd.png('tamra.png')
time.sleep(3)
Image(filename='tamra.png')
Out[46]:

Построение B-формы ДНК

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

In [57]:
cmd.reinitialize()
cmd.fetch('1BNA')
cmd.bg_color('white')
cmd.remove("solvent")


cmd.do('''create pair, c. A & i. 4 + c. B & i. 21
create nextpair, c. A & i. 5 + c. B & i. 20
create 1, pair
pair_fit nextpair, pair
''')

trans = cmd.get_object_matrix("nextpair")
for x in range(2, 100):
    cmd.create(str(x), str(x-1))
    cmd.do("cmd.transform_selection(x, trans, homogenous=0)")
    time.sleep(1)
    
cmd.delete('1BNA')
cmd.show('sticks')

cmd.zoom('all')
In [58]:
cmd.zoom('center', '50')
cmd.do(''' 
rotate x, -100, all
rotate z, -100, all
''')
cmd.png('dnaprof.png')
time.sleep(3)
Image(filename='dnaprof.png')
Out[58]:

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

In [66]:
cmd.reinitialize()
cmd.bg_color('white')
cmd.fragment('ALA')
for x in range(2,100):
    cmd.edit("/ALA///"+str(x)+"/c")
    cmd.do("cmd.editor.attach_amino_acid('pk1','ALA')")
for x in range(3,100):
    cmd.edit("/ALA///"+str(x)+"/N","/ALA///"+str(x)+"/CA")
    cmd.torsion (90)
    cmd.edit("/ALA///"+str(x-1)+"/CA","/ALA///"+str(x-1)+"/C")
    cmd.torsion (180)
In [67]:
cmd.png('ALA.png')
time.sleep(3)
Image(filename='ALA.png')
Out[67]:
In [ ]: