In [1]:
from xmlrpc.client import ServerProxy
import time
import pymol

from IPython.display import Image
import time
import sys
import numpy as np
from pymol import stored, cmd
In [2]:
cmd = ServerProxy(uri="http://localhost:9123/RPC2")
In [4]:
cmd.do(f'''
reini
fetch 1lmp
hide nonbonded

select ligand, resn nag+ndg
show sticks, ligand
zoom 1lmp
deselect
png 1lmp.png

''')
In [5]:
Image(filename='1lmp.png', width=450, height=550)
Out[5]:

Изменение с помощью Sculpting

In [6]:
Image(filename='scu.png', width=450, height=550)
Out[6]:

Произвели замену TYR62 на TRP

In [34]:
cmd.do('''

cmd.wizard("mutagenesis")
cmd.refresh_wizard()
cmd.get_wizard().do_select("resi 62")
cmd.get_wizard().set_mode("TRP")
cmd.refresh_wizard()
cmd.get_wizard().apply()
cmd.set_wizard()

''')
In [12]:
cmd.do('''
hide all
bg_color white
select original, resi 63 + resn nag + resn ndg
show sticks, original
zoom original
deselect

''')
time.sleep(2)
In [13]:
Image(filename='lig.png', width=450, height=550)
Out[13]:
In [21]:
cmd.do('''

fetch 1lmp, 1lmp2
hide all
select ligand1, 1lmp & resn nag+ndg
select ligand2, 1lmp2 & resn nag+ndg
disable ligand*
''')

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

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

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

cmd.show('sticks', 'resi 63')
cmd.colour('blue', '1lmp & resi 63')
cmd.colour('green', '1lmp2 & resi 63')

cmd.translate('[-50, 0, 0]', '1lmp2')
cmd.center('1lmp2 + 1lmp')
cmd.zoom('center', '40')
time.sleep(3)
In [17]:
Image(filename='two.png', width=450, height=550)
Out[17]:
In [29]:
cmd.mset('1 x360')
cmd.frame('1')
cmd.mview('store')
cmd.do('mview store, object=1lmp2')

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

cmd.frame('360')
cmd.zoom('resi 63','5')
cmd.do('mview store, object=1lmp2')

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

cmd.frame('180')
cmd.do('mview store, object=1lmp2')
cmd.zoom('resi 63','5')
cmd.do('util.mrock(180, 360, 360)')
cmd.mview('store')

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

cmd.do('mview interpolate, object=1lmp2')
cmd.mview('reinterpolate')

Как-то они совместились..

In [32]:
import io
import base64
from IPython.display import HTML

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

TAMRA. Прицепляем туда, где можно образовать сложноэфирную связь.

In [38]:
cmd.do('''

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
torsion -100

remove tamra
orient resi 47
turn y, -150
deselect

''')
In [40]:
Image(filename='tamta.png', width=450, height=550)
Out[40]:

Напишите скрипт для построения поли-аланиновой ( Вы вольны использовать любую аминоксилоту) альфа спирали длинной 100 аминкислот. Нужные команды edit, editor.attach, bond,torsion.

In [41]:
cmd.reinitialize()
cmd.bg_color('white')
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 [42]:
Image(filename='ala.png', width=450, height=550)
Out[42]:

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

In [44]:
cmd.do('''

reini
fetch 1BNA
bg_color white
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.transform_selection(x, trans)
    time.sleep(1)
    
cmd.delete('1BNA')
cmd.show('sticks')

cmd.zoom('all')
In [45]:
Image(filename='bdna.png', width=450, height=550)
Out[45]:
In [ ]: