Ссылка на практикум: практикум 2

Подключаемся к PyMol:

In [1]:
from xmlrpclib import ServerProxy
from IPython.display import Image
import os, sys

import __main__

__main__.pymol_argv = [ 'pymol', '-x' ]

import pymol
 
pymol.finish_launching()
 
from pymol import cmd
from pymol import util
from pymol import editor
  1. В PyMol есть раздел Sculpting (Wizard->Demo->Sculpting). Он позволяет редактировать молекулу (перемещать атомы и вращать связи), автоматически минимизируя энергию получаемой структуры.
  1. Попробуем мутировать структуру 1LMP так, чтобы белок (лизоцим) потерял связь с лигандом (хитоолигосахарид):
In [11]:
cmd.delete('all')
cmd.fetch('1lmp')
cmd.show_as('cartoon')
In [3]:
Image(filename='1lmp.png')
Out[3]:

Лиганд располагается в кармане белка, и координируется большим количеством водородных связей.

In [3]:
Image(filename='contact.png')
Out[3]:
In [4]:
Image(filename='contact2.png')
Out[4]:

Если мутировать аспартат Asp52 на аргинин (ротамер 10), то он займёт карман белка, что приведёт к невозможности связывания белком лиганда. К тому же изменится заряд в данном месте. Данный остаток находится в небольшом \(\beta\)-тяже, вовлечённом в небольшой лист, что будет удерживать аминокислотный остаток в данной позиции, а мутация не приведёт (как мне кажется) к изменению конформации белка

In [10]:
Image(filename='mut1.png')
Out[10]:
  1. Создадим видео совмещения структур:
In [67]:
cmd.delete('all')
cmd.load('1lmp.pdb')
cmd.load('1lmp_mut.pdb')
cmd.set( 'ray_trace_frames', 1)
cmd.show_as('cartoon')
cmd.show('sticks', 'resi 52')
cmd.super('1lmp', '1lmp_mut')
cmd.mset('1 x100')
cmd.frame('1')
cmd.translate([50, 0, 0], object='1lmp_mut')
cmd.zoom('visible')
cmd.mview('store')
#cmd.do('mview store for scene and objects')
cmd.frame(80)
cmd.translate([-50, 0, 0], object='1lmp_mut')
cmd.zoom('resi 52')
cmd.mview('store')
#cmd.do('mview store for scene and objects')
cmd.mview('reinterpolate')

#cmd.do('mview interpolate for scene and objects')
#cmd.frame(1)
In []:
cmd.mpng( 'mov')
In [72]:
%%bash
convert -delay 7 mov*.png movie.gif

Видео взять и получить не получилось, поэтому gif.

  1. Присоеденим флуоресцентную метку TAMRA (карбоксильной группой) к белку через сложноэфирную связь:
In [33]:
%%bash 
wget 'http://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/cid/2762604/record/SDF/?record_type=3d&response_type=save&response_basename=Structure3D_CID_2762604' -O tamra.sdf
#chmod 666 tamra.sdf
In [34]:
f = open('tamra.sdf', 'r')
content = f.read()
f.close()
g = open('tamra.sdf', 'w')
content = content.replace('-1.7321 O', '-1.7321 O1')
g.write(content)
g.close()
In []:
cmd.delete('all')
cmd.load('tamra.sdf')
cmd.load('1lmp.pdb')
cmd.show('cartoon')
cmd.fuse('/tamra///UNK`/O1', '/1lmp//A/THR`47/OG1')
#cmd.fuse('/tamra///UNK`/O1', '/1lmp//A/ASP`86/OD2')
cmd.torsion(-150)
cmd.set_view ([\
     0.624535561,    0.428852320,   -0.652710915,\
     0.188056588,    0.728575349,    0.658633649,\
     0.758012712,   -0.534092724,    0.374377429,\
    -0.000252835,   -0.000524290, -130.940368652,\
    17.116086960,   53.597152710,   20.999889374,\
   103.212585449,  158.612854004,  -20.000000000 ])
cmd.bg_color('white')
cmd.ray()
cmd.png('tamra.png')
In [4]:
Image(filename='tamra.png')
Out[4]:

PS: на самом деле, получаемая связь абсолютно не сложноэфирная, т.к. PyMol создаёт связь между двумя кислородами вместо того, чтобы заменить один на другой. Эту проблему можно было бы решить с помощью Sculpting, но навык уже отработан, а картинка и так красивая.

  1. Создадим полиаланиновую \(\alpha\)-спираль:

Согласно источниками, в \(\alpha\)-спирали значения торсионных углов составляет \(\phi=-57\) \(\psi=-47\)

In [12]:
cmd.reinitialize()
cmd.bg_colour('white')
cmd.mset(1)
cmd.do('frag ala')
for x in range(2, 25):
    cmd.edit('resi {} and name C'.format(x))
    editor.attach_amino_acid("pk1","ala")
    cmd.edit("resi {} and name N".format(x), "resi {} and name CA".format(x))
    cmd.torsion(-57)
    cmd.edit("resi {} and name C".format(x), "resi {} and name CA".format(x)) 
    cmd.torsion (-47)
cmd.orient('all')
---------------------------------------------------------------------------
CmdException                              Traceback (most recent call last)
<ipython-input-12-4ce166a4308a> in <module>()
      4 cmd.do('frag ala')
      5 for x in range(2, 25):
----> 6     cmd.edit('resi {} and name C'.format(x))
      7     editor.attach_amino_acid("pk1","ala")
      8     cmd.edit("resi {} and name N".format(x), "resi {} and name CA".format(x))

/usr/lib/python2.7/dist-packages/pymol/editing.pyc in edit(selection1, selection2, selection3, selection4, pkresi, pkbond, quiet, _self)
    952         finally:
    953             _self.unlock(r,_self)
--> 954         if _self._raising(r,_self): raise pymol.CmdException
    955         return r
    956 

CmdException:  Error: None

Вылазят ошибки типа:
Unable to open file './data/shaders/anaglyph_header.fs' loading from memory

  1. Используя babel создадим третичную структуру кубана на основе SMILE нотации:
In [74]:
%%bash
echo 'C12C3C4C1C5C4C3C25   cubane' > my.smi
obgen my.smi > my.mol
In [79]:
cmd.delete('all')
cmd.load('my.mol')
cmd.ray()
cmd.png('cubane.png')
Out[79]:
1
In [80]:
Image(filename='cubane.png')
Out[80]: