如何用Rosetta全家桶设计一个抗体?

news/2024/10/18 16:47:51/

新冠肆虐无药可医,

医护冒险奋战在前线。

实验室里抗体设计,

试管里混合液波光粼粼,

分子结构、细胞实验频频。

日以继夜,孜孜不倦,

只为破解疫情的难题。

我们紧密团结,努力前行,

心中不灭的信念是希望。

愿抗体如箭,射破病毒无疆,

愿健康如花,盛开在世间。

1. 准备一个抗原

比如新冠病毒表面某个蛋白。我这里准备了一个蛋白肽段,大概长这个样子:
在这里插入图片描述

2. 搭建Rosetta和PyRosetta环境

如果你不懂编程,不懂shell语言或者python,最好还是不要自己弄。

我这人喜欢折腾,光搭建这运行环境就花了两天,国内外有些相关资料但不多,Google都没有,都是直接查相关的英文手册。好在这些程序都是开源的,你可以直接阅读和编辑代码,那个痛苦又酸爽。。。。

这里假设环境搭好了,你知道你的app在哪。

3. 准备好背景知识和文件

参考的教程主要是Meilerlab 的workshop:Rosetta Antibody Workshop 2019 – Meiler Lab

视频网址:RosettaAntibodyDesign (RAbD): Walkthrough - Rosetta Virtual Workshop 2021 - YouTube

如果上不了油管,请看Bilibili:RosettaAntibodyDesign (RAbD) 操作步骤 - Rosetta Virtual Workshop 2021-The Meiler Lab

都看完了哇?下面我们来试试。

3.1 准备一个抗体

准备一个晶体结构已知的,只保留了Fab段的抗体。比如我把教程里的曲妥珠单抗(Trastuzumab)提出来了,它大概长这个样子:

在这里插入图片描述

可能大家像我一样都忘了抗体长啥样,也不知道一般的抗体的三维结构,这里稍微复习一下,抗体一般是Y型,由重链和轻链组成,H+L,Fc段是Y的手柄,Fab段是它识别抗原的两个抓手,Fab段的可变区才是最可怕的,三对可变区(CDR,上图中的绿色外的多颜色区域)基本可以识别生物界的抗原,抗体数量可以达到10的10-13次方的数量级。示意图如下:

在这里插入图片描述

3.2 将抗原及抗体放到同一个pdb文件

首先要用PyMol,将抗原肽和抗体放到同一个pdb文件里面
按住鼠标滚轮(mac鼠标没有)水平拖动,左键调整角度,将氨基酸肽段调整到与抗体可变区可能相结合的位置,距离小于10A。然后保存并导出同时有抗体和抗原肽段的pdb。

原本想着用程序先将两者docking好,所以我先创建了100个dock好的文件,结果发现没用。因为:

If we relax the structure too much, we will fall into an energy well that is hard to escape without significant sampling.

这句话最开始没太在意,就略过了,回过头才领会到,如果一开始选dock太完美的无法进行后续的抗体设计!会掉入能量陷阱。

这样文件工作就准备好了。开始进行Rosetta,设计抗体。

4. 开始设计抗体RAbD

4.1 一般设计

# 代码就这么几行,塞进去就可以跑了。这里先小剂量跑一下,生成20个抗体。
$ROSETTA_BIN/antibody_designer.static.macosclangrelease \
-s my_docked_pep.pdb -seq_design_cdrs L1 L3 -light_chain kappa -nstruct 20 -out:prefix tutA1_# 跑完了看看抗体的的得分,total_score, 或者能量值 dG_separated
$ROSETTA/main/source/tools/scorefile.py --scores dG_separated --output tab tutA1_score.sc | sort  -k2 -k1# 然后在pymol里看看长啥样
pymol tutA1_*

大概长这样:

在这里插入图片描述

还行,

在这里插入图片描述

各个可变区的序列开始发生变化了。设置对可变区进行Random start调整。

$ROSETTA_BIN/antibody_designer.static.macosclangrelease \
-s my_docked_pep.pdb -graft_design_cdrs L1 L3 -seq_design_cdrs L1 L3 -light_chain kappa -random_start -nstruct 5 -out:prefix tutA3_pymol tutA3_*

在这里插入图片描述

可以看到,可变区的三维结构更分散了。调整幅度更大,但抗体的位置变化不大,说明程序并未对两者的空间位置进行调整。

4.2 DeNovo,边Docking边设计抗体

切换另一种模式,尝试DeNovo的设计。

In this example, we use integrated RosettaDock (with sequence design during the high-res step) to sample the antibody-antigen orientation, but we don’t care where the antibody binds to the antigen. Just that it binds.

在这个例子中,我们使用集成的 RosettaDock(在高分辨率步骤中使用序列设计)来采样设计抗体-抗原,但我们不关心抗体与抗原结合的位置。 只是它具有约束力。

代码长这个样子:

$ROSETTA_BIN/antibody_designer.static.macosclangrelease \-s my_docked_pep.pdb -graft_design_cdrs L1 L2 L3 H1 H2 \-seq_design_cdrs L1 L2 L3 H1 H2 H3 -light_chain kappa \-mc_optimize_dG -do_dock -nstruct 5 -random_start -out:prefix tutC1_

跑出来长这个样子:

在这里插入图片描述

看到了没?抗体移来移去的去识别这个抗原,寻求两者最舒服最稳定的结合方式,爱情这就来了。从女方角度看,这个过程如下,同时伴随着抗体CDR区的重建。

