机器学习生物信息蛋白质结构分析

RoseTTAFold-蛋白质预测的“平凡之路”

2021-08-08  本文已影响0人  临窗听风雨



  7月份,AlphaFold2和RoseTTAFold相继公布源码,让生物圈着实沸腾了一把。尤其是AlphaFold2,预测的准确性只能用“卓越”来描述,在CASP 14大赛中一骑绝尘。但AlphaFold2所需要的运算资源太苛刻了,只适合“贵族“玩家,它的“平凡之路”还很远。RoseTTAFold虽与AlphaFold2还有一定差距,但比其他预测软件还是有很大的优势,最可贵的是RoseTTAFold运算资源要求低得多,能够满足平民化要求。下面我就来介绍下RoseTTAFold真正“飞入寻常百姓家”的过程与方法。

  首先声明本教程有多“贫民化”。我做测试的硬件条件是:杂牌笔记本,intel i7 9750 CPU,24G内存,1T移动硬盘,有NVIDIA显卡但无法使用(即完全CPU版运算),系统是Win10下的WSL 2 Ubuntu-20.04。相信对大多数人而言,这个配置没太大难度。使用example文件夹下的示例蛋白(138aa)运行需要30min左右,224aa测试蛋白50min左右。因为我使用的机械移动硬盘,I/O受限,如果使用电脑自身固态硬盘,时间估计还能减少20%-30%。

测试输出:

Starting......
2021-08-07 **12:59:19**
>>> Running hhsearch <<<
<<< hhsearch runing Done >>>
2021-08-07 **13:05:42**
>>> Predicting distance and orientations <<<
<<< predict_pyRosetta.py running Done >>>
2021-08-07 **13:11:57**
>>> Running parallel RosettaTR.py <<<
<<< parallel RosettaTR.py running Done >>>
2021-08-07 **13:47:09**
>>> Running DeepAccNet-msa <<<
<<< DeepAccNet-msa running Done >>>
>>> Picking final models <<<
<<< Final models saved in: ./model >>>
2021-08-07 **13:48:40**
****** All Done ******

  RoseTTAFold的官方说明介绍了其安装使用方法,按照这了步骤,我们首先来看看适合的硬件要求:

  1. 能够运行GPU的NVIDIA显卡,并且要支持CUDA 10.2及以上版本。这个要求不难,一般笔记本就能胜任,难得是在WSL 2下配置NVIDIA显卡驱动和CUDA环境。(如果真想将RoseTTAFold用于预测计算,还是推荐安装真正的linux系统,网上有很多安装linux系统的教程。)

  2. CPU和内存:8核和64G内存,这个也不难。i7 cpu大多6核12线程了,可能内存达不到,但事实证明16G内存运行224 aa的蛋白质没有问题,但内存越大越好。

  3. 硬盘空间:RoseTTAFold包含三个超大数据库,需下载432G,解压后≈2.6T,一般的笔记本是顶不住的。

uniref30 [46G] #解压后180G

BFD [272G] #解压后1.73T

pdb100_2021Mar03.tar.gz [114G]    #解压后666G
  1. 理想状态,需要配置完全匹配的conda、CUDA、Tensorflow-gpu、pyRosetta环境,这对于结构预测老手不是啥难事儿,但对“还菜还爱玩儿”青铜玩家就太复杂了,比如我。而且,使用win10的linux子系统,几乎无法按要求完成CUDA配置,因此我的GPU根本没用上。我看有帖子说必须把win10升到win11才能使WSL 2正常使用CUDA

最基本的硬件要求

  1. 笔记本电脑(台式机更好)
  2. CPU:不低于intel i5|4核8线程|2.6 GHz(笔记本最好是i7 6核)。
  3. 内存:不低于16G,500多就能买个金士顿的16G内存条。
  4. 硬盘:不低于1T(最好是固态硬盘,机械硬盘I/O太慢了,严重影响效率)。
  5. 十分重要:如果是笔记本,一定要配个强力散热底座,如果是笔记本,一定要配个强力散热底座,如果是笔记本,一定要配个强力散热底座(严重声明:我不是卖散热底座的)。modeling过程极其吃CPU。

软件要求

  1. Win10的子linux系统已经安装好,推荐ubuntu 20.04版本,并完成软件包安装换源(如果不在乎软件安装速度这个无所谓)。
  2. conda已经安装好,并且配置好环境变量(可以在任何路径启动conda),推荐anaconda3/miniconda3。
  3. 修改 ~/.condarc 文件,更换conda默认安装频道,删除“ – defaults”,添加国内镜像源,最终内容如下:
auto_activate_base: false
channels:
 - https://mirrors.bfsu.edu.cn/anaconda/pkgs/main/
 - https://mirrors.bfsu.edu.cn/anaconda/pkgs/free/
show_channel_urls: true

使用步骤

  1. 下载源码
git clone https://github.com/LiuZhen106/RoseTTAFold.git
cd RoseTTAFold/
  1. 下载建模用的network weights文件
wget https://files.ipd.uw.edu/pub/RoseTTAFold/weights.tar.gz
tar -zxvf weights.tar.gz
  1. 下载pdb100_2021Mar03.tar.gz文件并解压到RoseTTAFold文件夹
