Гомологичное моделирование комплекса белка с лигандом

Возьмем лизоцим LYS_HYACE (P05105) из Hyalophora cecropia (Cecropia moth) - моли (молец на македонском). Смоделируем структуру этого лизоцима про образу и подобию лизоцима форели (1lmp).

1. Выравнивание последовательностей

>sp|P05105|LYS_HYACE Lysozyme OS=Hyalophora cecropia PE=2 SV=2 MTKYVILLAVLAFALHCDAKRFTRCGLVQELRRLGFDETLMSNWVCLVENESGRFTDKIG KVNKNGSRDYGLFQINDKYWCSKGTTPGKDCNVTCNQLLTDDISVAATCAKKIYKRHKFD AWYGWKNHCQHGLPDISDC >1LMP:A|PDBID|CHAIN|SEQUENCE KVYDRCELARALKASGMDGYAGNSLPNWVCLSKWESSYNTQATNRNTDGSTDYGIFQINSRYWCDDGRTPGAKNVCGIRC SQLLTDDLTVAIRCAKRVVLDPNGIGAWVAWRLHCQNQDLRSYVAGCGV С помощью Clustal получено выравнивание в формате PIR.

2. Модификация файла выравнивания

In [68]:
%load 1.pir
In []:
>P1;seq
sequence:РҐРҐРҐРҐРҐ::::::: 0.00: 0.00
MTKYVILLAVLAFALHCDAKRFTRCGLVQELRRLGFD---ETLMSNWVCLVENESGRFTDKIGKVNKNGSRD
YGLFQINDKYWCSKGTTPGKD--CNVTCNQLLTDDISVAATCAKKIYKR-HKFDAWYGWKNHCQHG--LPDI
SDC--/.*
>P1;1lmp
structureX:1lmp_now.ent:1 :A: 132 :A:undefined:undefined:-1.00:-1.00
-------------------KVYDRCELARALKASGMDGYAGNSLPNWVCLSKWESS-YNTQATNRNTDGSTD
YGIFQINSRYWCDDGRTPGAKNVCGIRCSQLLTDDLTVAIRCAKRVVLDPNGIGAWVAWRLHCQNQDLRSYV
AGCGV/.*

4 строчка: эта строчка описывает входные параметры последовательности для modeller. последняя строчка: эта строчка описывает, какой файл содержит структуру белка с этой последовательностью, номера первой и последней аминокислот в структуре, идентификатор цепи и т.д. Символ "/" означает конец цепи белка. Точка указывает на то, что имеется один лиганд (если бы было два лиганда стояли бы две точки).

3. Модификация файла со структурой

Задание: удалите всю воду из структуры (в текстовом редакторе) всем атомам лиганда присвойте один и тот же номер "остатка" (MODELLER считает, что один лиганд = один остаток) и модифицируйте имена атомов каждого остатка, добавив в конец буквы A, B, C. Смысл операции в том, что атомы остатка 130 имели индекс А, атомы остатка 131 имели индекс В и т.д. . После модификации имен атомов измените номера остатков на 130. Сохраните в файле 1lmp_now.ent.

4. Создание управляющего скрипта lys_hyace.py

In [22]:
import sys
sys.path.append('/usr/lib/modeller9v7/modlib/')
sys.path.append('/usr/lib/modeller9.12/lib/x86_64-intel8/python2.5/')
In []:
# Управляющий скрипт
from modeller.automodel import *
class mymodel(automodel):
    def special_restraints(self, aln):
        rsr = self.restraints
        for ids in (('OD1:98:A', 'O6A:131:A'),
                    ('N:65:A', 'O7B:132:A'),
                    ('OD2:73:A', 'O1C:133:A')):
                    atoms = [self.atoms[i] for i in ids]
                    rsr.add(forms.upper_bound(group=physical.upper_distance,
                      feature=features.distance(*atoms), mean=3.5, stdev=0.1)) 
env = environ()
env.io.hetatm = True
a = mymodel(env, alnfile='test1.ali', knowns=('1lmp'), sequence='seq')
a.starting_model = 1
a.ending_model = 5
a.make()

