from xmlrpc.client import ServerProxy
from IPython.display import Image
import os, sys, time
#from pymol import cmd,stored
cmd = ServerProxy(uri="http://localhost:9123/RPC2")
cmd.fetch('1lmp')
cmd.do('''
fetch 1lmp, async=0
as lines, n. C+O+N+CA
zoom i. 4+5
mset 1 x1000
mview store''')
cmd.png('1lmp.png')
time.sleep(2)
Image(filename='1lmp.png')
Далее Wizard -> Sculpting. И немного изменила структуру молекулы.
cmd.png('1lmp_Sculpting.png')
time.sleep(2)
Image(filename='1lmp_Sculpting.png')
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')
#производим мутацию
cmd.wizard("mutagenesis")
cmd.do("refresh_wizard")
cmd.do("cmd.get_wizard().do_select('resi 52')")
cmd.do("cmd.get_wizard().set_mode('PHE')")
cmd.do("cmd.get_wizard().apply()")
cmd.do("cmd.set_wizard()")
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')
Создание анимации
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')
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()
#немного не то что я ожидала получилось)) но тем не менее видео и они даже сближались
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')))
Присоединение флуоресцентной метки TAMRA
#Мы выбираем атомы метки и белка между
#которыми хотим создать связь и с помощью команды 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
''')
cmd.png('tamra.png')
time.sleep(3)
Image(filename='tamra.png')
Построение B-формы ДНК
Нам необходимо найти структуру B-формы ДНК, получить из нее пары нуклеотидов и их матрицу превращения при совмещении одной пары нуклеотидов с последующей. После чего мы размножаем эту пару и применять к ней матрицу превращения.
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')
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')
Построение полиаланиновой альфа-спирали
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)
cmd.png('ALA.png')
time.sleep(3)
Image(filename='ALA.png')