RoseTTAFold All-Atom(RFAA):其可以对包含蛋白质,小分子,核酸,金属和共价修饰的组装体进行预测。
RFdiffuion All-Atom(RFDAA):可以围绕小分子来构建蛋白,从而直接形成具有特定口袋的蛋白。
一、Github地址
https://github.com/baker-laboratory
包括:RoseTTAFold-All-Atom 和 rf_diffusion_all_atom
在线服务:Tamarind: No-code Bioinformatics for Scientists
二、文章总结
AlphaFold和RoseTTAFold等模型对蛋白建模取得了巨大成功,然而自然界中,蛋白质很少单独起作用,而是与其它蛋白质、核酸(DNA、RNA)、小分子、金属、共价修饰物(磷酸化、甲基化、糖基化等)等形成蛋白复合物后产生作用,对这些复合物的建模仍然是一个重大挑战。通过RoseTTAFoldNA(RFNA),作者团队已经可以建模蛋白与核酸的相互作用;在本文中,作者进一步开发RFAA,以应对蛋白复合物的建模问题。
蛋白质和核酸分别可以很容易地表示成氨基酸和碱基的线性序列,然而蛋白质复合物目前还无法表示成线性序列;同样,将小分子、金属、共价修饰物等构建成线性序列也是困难的,但由于其原子和化学键数量较小,可以很好地将其表示成以原子作为节点、以化学键作为边的“图数据”;但将蛋白质和核酸等大分子构建成原子和化学键级别的图数据又是不合适的,因为其成千上万的原子和化学键将导致图的规模太大,对计算而言是个严重的问题。
为了克服上述限制,研究人员尝试将蛋白质和核酸的序列表示(氨基酸和碱基级别)与小分子、金属、共价修饰物的图表示(原子和键级别)相结合,实现了对蛋白复合物的建模。在网络结构上,RFAA基于RoseTTAFold2,蛋白质和核酸链仍以线性序列表示,任意小分子、共价修饰和非天然氨基酸被表示为原子键图,包含了1D的元素类型信息、2D的键连信息和3D的手性信息。这些信息经过三轨神经网络,最终输出预测的原子坐标,同时还预测原子和残基的置信度pLDDT和成对置信度PAE指标。
RFdiffusion All-Atom是基于RFdiffusion开发的。实验室测试证实,RFdiffusion All-Atom可以用来生成具有与特定化合物结合的口袋的蛋白质,包括类固醇药物digoxigenin、富含铁的血红素分子,以及植物用于吸收阳光的化学物质。这些设计出的全新蛋白已经通过晶体学和实验验证,可以与上述化合物结合。RFAA在预测蛋白质-小分子复合物时,除了预测蛋白的主链和侧链外,还预测了小分子的结合位置。在蛋白质数据库(PDB)中对完整生物组装体的结构进行训练后,RFAA 具有与 AF2 相当的蛋白质结构预测准确性,在 CAMEO 中具有出色的灵活骨架小分子对接性能,并且对蛋白质共价修饰以及具有多个核酸链和小分子的蛋白质组装具有合理的预测准确性。(RFAA最常见的失误是:分子位于正确的口袋,但是其分子朝向不正确。同时也应该注意到,如果专家操作,或许Vina的对接成功率会更高。)
作者在本文中展示了RFAA的几种应用。第一个案例作者使用RFAA建模蛋白-小分子复合物。对于配体盲对接CAMEO评估,RFAA对43%的靶标进行了高置信度的预测,在这些高置信度结构中,77%的配体RMSD<2A,领先其它深度学习方法。第二个案例作者使用RFAA建模蛋白上的共价修饰和非天然氨基酸,方法是将修饰残基和修饰基团一起作为原子图,而将其余部分视为残基链。作者发现能够对糖基化修饰、酶的辅因子和共价结合药物的构象进行预测,低PAE分数的预测效果往往更好,这类任务是其它深度学习工具尚未报道的。在第三个案例中,作者推断RFAA可以在非蛋白类生物分子的背景下进行蛋白质设计。
类似于RFDiffusion,作者开发了RFDiffusion All-Atom(RFDiffusionAA),通过对蛋白质-小分子训练集的输入结构进行加噪,并训练去噪扩散概率模型(DDPM)以消除噪声,可通过直接在小分子和其他非蛋白质分子周围构建蛋白质结构,来生成结合口袋。作者展示了针对心脏病治疗药物地高辛(DIG)、血红素配体Heme、以及针对胆色素分子Bilins的结合蛋白设计,并通过实验表征了这些新型结合蛋白,这些结合剂任何已知蛋白都不具有序列相似性。
三、RoseTTAFold-All-Atom(RFAA)(蛋白复合物结合预测,非设计)
3.1安装过程:
按照前述Github教程安装即可(在windows下安装失败,在linux下安装成功)。
3.1.1)先在用户目录下安装的anaconda
本次安装包:Anaconda3-2023.09-0-Linux-x86_64.sh(conda版本:23.7.4)。
//www.greatytc.com/writer#/notebooks/48501144/notes/119332421
3.1.2)安装mamba(必须的)
//www.greatytc.com/writer#/notebooks/48501144/notes/119332576
3.1.3)克隆源码包“RoseTTAFold-All-Atom”
然后将Github上的源码包git bash或直接下载到用户目录下,windows下完后传入linux也行。这个包我放在/home/houliya/my_RFAA目录下(my_RFAA是自建的):
3.1.4)创建python环境、安装包和相应设置
terminal进入RoseTTAFold-All-Atom及内部目录(注意这里共有3步):
mamba env create -f environment.yaml
cd rf2aa/SE3Transformer/
pip3 install --no-cache-dir -r requirements.txt
python3 setup.py install
cd ../../
执行上述第一句代码后自动创建了名为RFAA的python环境:
3.1.5)安装signalp6软件(重要,相对麻烦)
(3.1.5.1)注册并下载signalp6包
(https://zhuanlan.zhihu.com/p/423757806)
首先打开https://services.healthtech.dtu.dk/services/SignalP-6.0/进行注册(注意注册邮箱只能用edu等教育机构邮箱,商业邮箱不行。);
(3.1.5.2)解压signalp6包
注册成功后邮箱会收到下载链接,下载完后是一个1.5G左右的压缩包:signalp-6.0h.fast.tar.gz,将其拷贝到前述“RoseTTAFold-All-Atom”中(不是必须的),并解压得到“signalp6_fast”目录:
# 解压缩安装文件(解压后目录:signalp6_fast)
tar zxvf signalp-6.0.fast.tar.gz
(3.1.5.3)安装并测试signalp6包
进入signalp6_fast目录后用pip安装(https://github.com/fteufel/signalp-6.0/blob/main/installation_instructions.md):
(注意:必须安装在前面的生成的RFAA环境下,因此首先进入环境:conda activate RFAA)
# 进入解压后的软件目录(signalp6_fast),在终端运行(安装需要点时间,需要下载一个800多M的文件)
pip install signalp-6-package/
# 测试安装是否成功
signalp6 --help
(3.1.5.4)移动distilled_model_signalp6.pt文件(必须的)
终端输入命令:signalp6 --help
找到下面信息和一个路径:“包含模型文件的目录路径。仅在不遵循默认安装说明时使用。”
然后从signalp6_fast/signalp-6-package/models下把distilled_model_signalp6.pt这个文件拷贝到上图中红线标注的目录下(根据自己的实际情况)(见:
https://zhuanlan.zhihu.com/p/664976464)
# 这是我的情况:
cp /home/houliya/RoseTTAFold-All-Atom/signalp6_fast/signalp-6-package/models/distilled_model_signalp6.pt /home/houliya/mambaforge/envs/RFAA/lib/python3.10/site-packages/signalp/model_weights/
下一步第一个“NOTE”不用管,第二个“NOTE”意思是:上面拷贝过去的distilled_model_signalp6.pt文件需要重命名为ensemble_model_signalp6.pt
# NOTE: (current) version 6.0h is used in this example, which was downloaded to the current working directory using `wget`
signalp6-register signalp-6.0h.fast.tar.gz (这句没啥用,只是说需要下载这个压缩文件)
# NOTE: once registration is complete, one must rename the "distilled" model weights
mv $CONDA_PREFIX/lib/python3.10/site-packages/signalp/model_weights/distilled_model_signalp6.pt $CONDA_PREFIX/lib/python3.10/site-packages/signalp/model_weights/ensemble_model_signalp6.pt
3.1.5.5)安装输入准备依赖项
cd进入RoseTTAFold-All-Atom目录,内含一个文件:install_dependencies.sh
# 在RoseTTAFold-All-Atom目录中
bash install_dependencies.sh
可能出现下述错误:
解决方法:https://blog.csdn.net/heihaozi/article/details/113602205
sed -i 's/\r//' install_dependencies.sh
解决上述问题后继续安装,需要下载文件(需要一定时间)。
3.1.5.6)下载模型权重(1.24G)
还是在RoseTTAFold-All-Atom目录下:
wget http://files.ipd.uw.edu/pub/RF-All-Atom/weights/RFAA_paper_weights.pt
3.1.5.7)下载用于多重序列比对和模板生成的序列数据库(共399.24G)
# uniref30 [46G]
wget http://wwwuser.gwdg.de/~compbiol/uniclust/2020_06/UniRef30_2020_06_hhsuite.tar.gz
mkdir -p UniRef30_2020_06
tar xfz UniRef30_2020_06_hhsuite.tar.gz -C ./UniRef30_2020_06
# BFD [272G]
wget https://bfd.mmseqs.com/bfd_metaclust_clu_complete_id30_c90_final_seq.sorted_opt.tar.gz
mkdir -p bfd
tar xfz bfd_metaclust_clu_complete_id30_c90_final_seq.sorted_opt.tar.gz -C ./bfd
# structure templates (including *_a3m.ffdata, *_a3m.ffindex)(81.24G)
wget https://files.ipd.uw.edu/pub/RoseTTAFold/pdb100_2021Mar03.tar.gz
tar xfz pdb100_2021Mar03.tar.gz
3.2使用 Hydra 进行推理配置
我们使用一个名为 Hydra 的库来组合预测的配置文件。实际运行模型的脚本位于 rf2aa/run_inference.py,而用于训练模型的默认参数则在 rf2aa/config/inference/base.yaml 中。我们强烈建议使用默认参数,因为这些参数最接近于 RFAA 的训练任务,但我们发现将 loader_params.MAXCYCLE 设置为 10(默认值为 4)能够在难例中得到更好的结果(如论文中所指出的)。
安装Hydra(https://pypi.org/project/hydra-core/):
# 注意在RFAA的python环境下安装该包
pip install hydra-core
运行模型的一般方法如下:
# 在RFAA包内执行该命令
python -m rf2aa.run_inference --config-name {your inference config}
未结束
????????????????????????????
四、rf_diffusion_all_atom(RFDAA)(蛋白设计)
4.1 下载、安装、跑通代码
安装步骤见前面网站: rf_diffusion_all_atom
(需要git下载代码,下载完后,后续所有步骤都需要cd到rf_diffusion_all_atom目中执行!)
中间需要下载模型权重文件RFDiffusionAA_paper_weights.pt(1.3G)和apptainer容器镜像rf_se3_diffusion.sif(12G)
因此需要首先安装apptainer容器管理工具,安装方式很多,这里采用conda安装:
(注意:将apptainer安装在需要最终运行代码的python环境中,不要安装在base环境中。)
激活conda环境(想安装在哪个环境下就进入哪个环境,然后安装):
>>conda activate pytorch_cgx
# 安装Apptainer:
>>conda install -c conda-forge apptainer
安装后的验证:
>>apptainer --version
输出:apptainer version 1.3.0
表示安装成功!
根据网站提供信息,执行一个示例代码:
apptainer run --nv rf_se3_diffusion.sif -u run_inference.py inference.deterministic=True diffuser.T=100 inference.output_prefix=output/ligand_only/sample inference.input_pdb=input/7v11.pdb contigmap.contigs=[\'150-150\'] inference.ligand=OQO inference.num_designs=1 inference.design_startnum=0
执行上述代码在我的设备上出错,提示下面三个包没有安装:squashfuse、fuse2fs、gocryptfs。安装这三个包:
sudo apt install squashfuse fuse2fs gocryptfs
安装成功后继续执行上述示例代码,成功执行(运行代码后生成output和outputs两个目录,并存储结果),但中间输出一些文件没找到等出错信息(似乎不影响结果)!
最终成功运行后结果:
4.2 方法使用说明(★★)
4.2.1 设计参数文件说明
- 主程序在run_inference.py中,其中通过@hydra.main(...)读取用户参数(hydra包会自动读取yaml文件或命令行中的参数);
- 原始参数在rf_diffusion_all_atom/config/inference目录中,包括base.yaml和aa.yaml两个参数文件,其中aa通过defaults参数包含base文件中的参数。run_inference.py读取的是aa.yaml文件。
- 在进行蛋白设计时,可以直接修改base.yaml中的参数值(为保持代码的原始性,不建议直接修改该文件中的参数值);也可以在aa.yaml中修改参数值(不推荐);还可以在执行代码时通过命令行临时指定参数值(推荐)。(注意:命令行指定的参数值优先级最高,aa次之,base最低,如果三个地方都指定了某个变量的参数值,则最终会使用命令行指定的值)。
4.2.2 重要设计参数说明(★★★★)
(所有的参数可以直接打开rf_diffusion_all_atom/config/inference中的base.yaml和aa.yaml文件查看,对于某些参数可以参考RFdiffusion的相关参数说明,两者类似:https://zhuanlan.zhihu.com/p/652500317),下面针对部分已知的关键参数进行说明(同样参考前面这个链接):
inference.input_pdb=input/7v11.pdb:指定待设计对象的原始PDB信息,包括蛋白序列(某些情况非必须)、氨基酸原子坐标(只要有一个就行,保证成程序能运行)、配体原子坐标(必须有)等。
-
inference.ligand=OQO:针对前述pdb中某个配体进行设计(必须指定),例如上述例子中打开7v11.pdb文件可以看到有OQO和CIT两个配体(还不确定是否可以指定多个配体,正在Github的issue中咨询),如下图:
无标题.png inference.num_designs=1:总共设计多少样本。
contigmap.contigs=[\'5-15,A10-25,7-7,A42-42,30-30\']:指定要保留和要设计的序列。任何以字母为前缀的内容都表示要保留的motif,字母是输入 pdb 文件中的链字母。示例中,A10-25 表示输入pdb文件中A链的第10-25号残基。任何没有字母前缀的内容都表示要构建的氨基酸序列。如果需要指定在某个地方断链,可使用0。
上述示例解析:
5-15:在蛋白的起始端(N端)设计5-15 个残基(最终数目随机);
A10-25:紧跟着保留输入pdb中A链的第10-25个残基;
7-7:紧跟着设计7个(确定的数量)残基;
A42-42:紧跟着保留A链的第42个残基;
30-30:紧跟着设计30个(确定的数量)在蛋白终端(C端)。
特殊情况:例如=[\'150-150\'],则表示设计一个长度为150的序列。
注意事项:1)两个单斜杠“\”的位置。2)中间不能有任何空格。contigmap.length:指定氨基酸序列总长度
contigmap.inpaint_seq=[A1/A30-40]:指定输入pdb文件中A链的第1、30-40号氨基酸进行重点设计(猜测)。
ppi.hotspot_res=[A30,A33,B34]:指定待设计生成对象(binder)中必须与ligand接触的位点(区域)。其中‘A、B’ 是输入 pdb文件中氨基酸链序号(一个pdb中可能包含多条氨基酸链;‘数字’表示对应链中的氨基酸序号。)
ppi.binderlen=90:指定待设计生成对象(binder)中与ligand接触区域的长度。
以下是inference时的噪声放大系数,值越大,扰动越大,设计结果的多样性更强,否则反之;在得不到好的设计结果时可以尝试减小这些值,建议三者设置相同值:
- denoiser.noise_scale_ca=0-1:平移噪声放大系数
- denoiser.noise_scale_frame=0-1:框架噪声放大系数
- denoiser.noise_scale_torsion=0-1:旋转噪声放大系数
【【蛋白设计提示:并非目标蛋白质上的每个位点都适合设计binder。要使一个位点成为有吸引力的候选结合位点:1)它应该有 >~3 个疏水残基供结合剂相互作用;2)与带电的极性位点结合仍然相当困难;3)与靠近聚糖的位点结合也很困难,因为它们在结合时通常会变得有序,而你会因此受到能量打击;4)binder设计避免非结构化loops,但目前还不清楚这是否仍是一项要求,因为RFdiffusion已被用于粘合非结构化肽,而非结构化肽与非结构化环路有很多共同之处。】】
4.2.3 注意事项(★★★):
- 输入pdb文件中至少要包含一个ligand,比如上面的OQO,否则无法设计;
- 输入pdb文件中至少要包含1个氨基酸的ATOM信息,不能只有ligand,但这个氨基酸与该ligand可以没有任何关系,这样能保证程序跑通。
- RFDiffusion和RFDiffusionAA一样,生成的pdb文件中,只是设计了骨架,而没有侧链;
- 除了给定的motif外,生成的pdb中的与结构相关的序列没有任何意义。如果要得到序列必须进一步使用LigandMPNN或ProteinMPNN等类似方法。
4.2.4
使用RFdiffusionAA、proteinMPNN、AlphaFold2、LigandMPNN和PyRosetta设计血红素结合蛋白的端到端设计流程可在以下网站获得:https://github.com/ikalvet/heme_binder_diffusion
参考:
https://cloud.tencent.com/developer/article/2400525
https://blog.csdn.net/weixin_53895111/article/details/134875384
https://www.163.com/dy/article/ISQLS9VE05349C3E.html
https://zhuanlan.zhihu.com/p/685998369
https://mp.weixin.qq.com/s?__biz=MzI1MTE0Njg4NQ==&mid=2654254376&idx=1&sn=32edfda855493a02089977bbc58ed67d&chksm=f23772c2c540fbd46ef76f663b77c34d3ccf9c79fbfe538af4bd0463cd59af44e43431ed5e6d&scene=27
https://bbdrug.blog.csdn.net/article/details/136598087?spm=1001.2101.3001.6650.5&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-5-136598087-blog-134875384.235%5Ev43%5Epc_blog_bottom_relevance_base6&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-5-136598087-blog-134875384.235%5Ev43%5Epc_blog_bottom_relevance_base6&utm_relevant_index=10