在这里插入图片描述

4.3 Auto Epitope Constraints 限制抗体识别的表位

假设你的抗原很大,docking的时候,抗体就会到处跑去寻找它的爱情。如果我们买办,只想它娶隔壁村的姑娘,那么就得限制抗体识别的表位,使用这个 -use_epitope_constraints参数,它就不会乱跑了。我这里的抗原是一个肽段,不需要。

4.4 特定残基表位限制

这个就更狠了,直接包办,去取隔壁村的小芳姑娘。

通过 -epitope 8A参数,我们可以指定抗体围绕在A链的第八位氨基酸进行建模。

代码如下:

$ROSETTA_BIN/antibody_designer.static.macosclangrelease \
-s my_docked_pep.pdb \
-graft_design_cdrs L1 L3 \
-seq_design_cdrs L1 L2 L3 H1 H2 H3 -light_chain kappa -do_dock -use_epitope_constraints \
-paratope L1 L3 \
-epitope 8A \
-nstruct 10 \
-out:prefix tutC3_
# 这里的8A,是指A链(抗原链),8是第八位氨基酸

在这里插入图片描述

得分也还不错。

5. 其他

这个教程还有一些剩余部分,我都跑了,比如:

  1. 自定义CDR区
  2. 限制CDR区的氨基酸组分
  3. 建模时候用Mintype —— 这个据说更有效

This mintype enables Flexible-Backbone design. Our default is to use min/pack cycles, but relax typically works better. However, it also takes considerably more time! This tutorial takes about 339 seconds for one struct!

  1. 抗体框架设计,针对CDR去意外的框架,这一般是不变的,不用动。
  2. H3 Stem, kT, and Sequence variablility

总结

  • 试过无数次之后发现,手动调整的松散结合更利于后面的建模,docking完了之后能量值太低不利于优化,会掉入能量陷阱。当然,抗原抗体离得太远也不行。

  • 跑通模型之后,应该进行 nstruct = 1000, 2000-5000扩增,放大模型,大概要跑个几天。

  • 如果你的抗原肽来自某天然蛋白,还需要分全序列和肽段分别跑跑看!!!

  • 这期间遇到了无数的坑,花了我差不多一个星期的业余时间。特别感谢ChatGPT,文章最开始的那首打油诗就是它写的,我只开了个头。另外感谢它辅助我学习知识,阅读代码,还帮我挖了很多坑。

在这里插入图片描述


http://www.ppmy.cn/news/970267.html

相关文章

软件架构介绍

一、定义 软件架构:可以简单理解为满足干系人关键诉求的一系列宏观决策。 二、软件质量属性 软件架构师大部分时间在解决以下产品质量模型中的质量属性问题。 三、程序员和架构师区别 从思维逻辑方面来看, 程序员从功能和业务逻辑方面去想问题。 架…

vue el-dialog缓存问题

Vue 在重新打开Dialog 时,经常回保留之前遗留的数据,此时用v-if 或者 destroy-on-close 都没有用的,正确的处理办法如下: 在关闭dialog 的时候调用 1 2 3 onClosed() { Object.assign(this.$data, this.$options.data()) …

图解java.util.concurrent并发包源码系列,原子类、CAS、AtomicLong、AtomicStampedReference一套带走

图解java.util.concurrent并发包源码系列,原子类、CAS、AtomicLong、AtomicStampedReference一套带走 原子类为什么要使用原子类CAS AtomicLong源码解析AtomicLong的问题ABA问题AtomicStampedReference 高并发情况下大量的CAS失败,导致CPU空转 往期文章&…

灵遁者诗歌集《禅在禅中》序言篇:写诗激情已去

导读:我当然不能和ChatGPT比写诗歌,我不再渴望写诗歌了,激情褪去了。但《禅在禅中》我会坚持写完。 本文为灵遁者诗歌集《禅在禅中》序言篇: 我今天做了一个奇怪又真实的梦,大概是这样的,梦见有个小伙要跟…

AI教父Hinton最新采访万字实录:ChatGPT和AI的过去现在与未来

杰弗里辛顿(Geoffrey Hinton)被公认是人工智能的教父,数十年前他就支持和推动了机器学习,随着像ChatGPT这样的聊天机器人引起广泛关注,CBS的主持人于2023年3月初在多伦多的Vector研究所采访了Hinton。 全长40分钟的采访…

内网与外网有什么区别

内网 内网指的就是在某一指定的区域内由多台计算机互联成的计算机组,比如家庭、单位、学校、公司等,是一个小范围的,它可以在空间几千米内实现互联网文件管理、软件、打印机等共享,局域网是封闭的,它可以是两台电脑组…

自己动手做chatgpt:解析gpt底层模型transformer的输入处理

前面我们完成了一些基本概念,如果你对深度学习的基本原理还不了解,你可以通过这里获得更多信息,由于深度学习的教程汗牛充栋,因此我在这里不会重复,而是集中精力到chatgpt模型原理的分析,实现和实践上。Cha…

ChatGPT最新进度,行业应用进程如何?

ChatGPT是OpenAI基于其GPT-3语言模型开发的对话生成AI系统。根据OpenAI的公告,他们已经推出了一系列ChatGPT的相关产品,包括:Codex:用于编程的AI助手,可以基于自然语言生成代码片段,支持多种编程语言。 GP…