Task6
Version 3 (Student HSE, 16.11.2017 15:59) → Version 4/5 (Andrey Golovin, 21.11.2024 17:45)
h1. Гомологичное моделирование комплекса белка с лигандом
h3. Традиционные ссылки на полезные ресурсы:
* Уроки по работе с Modeller находятся "здесь":http://salilab.org/modeller/tutorial/.
Цель данного занятия ознакомится с возможностями гомологичного моделирования комплекса белка с лигандом. В этом занятии мы будем пользоваться пакетом Modeller. Это программное обеспечение распространяется бесплатно для академических пользователей.
Вы будете работать с любым белком лизоцимом из Uniprot. Используя известную структуру лизоцима форели как образец, Вам необходимо построить модель комплекса Вашего белка с лигандом.
# Загрузим модуль
<pre><code class="python">
import sys
import modeller
import _modeller
import modeller.automodel
</code></pre>
# Зададим некторые параметры
<pre><code class="python">
env=modeller.environ()
env.io.hetatm=True
</code></pre>
# Скачаем белок заготовку
<pre><code class="python">
! wget http://www.pdb.org/pdb/files/1lmp.pdb
</code></pre>
и последовательность
<pre><code class="python">
! wget http://www.uniprot.org/uniprot/PXXXX.fasta
</code></pre>
# Создадим объект выравнивание:
<pre><code class="python">
alignm=modeller.alignment(env)
</code></pre>
и добавим последовательность и структуру
<pre><code class="python">
alignm.append(file='PXXX.fasta', align_codes='all',alignment_format='FASTA')
## создадим модель
mdl = modeller.model(env, file='ХХХХ.pdb', model_segment=('FIRST:'+'A', 'LAST:'+'A'))
## и добавим в выравнивание
alignm.append_model(mdl, atom_files='ХХХ.pdb', align_codes='1lmp')
## есть смысл поправить идентификаторы
alignm[0].code = '.....'
</code></pre>
# Делаем выравнивание и сохраняем:
<pre><code class="python">
alignm.salign()
alignm.write(file='all_in_one.ali', alignment_format='PIR')
</code></pre>
# Посмотрите содержимое all_in_one.ali, там всё хорошо?
# Построим модель:
<pre><code class="python">
## Выбираем объект для моделирования
s = alignm[0]
pdb = alignm[1]
print s.code, pdb.code
## Создаем объект automodel
a = modeller.automodel.automodel(env, alnfile='all_in_one.ali', knowns= pdb.co...... , sequence = s.code )
a.name='mod'+s.code
a.starting_model = 1
a.ending_model = 2
a.make()
</code></pre>
# Надо посмотреть результат:
<pre><code class="python">
import nglview
import ipywidgets
w1 = nglview.show_structure_file('.....B99990001.pdb')
w1
</code></pre>
-----
А ГДЕ ЛИГАНД??
-----
# Оказывается надо добавить три остатка лиганда к последовательности
Подсказки как сделать:
<pre><code class="python">
## Получить список остаков
alignm[n].residues
## Добавить в объект выравнивание последовательность из строки
alignm.append_sequence(....
</code></pre>
# (Дополнительно) Поместите лиганд в другое место, переназначив объект automodel, это очень примерный код:
<pre><code class="python">
class mymodel(modeller.automodel.automodel):
def special_restraints(self, aln):
rsr = self.restraints
at = self.atoms
for x,y in [('CG:83','O6:228')]:
rsr.add(modeller.forms.gaussian(group=modeller.physical.xy_distance,
feature=modeller.features.distance(
at[x],at[y]),mean=3.0, stdev=0.1))
from modeller import *
from modeller.automodel import *
a = mymodel(env, ...
</code></pre>
и да подсказка: надо удалить рестрейны которые генерируются автоматически: ( можно через файл рестрейнов)
<pre>
43 atoms in HETATM/BLK residues constrained
to protein atoms within 2.30 angstroms
and protein CA atoms within 10.00 angstroms
</pre>
# Доп. Найдите способ искать мутации для улучшения связывания по мотивам этого скрипта https://salilab.org/modeller/wiki/Mutate%20model
# Гомологичное моделирование комплекса белка с лигандом #
- Необходимо представить в отчёте результаты моделирования и результаты проверки качества структур.
- Необходимо представить обсуждение результата.
## Традиционные ссылки на полезные ресурсы: ##
- Уроки по работе с Modeller [находятся здесь](http://salilab.org/modeller/tutorial/) VPN? или https://vsb.fbb.msu.ru/share/modeller/
- [Colab](https://colab.research.google.com/drive/1Mld2l0DVzowppOm0947uE8sWWLj1HoMe)
>Цель данного занятия ознакомится с возможностями гомологичного моделирования комплекса белка с лигандом. В этом занятии мы будем пользоваться пакетом Modeller. Это программное обеспечение распространяется бесплатно для академических пользователей.
h2. Alphafold Design
> Работу выполняем в среде Alphadesign
* Практикум по мотивам : https://github.com/sokrypton/ColabDesign
# Загрузим быстрые пакеты для градиентов и линейной алгебры и ColabDesign
<code><pre>
import jax
import jax.numpy as jnp
from colabdesign.af.alphafold.common import residue_constants
from colabdesign import clear_mem, mk_afdesign_model
</code></pre>
# Скачаем белок для модификации
<code><pre>
! wget http://www.pdb.org/pdb/files/1l2y.pdb
! mkdir -p /opt/alphadesign/
! curl -fsSL https://storage.googleapis.com/alphafold/alphafold_params_2022-12-06.tar | tar x -C /opt/alphadesign/
</code></pre>
# Зададим функцию потерь от радиуса инерции
<code><pre>
def rg_loss(inputs, outputs):
positions = outputs["structure_module"]["final_atom_positions"]
ca = positions[:,residue_constants.atom_order["CA"]]
center = ca.mean(0)
rg = jnp.sqrt(jnp.square(ca - center).sum(-1).mean() + 1e-8)
rg_th = 2.38 * ca.shape[0] ** 0.365
rg = jax.nn.elu(rg - rg_th)
return {"rg":rg}
</code></pre>
# Зададим объект модели
<code><pre>
clear_mem()
af_model = mk_afdesign_model(protocol="partial", data_dir='/opt/alphadesign/',
loss_callback=rg_loss, # Это наша функция
use_templates=False)
</code></pre>
# Можно задать вес нашей функции
<code><pre>
af_model.opt["weights"]["rg"] = 0.1
</code></pre>
# Теперь зададим степень насилия над PDB
<code><pre>
af_model.prep_inputs(pdb_filename="1l2y.pdb",
chain="A",
pos="1-7,15-19", # Позиции, которые мы хотим оставить неизменными
length=30) # Новый белок будет 30 аминокислот
af_model.rewire(loops=[15]) # тут мы зададим размер петли между участками
</code></pre>
# Запуск
<code><pre>
af_model.restart(mode=["soft","gumbel","wildtype"])
af_model.design_3stage(soft_iters=100, temp_iters=100, hard_iters=10)
</code></pre>
# Результаты
<code><pre>
af_model.save_pdb('afdes.pdb')
af_model.plot_pdb()
af_model.get_seqs()
</code></pre>
- Оцените, что получилось. Выдвините предположение об предполгаемой стабильности пепетида
h3. Традиционные ссылки на полезные ресурсы:
* Уроки по работе с Modeller находятся "здесь":http://salilab.org/modeller/tutorial/.
Цель данного занятия ознакомится с возможностями гомологичного моделирования комплекса белка с лигандом. В этом занятии мы будем пользоваться пакетом Modeller. Это программное обеспечение распространяется бесплатно для академических пользователей.
Вы будете работать с любым белком лизоцимом из Uniprot. Используя известную структуру лизоцима форели как образец, Вам необходимо построить модель комплекса Вашего белка с лигандом.
# Загрузим модуль
<pre><code class="python">
import sys
import modeller
import _modeller
import modeller.automodel
</code></pre>
# Зададим некторые параметры
<pre><code class="python">
env=modeller.environ()
env.io.hetatm=True
</code></pre>
# Скачаем белок заготовку
<pre><code class="python">
! wget http://www.pdb.org/pdb/files/1lmp.pdb
</code></pre>
и последовательность
<pre><code class="python">
! wget http://www.uniprot.org/uniprot/PXXXX.fasta
</code></pre>
# Создадим объект выравнивание:
<pre><code class="python">
alignm=modeller.alignment(env)
</code></pre>
и добавим последовательность и структуру
<pre><code class="python">
alignm.append(file='PXXX.fasta', align_codes='all',alignment_format='FASTA')
## создадим модель
mdl = modeller.model(env, file='ХХХХ.pdb', model_segment=('FIRST:'+'A', 'LAST:'+'A'))
## и добавим в выравнивание
alignm.append_model(mdl, atom_files='ХХХ.pdb', align_codes='1lmp')
## есть смысл поправить идентификаторы
alignm[0].code = '.....'
</code></pre>
# Делаем выравнивание и сохраняем:
<pre><code class="python">
alignm.salign()
alignm.write(file='all_in_one.ali', alignment_format='PIR')
</code></pre>
# Посмотрите содержимое all_in_one.ali, там всё хорошо?
# Построим модель:
<pre><code class="python">
## Выбираем объект для моделирования
s = alignm[0]
pdb = alignm[1]
print s.code, pdb.code
## Создаем объект automodel
a = modeller.automodel.automodel(env, alnfile='all_in_one.ali', knowns= pdb.co...... , sequence = s.code )
a.name='mod'+s.code
a.starting_model = 1
a.ending_model = 2
a.make()
</code></pre>
# Надо посмотреть результат:
<pre><code class="python">
import nglview
import ipywidgets
w1 = nglview.show_structure_file('.....B99990001.pdb')
w1
</code></pre>
-----
А ГДЕ ЛИГАНД??
-----
# Оказывается надо добавить три остатка лиганда к последовательности
Подсказки как сделать:
<pre><code class="python">
## Получить список остаков
alignm[n].residues
## Добавить в объект выравнивание последовательность из строки
alignm.append_sequence(....
</code></pre>
# (Дополнительно) Поместите лиганд в другое место, переназначив объект automodel, это очень примерный код:
<pre><code class="python">
class mymodel(modeller.automodel.automodel):
def special_restraints(self, aln):
rsr = self.restraints
at = self.atoms
for x,y in [('CG:83','O6:228')]:
rsr.add(modeller.forms.gaussian(group=modeller.physical.xy_distance,
feature=modeller.features.distance(
at[x],at[y]),mean=3.0, stdev=0.1))
from modeller import *
from modeller.automodel import *
a = mymodel(env, ...
</code></pre>
и да подсказка: надо удалить рестрейны которые генерируются автоматически: ( можно через файл рестрейнов)
<pre>
43 atoms in HETATM/BLK residues constrained
to protein atoms within 2.30 angstroms
and protein CA atoms within 10.00 angstroms
</pre>
# Доп. Найдите способ искать мутации для улучшения связывания по мотивам этого скрипта https://salilab.org/modeller/wiki/Mutate%20model
# Гомологичное моделирование комплекса белка с лигандом #
- Необходимо представить в отчёте результаты моделирования и результаты проверки качества структур.
- Необходимо представить обсуждение результата.
## Традиционные ссылки на полезные ресурсы: ##
- Уроки по работе с Modeller [находятся здесь](http://salilab.org/modeller/tutorial/) VPN? или https://vsb.fbb.msu.ru/share/modeller/
- [Colab](https://colab.research.google.com/drive/1Mld2l0DVzowppOm0947uE8sWWLj1HoMe)
>Цель данного занятия ознакомится с возможностями гомологичного моделирования комплекса белка с лигандом. В этом занятии мы будем пользоваться пакетом Modeller. Это программное обеспечение распространяется бесплатно для академических пользователей.
h2. Alphafold Design
> Работу выполняем в среде Alphadesign
* Практикум по мотивам : https://github.com/sokrypton/ColabDesign
# Загрузим быстрые пакеты для градиентов и линейной алгебры и ColabDesign
<code><pre>
import jax
import jax.numpy as jnp
from colabdesign.af.alphafold.common import residue_constants
from colabdesign import clear_mem, mk_afdesign_model
</code></pre>
# Скачаем белок для модификации
<code><pre>
! wget http://www.pdb.org/pdb/files/1l2y.pdb
! mkdir -p /opt/alphadesign/
! curl -fsSL https://storage.googleapis.com/alphafold/alphafold_params_2022-12-06.tar | tar x -C /opt/alphadesign/
</code></pre>
# Зададим функцию потерь от радиуса инерции
<code><pre>
def rg_loss(inputs, outputs):
positions = outputs["structure_module"]["final_atom_positions"]
ca = positions[:,residue_constants.atom_order["CA"]]
center = ca.mean(0)
rg = jnp.sqrt(jnp.square(ca - center).sum(-1).mean() + 1e-8)
rg_th = 2.38 * ca.shape[0] ** 0.365
rg = jax.nn.elu(rg - rg_th)
return {"rg":rg}
</code></pre>
# Зададим объект модели
<code><pre>
clear_mem()
af_model = mk_afdesign_model(protocol="partial", data_dir='/opt/alphadesign/',
loss_callback=rg_loss, # Это наша функция
use_templates=False)
</code></pre>
# Можно задать вес нашей функции
<code><pre>
af_model.opt["weights"]["rg"] = 0.1
</code></pre>
# Теперь зададим степень насилия над PDB
<code><pre>
af_model.prep_inputs(pdb_filename="1l2y.pdb",
chain="A",
pos="1-7,15-19", # Позиции, которые мы хотим оставить неизменными
length=30) # Новый белок будет 30 аминокислот
af_model.rewire(loops=[15]) # тут мы зададим размер петли между участками
</code></pre>
# Запуск
<code><pre>
af_model.restart(mode=["soft","gumbel","wildtype"])
af_model.design_3stage(soft_iters=100, temp_iters=100, hard_iters=10)
</code></pre>
# Результаты
<code><pre>
af_model.save_pdb('afdes.pdb')
af_model.plot_pdb()
af_model.get_seqs()
</code></pre>
- Оцените, что получилось. Выдвините предположение об предполгаемой стабильности пепетида