alphafold2安装记录230610, Docker法安装运行
接下来是安装docker,
其实之前公司帮忙安好了conda版的,可以通过module模式加载af2环境,类似deepEM_hancer_dev。就是没下载Database,我一开始下载Database失败,以为他没装好,一怒之下把所有alphafold相关的文件夹都删干净了,自然啥都没有了。
为了不破坏集群环境,一开始尝试使用conda版安装,但是后面被我把conda环境搞坏了,报错逐渐加重,一开始是少数几条命令报错,搞到第二天,几乎所有conda命令都报错,而且也不弹出报错信息了,就卡住。 应该是conda的python,user site-packages没有隔离时,运行了pip install导致,但是我解决不了。看了下conda环境目录的cryosparc还能正常运行,deepEMhancer和Topaz现在都可以依赖cryosparc运行,应该也没问题。还好,不算搞砸。
那只能用docker安装了。docker我报了很多错,查了许多教程,所以下面的命令可能是冗余的。
一开始列出可安装的docker版本号
yum list docker-ce --showduplicates | sort -r
没结果

需要设置镜像仓库。
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
显示:都安装好的
设置稳定版仓库:
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.rep
然后再运行上述命令,
yum list docker-ce --showduplicates | sort -r
可以的,就挑了一个版本安装
sudo yum install docker-ce-24.0.2-1 docker-ce-cli-24.0.2-1 containerd.io
报错

yum clean all
yum makecache
再运行上面的安装特定版本,成功安装
启动docker
systemctl start docker
启动不了,报错
上面的命令可能有些是有用的,但我不清楚哪些有用。
yum update -y
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce
启动docker
systemctl start docker
docker run hello-world
成功!

接下来设置非root启动docker
官方文档
https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user
sudo usermod -aG docker spuser
spuser是用户名
应用更改
newgrp docker
测试
docker run hello-world
成功
接下来在docker中安装 NVIDIA Container Toolkit for GPU support. 我们集群是CentOS7.9,就按官方文档安装。
Setup the repository and the GPG key:
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.repo | sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo
sudo yum-config-manager --enable libnvidia-container-experimental
sudo yum clean expire-cache
sudo yum install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
sudo docker run --rm --runtime=nvidia --gpus all nvidia/cuda:11.6.2-base-ubuntu20.04 nvidia-smi
上面的命令是检查是否成功,命令输入的版本号和自己版本号是不一样的。
我输入上述命令失败后,又使用alphafold教程里的命令
docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi
虽然我的cuda版本是11.2,高于11.0,还是失败。当时以为没装好,又反复找教程卸了重装。
后来发现
sudo docker run --gpus all --rm nvidia/cuda:10.0-base nvidia-smi
输入这个成功,看来检测时也不能用版本太高的命令。
docker build -f docker/Dockerfile -t alphafold .
pip3 install -r docker/requirements.txt
等一两个小时吧,就好了。
有教程改脚本,更改输出目录,但其实运行alphafold时命令里可以添加输出位置,不需要在脚本里改,但我还是改了
cd alphafold/docker
vim alphafold/docker/run_docker.py
output_dir后面改为输出结果的绝对路径
运行官方命令报错,索性用下面这个命令(所以改非管理员权限运行docker改了个寂寞,最后还得管理员才不报错)
sudo python3 /绝对路径alphafold/docker/run_docker.py \
--fasta_paths=/绝对路径/linker.fasta \
--max_template_date=2023-06-09(当天或者当天前一天,我倾向于前一天) \
--model_preset=monomer(多条链的复合物就是multimer) \
--data_dir=/绝对路径/Database \
--gpu_devices=0,1(GPU编号) \
--output_dir=/绝对路径/prediction/test
运行上,会有报错消息,不影响运行

TPU是谷歌创建的专用集成电路,可配合tensorflow使用
rocm是AMD显卡加速
plugin那个可能跟tensorflow有关,不管了。
运行jackhmmer时间久了会报错,断开ssh
client_loop: send disconnect: Connection reset
但是我们服务器不是这样的,就算好几天不运行任务也不会自动断开。只能是脚本运行时出问题所以断开。
另外确实输出了文件,但是不确定是什么时候生成的
使用stat ranked_0.pdb查看生成时间,但系统时间是乱的(换算一下是次日上午八点,但凌晨2点不到就已经断开ssh了),也不能确定。(这个如果有人知道为什么,是否需要解决,希望评论告知,不胜感谢)
为了测试运行是否靠谱,使用colab运行相同序列
AlphaFold.ipynb - Colaboratory (google.com)
This Colab notebook allows you to easily predict the structure of a protein using a slightly simplified version of AlphaFold v2.3.2.
这个版本运行到第五步会出错,不过在jackhmmer这一步进行序列比对时,花费的时间和我在本地进行的相似,1h42min,从而说明jackhmmer运行时间久是正常的。
AlphaFold2.ipynb - Colaboratory (google.com)
ColabFold v1.5.2-patch: AlphaFold2 using MMseqs2,这个可能更轻量化。运行成功了。
值得注意的是,选取预测的结果时,看文件名的rank值,rank0最可信。而不是根据model数,以前我用的都是model5。
比较colab和我本地运行的结果,发现跨膜区基本相似,但都和未发表结构差别不小。
胞外有两部分,一个相对稳定,第二部分取向不定。colab的简化的模型预测的5种结果取向角度范围窄。本地运行的范围宽,而且rank0和colab相比,第二部分灵活区差别非常大,没有重合。根据一个低分辨率的电子云密度来放的话,他们似乎可以分别放进成filp的两个map中。这部分的取向和我凭感觉往密度里搭的完全不同。有一定参考意义,真实什么样子还要靠继续计算电子云密度。
随后又从github issues 区找了一个jackhmmer fail的话题,copy了解决办法提供的fasta文件的一段序列,进行本地运行,确保输入没问题。也运行成功了。

运行没问题,alphafold应该是搭成了。接下来把database拷到另一台集群,再搭建应该快很多。