写在前面
ParallelFold 为交大钟博子韬 (GitHub) 开发的适用于大规模计算的集群版,支持 CPU 计算与 GPU 计算分离。
ParallelFold 将原本全部运行于 GPU 的计算,分成 CPU 和 GPU 两阶段进行。对于成百上千个蛋白的大规模结构预测,先至 cpu 或 small 等 CPU 节点上批量完成前面的 MSA 多序列比对,再将各蛋白计算出来的 feature.pkl
文件,交由 GPU 节点计算。这样既能节省 GPU 资源,又能加快运算速度。
原理部分我主要看的他们写的这篇文章:里面关于Alphafold的介绍以及怎么优化的,哪里优化的介绍的很详细,能学到很多。AlphaFold Deployment and Optimization on HPC Platform (sjtu.edu.cn)
这是我一边尝试一边记录的,也有不懂的地方,也有不必要的地方。如果大家也是第一次用Parallelfold,想做个参考的话,建议全篇看完再尝试。
下面开整:
1、Parallelfold环境配置及报错及使用
我是在Alphafold2的conda环境下直接上传了ParallelFold-main文件(从github上下载下来的,我用wget下不了)在Parallelfold文件夹里(提前创建好的)。有些软件的版本与它的教程版本不太一样,我先试试。不行了再重头弄吧。
想要别人写的代码脚本适配自己的任务,肯定是要适当修改一下的(例如数据库路径等,反正就是尝试跑一下,哪里出错改哪里)。
先来个尝试,看看哪里需要修改:
./run_alphafold.sh -d /pub/data/用户名/dataset -o output -p monomer_ptm -i input/mono_set1/GA98.fasta -t 2021-01-01 -m model_1 -f
报错
1.1 ModuleNotFoundError: No module named 'openmm'
提示Parallelfold1/alphafold/relax/cleanup.py和Parallelfold/alphafold/relax/amber_minimize.py这两个文件有ModuleNotFoundError: No module named 'openmm'错误。这个应该是我最开始运行Alphafold的时候改过,当时就是哪里报错改哪里,也没记录,现在又要再重新改一下了。
改正:把上述两个文件的对应位置的代码依次改成图里的就行了
1.2 ValueError: Could not find HHBlits database /pub/data/用户名/dataset/bfd/bfd_metaclust_clu_complete_id30_c90_final_seq.sorted_opt
这是因为我没有下载大的BFD数据库。改正:在上述代码中加个 -c reduced_dbs 参数就行了。
1.3 ValueError: Could not find Jackhmmer database /pub/data/用户名/dataset/mgnify/mgy_clusters_2018_12.fa
文件名错误了,我下载的数据库是新的,不是2018的。改正:找到run_alphafold.sh文件,修改成mgy_clusters_2022_05.fa即可。
到此为止已经在运行了,暂时没有出现报错了。在output文件夹中输出了GA98的MSA和features.pkl文件。
接着运行以下代码进行结构预测。GPU 部分能够自动识别是否已经生成 feature.pkl 文件。若文件已存在,则直接开始神经网络模型预测和优化计算;若未识别到文件,则按原 AlphaFold 流程运行。
./run_alphafold.sh -d /pub/data/用户名/dataset -c reduced_dbs -o output -p monomer_ptm -i input/mono_set1/GA98.fasta -t 2021-01-01 -m model_1,model_2,model_3,model_4,model_5
1.4 ValueError: Minimization failed after 100 attempts
猜测在github上看到openmm=7.7就可以了。为了不改变Alphafold2的conda环境(openmm=7.5),我再重新建一个Parallelfold的环境。就按照github里面的要求进行安装。
特别说明:这是我全文写完再来补充的。不用新建conda环境,如果之前安装过Alphafold,直接在那个环境下就可以了,一样可以运行。
安装完成后还是出现Amber relax的报错。尝试了几次无果后,我在github上询问了开发者,他回复我说openmm版本中存在这个问题,可以跳过amber relax,他正在努力改变环境来解决这个问题。我加了 -G 参数(Disable GPU relax),就没有报错了,并且输出了relax_model。不知道是怎么回事。是因为服务器CPU的,禁用GPU就行了?
2、ParallelFold预测复合物
这只是最简单的尝试,再试一下跑一下multimer复合物模型,GA98.fasta里面放了2条序列。代码如下:-m 参数后面的模型名称要正确,具体查看下图:
./run_alphafold.sh -d /pub/data/用户名/dataset -o output1 -c reduced_dbs -p multimer -i input/mono_set1/GA98.fasta -t 2021-01-01 -m model_1_multimer_v3 -f
再运行下面代码进行结构预测:
./run_alphafold.sh -d /pub/data/用户名/dataset -o output3 -c reduced_dbs -p multimer -i input/GA98.fasta -t 2021-01-01 -m model_1_multimer_v3 -G
最后输出结果文件包含如下图:
上述两部分加起来运行时常为2个小时(因为全是在CPU上运行,MSA和pkl文件生成需要1小时,结构预测需要1小时)。
下一篇写一下在github上的另一篇对Alphafold的拆分(先进行MSA,后进行结构预测),对比一下这两个哪个更快,以及批量预测。