В скрипте указано: - что нужно использовать стандартные валентные углы в полипептидной цепи (строчка 4) - что дополнительно нужно сохранять взаимное расположение определенных пар атомов (3.5 ангстрема); - В данном случае трех атомов белка, образующих водородные связи с тремя атомами лиганда - строчки 5-7 с ID пар атомов; параметры взаимного расположения атомов пары описаны в строчке 9-10. 3 точки могут однозначно расположить сложную структуру в пространстве, поэтому мы выбираем водородные связи как источник данных точек. - что ковалентные связи в гетероатомах нужно вычислять по расстояниям между атомами (так же, как это делает Rasmol), строчка 12 - что имя файла с выравниванием и имена последовательностей образца и моделируемого белка, строчка 13 (а имя файла со структурой содержится в выравнивании) - что число и номера моделей, которые нужно построить (в данном примере 5 моделей), строки 14-15 - что пора строить модель, строчка 16 Надо понимать, что пример не будет работать, можно посмотреть: влияние ":A" при указании контакта, влияние "/" в выравнивании. За указание их свойств буду ставить бонусы.

Сначала посмотрим на контакты...

In [3]:
from IPython.display import Image
In [15]:
Image(filename='pic1.png')
Out[15]:

Примеры водородных связей между лигандом и белком:

/1lmp//A/GLU35/OE2 - /1lmp_now//A/NAG130/O6C, или OE2:35:A - N2B:130:A

/1lmp_now//A/ALA107/O - /1lmp_now//A/NAG130/N2B, или O:107:A - N2B:130:A

/1lmp_now//A/TRP63/NE1 - /1lmp_now//A/NAG130/O3B, или NE1:63:A - O3B:130:A

/1lmp_now//A/ASN103/ND2 - /1lmp_now//A/NAG130/O7A, или ND2:103:A - O7A:130:A

и т.д...

Число остатков в моделируемом по гомологии белке больше, чем в образце: 139 против 129. Поэтому у лиганда номер остатка изменится - 140. Вспомним и выравнивание...

O:107:A O:121:A (тоже аланин)

OE2:35:A OE2:51:A (тоже глутамат)

NE1:63:A NE1:80:A (тоже триптофан)

In [64]:
%%bash
echo "from modeller.automodel import *
class mymodel(automodel):
    def special_restraints(self, aln):
        rsr = self.restraints
        for ids in (('O:121:A', 'N2B:140:B'),
                    ('OE2:51:A', 'N2B:140:B'),
                    ('NE1:80:A', 'O3B:140:B')):
                    atoms = [self.atoms[i] for i in ids]
                    rsr.add(forms.upper_bound(group=physical.upper_distance,
                      feature=features.distance(*atoms), mean=3.5, stdev=0.1)) 
env = environ()
env.io.hetatm = True
a = mymodel(env, alnfile='1.pir', knowns=('1lmp'), sequence='seq')
a.starting_model = 1
a.ending_model = 5
a.make()
">lysc_hyace.py

5. Торжественный запуск

In [69]:
%%bash
mod9v7 lysc_hyace.py
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
'import site' failed; use -v for traceback

6. Сравнение моделей

In [4]:
from xmlrpclib import ServerProxy
from IPython.display import Image
import os, sys
In []:
import __main__
__main__.pymol_argv = [ 'pymol', '-x' ]
import pymol
pymol.finish_launching()
In [6]:
from pymol import cmd
In []:
cmd.do('''
cd cd /home/students/y12/iltarn/Term6/Practice10
set ray_trace_mode, 0; red
set ray_opaque_background, off
set antialias, .5
set light_count, 8
set ambient, 0.5
set ray_trace_color, red
set cartoon_side_chain_helper, on
''')
In []:
cmd.do('''
load seq.B99990001.pdb
load seq.B99990002.pdb
load seq.B99990003.pdb
load seq.B99990004.pdb
load seq.B99990005.pdb
load 1lmp_now.ent
select rsa, /1lmp_now//A/THR`89/CA or /1lmp_now//A/ALA`107/O or /1lmp_now//A/TRP`34/CA
select 1, /seq.B99990001//A/SER`104/CA or /seq.B99990001//A/ALA`121/O or /seq.B99990001//A/ASN`50/CA
pair_fit rsa, 1
ray 100,600
png pic2.png
''')
In [6]:
Image(filename='pic2.png')
# 1lmp показана голубым
Out[6]:

Видно, что моделирование для выравненных участков в целом прошло успешно. Отличаются немного только положение выделенных петель и разметка элементов вторичной структуры (показана 1 альфа-спираль; есть еще одна такая же + бета-тяжи разной длины).

7. Выбор лучшей модели по критериям WHATIF

а) Аномальные длины связей: у модели 5 их меньше на 1, чем у остальных 4-х. б) По Fine Packing Quality Control: все модели хороши, однако 2 чуть лучше других. в) Аномальные углы: во 2 и 3 моделях меньше всего отклонений (2 содержит на 1 отклонение меньше). Итого, можно считать, что лучшей является модель номер 2 (load seq.B99990002.pdb)