In [1]:
from IPython.display import Image

Структурная биоинформатика

Домашнее задание №2

Задание №1. Возможности Sculpting оценил.

Задание №2.
В белке и в лиганде были отобраны все электроотрицательные атомы (N, O и S), а также все водороды, связанные с какими-либо электроотрицательными атомами. Далее были найдены все пары атомов, такие что выполнялись следующие условия:
1) Один атом пары принадлежит белку, а второй - лиганду.
2) Один атом является электроотрицательным, а второй - водородом, связанным с электроотрицательным атомом.
3) Атомы пары удалены друг от друга не более, чем на 3.5 ангстрема.


Для этого использовался следующий набор команд:
ligand и protein - selection-ы, соответствующие лиганду и белку

h_add
select protein_electronegative, protein & (symbol N | symbol O | symbol S)
select ligand_electronegative, ligand & (symbol N | symbol O | symbol S)
select ligand_electronegative_neighbours, nbr. ligand_electronegative
select ligand_hydrogens, symbol H & ligand_electronegative_neighbours
select protein_electronegative_neighbours, nbr. protein_electronegative
select protein_hydrogens, symbol H & protein_electronegative_neighbours
select protein_hydrogen_interactors, protein_hydrogens w. 3.5 of ligand_electronegative
select protein_electronegative_interactors, protein_electronegative w. 3.5 of ligand_hydrogens
select protein_potential_interactors, protein_electronegative_interactors | protein_hydrogen_interactors
show sticks, protein_potential_interactors
distance dist1, protein_hydrogen_interactors, ligand_electronegative
distance dist2, protein_electronegative_interactors, ligand_hydrogens

Результат приведен на рисунке:

In [2]:
Image("hydrogen_bonds.jpg")
Out[2]:

Задание №3.
При выборе аминокислоты для мутации и самой мутации будем руководствоваться двумя соображениями:
1) Внесенная мутация должна максимально "испортить" геометрию активного центра белка, в котором находится рассматирваемый лиганд.
2) Внесенная мутация должна нарушить достаточно большое количество водородных связей между белком и лигандом.

Заменим 46-ую аминокислоту на фенилаланин. Увидем, что появилось множество коллизий (см. рисунок). Лиганд на рисунке выделен красным.

In [3]:
Image(filename = "mutation.png")
Out[3]:

Задание №4.
Создаем анимационный ролик.

In [4]:
import time
import pymol
from pymol import cmd

pymol.finish_launching()
In [5]:
default_image = '/tmp/pymolimg.png'
def prepareImage(width=300, height=300, filename=default_image, sleep=2):
    cmd.ray(width, height)
    cmd.png(filename)
    time.sleep(sleep)

def focus(x):
    cmd.center(x)
    cmd.zoom(x)

Загружаем заранее подготовленные файлы с оригинальным и мутировавшим белками.

In [6]:
cmd.do('load mutated.pdb')
cmd.do('load original.pdb')
In [7]:
cmd.bg_colour('white')
mutant_resi = 'resi 46'
focus(mutant_resi)
cmd.select(mutant_resi)
cmd.show('sticks', mutant_resi)
cmd.colour('green', 'mutated')
prepareImage()
Image(default_image)
Out[7]:
In [8]:
cmd.bg_colour('white')

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

cmd.show('cartoon', 'original | mutated')
cmd.colour('red', 'original')

cmd.translate('[-40, 0, 0]', 'original')
focus('original + mutated')

cmd.zoom('original + mutated')

prepareImage(500, 500)
Image(default_image)
Out[8]:
In [9]:
near_mutant = 'byres( %s extend 3)' % mutant_resi
cmd.hide('everything', near_mutant)
cmd.show('lines', near_mutant)
cmd.show('sticks', '%s & !original' % mutant_resi)

cmd.mset('1 x300')
cmd.frame('1')
cmd.clip('near', '100'); cmd.clip('far', '-100')
cmd.mview('store')
cmd.do('mview store, object=original')

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

cmd.frame('300')
cmd.do('mview store, object=original')

cmd.frame('100')
focus('original')
cmd.mview('store')

cmd.frame('150')
cmd.do('mview store, object=original')
focus(mutant_resi)
cmd.do('util.mrock(150, 300, 300)')
cmd.mview('store')

cmd.frame('300')
focus(mutant_resi)
cmd.clip('near', '100'); cmd.clip('far', '-100')
cmd.mview('store')

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

cmd.set('ray_trace_frames', '1')
cmd.set('ray_trace_mode', '1')
cmd.set('antialias', '1')
cmd.mpng('pic')
In [10]:
from IPython.display import HTML
from base64 import b64encode
video = open('video/movie_1lmp.mp4', 'rb').read()
video_encoded = b64encode(video)
video_tag = '<video controls alt="PyMol Movie" src="data:video/mp4;base64,{0}" type="video/mp4">'.format(video_encoded)
HTML(data=video_tag)
Out[10]:

Задание №5.
Задание было выполнено в pymol вручную. Загружаем метку и белок. Нам нужна аминокислота, содержащая гидроксильную группу - серин. Находим в белке серин, находящийся на поверхности белка. Находим в этой аминокислоте гидроксильную группу и удаляем оттуда водород. Находим в метке COOH группу и удаляем оттуда гидроксильную группу. Соединяем то, что осталось связью согласно реакции этерификации.

In [11]:
Image("tamra.png")
Out[11]:

Задание №6.
Строим полиаланиновую спираль.

In [13]:
cmd.reinitialize()
cmd.bg_colour('white')

aa  = 'ALA'
ala_phi = '-50'
ala_psi = '-40'
kol = 100

def polyAA(n, aa, phi, psi):
    cmd.fragment(aa)

    for i in range(2, n+1):
        cmd.edit("i. %i & n. C" % i)
        cmd.do('editor.attach_amino_acid("pk1", "%s")' % aa)

    for i in range(2, n+1):
        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)

    cmd.edit()
    cmd.show('cartoon', aa)
    focus(aa)

polyAA(kol, aa, ala_phi, ala_psi)
    
prepareImage(width=1000, height=300,sleep = 0)
Image(default_image)
Out[13]:
In [ ]: