Запускаем команды, полученные в задании
import sys
import modeller
import _modeller
import modeller.automodel
env=modeller.environ()
env.io.hetatm=True
alignm=modeller.alignment(env)
alignm.append(file='LYS_BUFAN.fasta', align_codes='all',alignment_format='FASTA')
# создадим модель
mdl = modeller.model(env, file='1lmp.pdb', model_segment=('FIRST:'+'A', 'LAST:'+'A'))
# и добавим в выравнивание
alignm.append_model(mdl, atom_files='1lmp.pdb', align_codes='1lmp')
# а также присвоим им идентификаторы
alignm[0].code = 'seq'
alignm[1].code = 'mod'
alignm.salign()
alignm.write(file='alignment.ali', alignment_format='PIR')
0
Смотрим, на полученное выравнивание
! cat /home/masha/Документы/Головин/прак8/alignment.ali
>P1;seq sequence:: : : : :::-1.00:-1.00 SGKYISWEDSCSYLQLQKYERCELAKALKKGGLADFKGYSLENWICTAFHESGYNTASTNYNPPDKSTDYGIFQI NSRWWCNDYKTPRSKNTCNIDCKVLLGDDISPAIKCAKRVVSDPNGMGAWVAWKKYCKGKNLSQWTQGCKL---* >P1;mod structureX:1lmp.pdb: 1 :A:+132 :A:MOL_ID 1; MOLECULE LYSOZYME; CHAIN A; SYNONYM MUCOPEPTIDE N-ACETYLMURAMYLHYDROLASE; EC 3.2.1.17:MOL_ID 1; ORGANISM_SCIENTIFIC ONCORHYNCHUS MYKISS; ORGANISM_COMMON RAINBOW TROUT; ORGANISM_TAXID 8022; ORGAN KIDNEY: 2.00: 0.16 ----------------KVYDRCELARALKASGMDGYAGNSLPNWVCLSKWESSYNTQATNRNT-DGSTDYGIFQI NSRYWCDDGRTPGAKNVCGIRCSQLLTDDLTVAIRCAKRVVLDPNGIGAWVAWRLHCQNQDLRSYVAGCGV...*
# Выбираем объект для моделирования
s = alignm[0]
pdb = alignm[1]
print(s.code, pdb.code)
# Создаем объект automodel
a = modeller.automodel.automodel(env, alnfile='alignment.ali', knowns= pdb.code , sequence = s.code )
a.name='mod'+s.code
a.starting_model = 1
a.ending_model = 2
# Проводим моделирование
a.make()
import nglview
import ipywidgets
w1 = nglview.show_structure_file('seq.B99990001.pdb')
w1.clear_representations()
w1.add_cartoon('protein', color_scheme='residueindex')
w1.add_ball_and_stick('ligand', opacity=0.5)
0
# Выбираем объект для моделирования
s = alignm[0]
pdb = alignm[1]
print(s.code, pdb.code)
# Создаем объект automodel
a = modeller.automodel.automodel(env, alnfile='all_in_one.ali', knowns= pdb.code , sequence = s.code )
a.name='mod'+s.code
a.starting_model = 1
a.ending_model = 2
# Проводим моделирование
a.make()
import nglview
import ipywidgets
w1 = nglview.show_structure_file('seq.B99990001.pdb')
w1.clear_representations()
w1.add_cartoon('protein', color_scheme='residueindex')
w1.add_ball_and_stick('ligand', opacity=0.5)
посмотрим на полученные модели и их изображения
from IPython.display import Image
print('Структура рассматриваемого гомолога')
display(Image("/home/masha/Документы/Головин/прак8/im_1.png", format='png'))
print('Изначальная модель лизоцима')
display(Image("/home/masha/Документы/Головин/прак8/im_2.png", format='png'))
Структура рассматриваемого гомолога
Изначальная модель лизоцима
Видим, что структуры очень похожи, а основное отличие - протяженный N-конец гомолога (что видно и на выравнивании). Однако в полученной модели гомолога нет лиганда. Чтобы поместить лигнад в модель, добавим его в изначальную последовательность LYS_BUFAN (в выравнивании он обозначается точками, в этом случае мы просто берем последние три позиции из последовательности 1lmp, так как ими и закодирован наш лиганд).
new_seq = ''.join([i.code for i in alignm[0].residues])
new_seq += ''.join([i.code for i in [alignm[1].residues[-3],alignm[1].residues[-2],alignm[1].residues[-1]]])
alignm.append_sequence(new_seq)
del alignm[0]
alignm[1].code = 'newseq'
alignm.salign()
alignm.write(file='new_al.ali', alignment_format='PIR')
! cat /home/masha/Документы/Головин/прак8/new_al.ali
>P1;mod structureX:1lmp.pdb: 1 :A:+132 :A:MOL_ID 1; MOLECULE LYSOZYME; CHAIN A; SYNONYM MUCOPEPTIDE N-ACETYLMURAMYLHYDROLASE; EC 3.2.1.17:MOL_ID 1; ORGANISM_SCIENTIFIC ONCORHYNCHUS MYKISS; ORGANISM_COMMON RAINBOW TROUT; ORGANISM_TAXID 8022; ORGAN KIDNEY: 2.00: 0.16 ----------------KVYDRCELARALKASGMDGYAGNSLPNWVCLSKWESSYNTQATNRNT-DGSTDYGIFQI NSRYWCDDGRTPGAKNVCGIRCSQLLTDDLTVAIRCAKRVVLDPNGIGAWVAWRLHCQNQDLRSYVAGCGV...* >P1;newseq sequence::1 : :+149 : :undefined:undefined:-1.00:-1.00 SGKYISWEDSCSYLQLQKYERCELAKALKKGGLADFKGYSLENWICTAFHESGYNTASTNYNPPDKSTDYGIFQI NSRWWCNDYKTPRSKNTCNIDCKVLLGDDISPAIKCAKRVVSDPNGMGAWVAWKKYCKGKNLSQWTQGCKL...*
s = alignm[1]
pdb = alignm[0]
print(s.code, pdb.code)
a = modeller.automodel.automodel(env, alnfile='all_in_one_new.ali', knowns= pdb.code , sequence = s.code )
a.name='mod'+s.code
a.starting_model = 1
a.ending_model = 2
a.make()
w2 = nglview.show_structure_file('newseq.B99990001.pdb')
w2.clear_representations()
w2.add_cartoon('protein', color_scheme='residueindex')
w2.add_ball_and_stick('ligand', opacity=0.5)
0
Лиганд также теперь виден и в самих моделях.
from IPython.display import Image
print('Модель гомолога (с лигандом')
display(Image("/home/masha/Документы/Головин/прак8/im_3.png", format='png'))
print('Все та же модель 1lmp')
display(Image("/home/masha/Документы/Головин/прак8/im_4.png", format='png'))
Модель гомолога (с лигандом
Все та же модель 1lmp
Мы видим, что лиганд у наших похожих белков располагается в одном и том же месте, чего и следовало ожидать
Попробуем теперь создать последовательность той же длины, что и LYS_BUFAN, но состояющую целиком из аланинов.
Накладываем ограничения
env.libs.topology.clear()
class mymodel(modeller.automodel.automodel):
def special_restraints(self, aln):
rsr = self.restraints
at = self.atoms
for x,y in [('CG2:92','O6:147'),('N:78','O1L:149')]:
rsr.add(modeller.forms.gaussian(group=modeller.physical.xy_distance,
feature=modeller.features.distance(
at[x],at[y]),mean=1.0, stdev=0.1))
from modeller import *
from modeller.automodel import *
a = mymodel(env, alnfile='all_in_one_new.ali', knowns=pdb.code, sequence=s.code)
a.name = 'mod' + s.code
a.starting_model = 1
a.ending_model = 2
a.make()
Попробуем теперь создать последовательность той же длины, что и LYS_BUFAN, но состояющую целиком из аланинов.
alaseq = 'A'*146 + '...'
del alignm[1]
alignm.append_sequence(alaseq)
alignm[1].code = 'alaseq'
alignm.salign()
alignm.write(file='all_in_one_ala.ali', alignment_format='PIR')
0
! cat /home/masha/Документы/Головин/прак8/all_in_one_ala.ali
>P1;mod structureX:1lmp.pdb: 1 :A:+132 :A:MOL_ID 1; MOLECULE LYSOZYME; CHAIN A; SYNONYM MUCOPEPTIDE N-ACETYLMURAMYLHYDROLASE; EC 3.2.1.17:MOL_ID 1; ORGANISM_SCIENTIFIC ONCORHYNCHUS MYKISS; ORGANISM_COMMON RAINBOW TROUT; ORGANISM_TAXID 8022; ORGAN KIDNEY: 2.00: 0.16 KVYDRCELARALKASGMDGYAGNSLPNWVCLSKWESSYNTQATNRNTDGSTDYGIFQINSRY------------- ----WCDDGRTPGAKNVCGIRCSQLLTDDLTVAIRCAKRVVLDPNGIGAWVAWRLHCQNQDLRSYVAGCGV...* >P1;alaseq sequence::1 : :+149 : :undefined:undefined:-1.00:-1.00 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA...*
## Выбираем объект для моделирования
s = alignm[1]
pdb = alignm[0]
print(s.code, pdb.code)
## Создаем объект automodel
a = modeller.automodel.automodel(env, alnfile='all_in_one_ala.ali', knowns= pdb.code , sequence = s.code )
a.name='mod'+s.code
a.starting_model = 1
a.ending_model = 2
a.make()
w4 = nglview.show_structure_file('alaseq.B99990001.pdb')
w4.clear_representations()
w4.add_cartoon('protein', color_scheme='residueindex')
w4.add_ball_and_stick('ligand', opacity=0.5)
0
Посмотрим на результат моделирования
print('Модель, состояшая из аланинов')
display(Image("/home/masha/Документы/Головин/прак8/im_5.png", format='png'))
Модель, состояшая из аланинов
модель получается осмысленной, разве что петли теперь расположены по-другому. Это говорит нам о том, что сама последовательность белка при таком подходе играет минорную роль (тем более в случае "удобных" аланинов, которые невелики, не заряжены и не ароматичны). Поэтому при использовании гомологичного моделирования нужно заранее убедиться в гомологии изучаемых белков, иначе можно запросто столкнуться с ложноположительными результатами.
Сравним скор-функции всех полученных нами моделей:
import pandas as pd
data = [['Модель 1', 791.6553, 915.51223, 2637.95672, 718.34446],['Модель 2', 803.29344, 1040.6123, 2450.43533, 761.74544]]
pd.DataFrame(data, columns=["", "Без лиганда", "С лигандом", "Со смещенным лигандом", "Из аланинов"])
Без лиганда | С лигандом | Со смещенным лигандом | Из аланинов | ||
---|---|---|---|---|---|
0 | Модель 1 | 791.65530 | 915.51223 | 2637.95672 | 718.34446 |
1 | Модель 2 | 803.29344 | 1040.61230 | 2450.43533 | 761.74544 |
появление лиганда тоже немного увеличило скор. модель из одних аланинов оказывается лучше всех остальных.