wget -c https://files.ipd.uw.edu/pub/RoseTTAFold/pdb100_2021Mar03.tar.gz
tar -zxvf pdb100_2021Mar03.tar.gz
  1. 安装conda环境

  conda是专门解决python不同版本软件包冲突及其依赖关系的神器,安装与使用网上有很多教程,本文不再赘述。但有几条常用命令,需要简单介绍下。

conda env create -n test #新建一个名为test的环境
conda env create -f xxx.yml #从xxx.yml创建一个新的环境
conda remove -n test --all -y #删除环境
conda activate XXX #启用XXX环境
conda deactivate #关闭当前环境
conda search xxx #查看xxx包的版本信息及channel来源
conda search xxx=yy –info     #查看包的详细信息及依赖包
conda install xxx=yy #在当前的环境安装yy版本的xxx包
conda remove xxx=yy #卸载包
conda config --add channels 网址1 #添加软件包源
conda config --remove channels 网址1 #删除软件包源

  原程序提供了pyrosetta/e2e两种预测模式,根据Baek等的报道pyrosetta方法要比e2e更精确一些。 运行e2e的“主攻”是pytorch,需要RoseTTAFold 环境;pyrosetta的“主攻”包括pytorch、tensorflow、pyRosetta,需要RoseTTAFold和folding环境,而且pyRosetta需要在folding环境额外安装。tensorflow-gpu、pytorch需要特定版本的cudatoolkit、cudnn、python依赖包,Baek已经将它们写到了RoseTTAFold-linux.yml、folding-linux.yml两个文件中。而至于pyRosetta的安装,Baek等提供了下载安装连接,但需要向Rosetta Commons申请学术版账号和密码。我把我申请的学术账号与密码,写到了folding-linux.yml文件中,在安装folding环境时,会自动配置好相匹配的pyRosetta程序。这里要特别向Rosetta Commons组织和Jeffrey Gray’s实验室表示敬慕,感谢他们的学术分享精神。

  这里需要说明一下,pytorch、tensorflow-gpu是GPU版的,它们如果检测到CUDA/GPU设备可用就调用,否则使用CPU,因此不需要更改它们的版本。此外,有些同学发生psipred、psipass2运行报错,这很大可能是gcc版本冲突造成的,可以在RoseTTAFold 环境下下载源码重新编译。本文通过使用网络资源的方法绕过了这些步骤。

  1. 获取输入文件

  本文的方法绕过了原方法的前两个步骤,因此需要三个输入文件:input.fa t000_.msa0.a3m t000_.msa0.horiz。.a3m、. horiz文件需要从网上获取。

1) 获取大规模序列比对(MSA)结果
网址:https://toolkit.tuebingen.mpg.de/tools/hhblits

Parameters:E-value cutoff for inclusion,相当于hhblits程序的 -e 参数,越低越严格,建议首选1e-6,如果获得的序列太少,可以调高此值,不推荐超过1e-3。 Number of iterations: 相当于 -n 参数,值越大越好,但越大运行越慢,推荐设置2。Min probability in hitlist (%):相当于 -p 参数,值越大越准确,推荐50,如果获得的序列太少,可以调低此值。Max target hits: 相当于 -maxfilt 参数,越大越好,但也会拖慢后续hhsearch运行,推荐2000。

  运行结束后,可以在“Query Template MSA”菜单下,点击下载完整版.a3m文件。源程序的脚本里,对结果进行了过滤,先使用严格条件输出.a3m,如果得到的序列数量低于2000/4000,调高E-value重新执行,可以将上一步输出的.a3m作为新的输入文件。使用该网站也可以模拟该循环,在“Result”菜单栏点击“Forward”可以自动载体输出重新执行hhblits,知道获得你认为满意的结果。将最终下载的.a3m更名为“t000_.msa0.a3m”,移动到输入工作文件下(即input.fa所在目录)。

  1. 获得二级结构预测文件
    网址:http://bioinf.cs.ucl.ac.uk/psipred/
    输入:fasta格式的蛋白质序列,不需要设置任何参数
      运行结束可以在右侧栏下载.horiz文件,下载后更名为“t000_.msa0.horiz”,同样移动到输入工作文件下。

6. 运行pyrosetta_ver脚本

  cd test/
  ../run_pyrosetta_ver_lz.sh input.fa .

7. 结果
  最终生成的结构文件保存在model文件夹里,程序默认挑选5个得分最高的,得分信息保存在modelQ.dat文件里。其中model_1.pdb~model_5.pdb是软连接,指向pdb-3track文件夹中的某些模型,而model_1.crderr.pdb与最终的结构文件相比,只是缺少文件头和氨基酸残基的权重信息,而这些信息对后续结构分析是不必要的,像zdock等蛋白-蛋白对接软件反而不需要这些信息,因此model_1.crderr.pdb可以作为最终结构文件使用。

8. 源码地址
RoseTTAFold在线服务器: https://robetta.bakerlab.org
RoseTTAFold GitHub源码: https://github.com/RosettaCommons/RoseTTAFold
本文修改的RoseTTAFold:https://github.com/LiuZhen106/RoseTTAFold


\color{#00A0A0}{Enjoy\ your\ time!}

上一篇下一篇

猜你喜欢

热点阅读