centos7.9离线安装alphafold2

 git链接:GitHub - google-deepmind/alphafold: Open source code for AlphaFold.

根据github上的安装步骤进行安装。

一、Docker安装(失败)

1、安装docker

2、下载alphafold源码

我是用自己的windows电脑下载的。在windows上安装git,下载后把文件夹压缩成压缩包上传到远程linux上,远程连接我用的是MobaXterm。上传后在linux上解压,解压后的目录如下:

git clone https://github.com/deepmind/alphafold.git

3、下载数据库和模型参数

需要安装aria2c,我在centos上安不上,因为没有yum,源码编译的时候又一直报错,最终决定在windows上下载,然后再上传到服务器上。

1、windows安装aria2c

参考博文http://t.csdnimg.cn/52TPl

进入官网下载,通过链接Release aria2 1.37.0 · aria2/aria2 · GitHub,我下载的版本是64位windows系统

aria2-1.37.0-win-64bit-build1.zip

下载后解压,随后在电脑中创建文件夹aria2c作为其安装路径,比如:F:/software/aria2c,将解压后的文件夹中的aria2c.exe文件复制到新创建的文件夹F:/software/aria2c中,在F:/software/aria2c文件夹中创建如下文件:

  • aria2.conf (配置文件)
  • Aria2.log (日志文件)
  • aria2.session (保存下载进度的会话文件)
  • Run.bat (启动脚本)
  • RunHide.vbs (无界面启动脚本)

在aria2.conf中粘贴如下内容,注意修改文件路径

dir=F:\software\aria2
log=F:\software\aria2\Aria2.log
# 不要缺这句,否则日志文件的大小会爆炸
log-level=warn
# 从会话文件中读取下载任务
input-file=F:\software\aria2\aria2.session
# 在Aria2退出时保存`错误/未完成`的下载任务到会话文件
save-session=F:\software\aria2\aria2.session
# 定时保存会话, 0为退出时才保存, 需1.16.1以上版本, 默认:0
save-session-interval=30

enable-rpc=true
pause=false
rpc-allow-origin-all=true
rpc-listen-all=true
rpc-save-upload-metadata=true
rpc-secure=false

在 Run.bat中粘贴如下内容,保存。

aria2c.exe --conf-path=aria2.conf

保存后,双击Run.bat,如果能看到开启了window的命令行,提示如下信息时说明启动成功了。

[NOTICE] IPv4 RPC: listening on TCP port 6800

添加系统环境变量F:/software/aria2c

2、分析sh文件,下载数据库和模型参数
  • download_all_data.sh:调用其他sh脚本进行下载。
    • AlphaFold parameters对应download_alphafold_params.sh
    • Small BFD对应download_small_bfd.sh
    • BFD对应download_bfd.sh
    • MGnify对应download_mgnify.sh
    • PDB70对应download_pdb70.sh
    • PDB mmCIF files对应download_pdb_mmcif.sh
    • Uniref30对应download_uniref30.sh
    • Uniref90对应download_uniref90.sh
    • UniProt对应download_uniprot.sh
    • PDB SeqRes对应download_pdb_seqres.sh
  • download_alphafold_params.sh:
    • 下载压缩包(5.2G)
      • 创建文件夹params
      • 在cmd中使用命令行
        aria2c -d G:\database\params\ https://storage.googleapis.com/alphafold/alphafold_params_2022-12-06.tar
  • download_small_bfd.sh
    •  下载压缩包(9.6G)
      • 创建文件夹small_bfd
      • 在cmd中使用命令行
        aria2c -d G:\database\small_bfd\ https://storage.googleapis.com/alphafold-databases/reduced_dbs/bfd-first_non_consensus_sequences.fasta.gz
  • download_bfd.sh:
    • 下载压缩包(271G)
      • 创建文件夹bfd
      • 在cmd中使用命令行
        aria2c -d G:\database\bfd\ https://storage.googleapis.com/alphafold-databases/casp14_versions/bfd_metaclust_clu_complete_id30_c90_final_seq.sorted_opt.tar.gz
  • download_mgnify.sh
    •  下载压缩包
      • 创建文件夹mgnify(67G)
      • 在cmd中使用命令行
        aria2c -d G:\database\mgnify\ https://storage.googleapis.com/alphafold-databases/v2.3/mgy_clusters_2022_05.fa.gz
    • 使用pushd和popd命令进行切换目录,使用gunzip解压缩
       
  • download_pdb70.sh
    •  下载压缩包(19G)
      • 创建文件夹pdb70
      • 在cmd中使用命令行
        aria2c -d G:\database\pdb70\ http://wwwuser.gwdg.de/~compbiol/data/hhsuite/databases/hhsuite_dbs/old-releases/pdb70_from_mmcif_200401.tar.gz
  • download_pdb_mmcif.sh
    • 在linux服务器中
      • 创建文件夹pdb_mmcif及pdb_mmcif/raw及pdb_mmcif/mmcif_files
      • 使用raync远程同步数据至文件夹raw中
        rsync --recursive --links --perms --times --compress --info=progress2 --delete --port=33444 \
          rsync.rcsb.org::ftp_data/structures/divided/mmCIF/ \
          /data/home/wangjiuru/afdb/pdb_mmcif/raw
      • 解压文件夹raw中的.gz文件
        find /data/home/wangjiuru/afdb/pdb_mmcif/raw/ -type f -iname "*.gz" -exec gunzip {} +
      • 删除文件夹raw中的空文件
        find /data/home/wangjiuru/afdb/pdb_mmcif/raw -type d -empty -delete
      • 把raw文件夹的子文件夹中的.cif文件移动到文件夹pdb_mmcif/mmcif_files中
      •  删除文件夹raw中的空文件
        find /data/home/wangjiuru/afdb/pdb_mmcif/raw -type d -empty -delete
    • 在Windows中
      • 下载文件obsolete.dat(149kb)
        • 在cmd中使用命令行
          aria2c -d G:\database\pdb_mmcif\ https://files.wwpdb.org/pub/pdb/data/status/obsolete.dat
  •  download_uniref30.sh
    •  下载压缩包(52G)
      • 创建文件夹uniref30
      • 在cmd中使用命令行
        aria2c -d G:\database\uniref30\ https://storage.googleapis.com/alphafold-databases/v2.3/UniRef30_2021_03.tar.gz
  • download_uniref90.sh
    •  下载压缩包(40G)
      • 创建文件夹uniref90
      • 在cmd中使用命令行
        aria2c -d G:\database\uniref90\ https://ftp.ebi.ac.uk/pub/databases/uniprot/uniref/uniref90/uniref90.fasta.gz
    • 使用pushd和popd命令进行切换目录,使用gunzip解压缩
  • download_uniprot.sh
    • 下载两个压缩包(trembl58G和sprot87M)
      • 创建文件夹uniprot
      • 在cmd中使用命令行
        aria2c -d G:\database\uniprot\ https://ftp.ebi.ac.uk/pub/databases/uniprot/current_release/knowledgebase/complete/uniprot_trembl.fasta.gz
        aria2c -d G:\database\uniprot\ https://ftp.ebi.ac.uk/pub/databases/uniprot/current_release/knowledgebase/complete/uniprot_sprot.fasta.gz
        
    • 使用pushd和popd命令进行切换目录,使用gunzip解压缩
    • 将将解压后的两个数据库文件(uniprot_trembl.fasta和uniprot_sprot.fasta)合并,并重命名为uniprot.fasta,删除原来的两个文件
      cat "${ROOT_DIR}/${SPROT_UNZIPPED_BASENAME}" >> "${ROOT_DIR}/${TREMBL_UNZIPPED_BASENAME}"
      mv "${ROOT_DIR}/${TREMBL_UNZIPPED_BASENAME}" "${ROOT_DIR}/uniprot.fasta"
      rm "${ROOT_DIR}/${SPROT_UNZIPPED_BASENAME}"
  • download_pdb_seqres.sh
    •  下载文件pdb_seqres.txt(277M)
      • 创建文件夹pdb_seqres
      • 在cmd中使用命令行
        aria2c -d G:\database\pdb_seqres\ https://files.wwpdb.org/pub/pdb/derived_data/pdb_seqres.txt
        
    • 去重
      grep --after-context=1 --no-group-separator '>.* mol:protein' "${ROOT_DIR}/pdb_seqres.txt" > "${ROOT_DIR}/pdb_seqres_filtered.txt"
      mv "${ROOT_DIR}/pdb_seqres_filtered.txt" "${ROOT_DIR}/pdb_seqres.txt"

3、上传文件到服务器
  • 解压压缩包,并删除压缩包(这里报错了,说我的压缩包不完整,解压不出来。。。)
  • 我在windows浏览器上使用最原始的方法开始下载了... 用了迅雷加速和IDM加速,下了好几天。

4、使用docker创建alphafold镜像

失败。。这块是要联网吗?我的服务器连不了网,这个方法死掉了。

二、Conda安装 

参考文档:【1】民间github 、【2】民间CSDN1(救我一命的大佬)、【3】民间CSDN2

 1、使用上文中下载的数据库

文件目录如下:图源参考文档3

 2、配置conda环境

思路:从一台可以联网的linux服务器B上创建环境,安装依赖,随后再把conda环境打包到这个不能联网的服务器A上。

以下步骤1、2、均在可以联网的虚拟机(centos7.9)B上进行

1、虚拟环境创建
conda create -n alphafold2 python==3.8
conda activate alphafold2 
2、安装依赖包

我的服务器A上已经已经提前装好cuda和cudnn了(这是刚开始能联网的时候装的,离线安装自还需自行百度...),安装版本如下:cuda 12.0和cudnn 8。知道这两个版本之后才可以安装cudatoolkit、jax和jaxlib这三个依赖包,因为他们需要版本对应。

conda install -y -c conda-forge openmm==7.5.1 cudatoolkit==11.3 pdbfixer
conda install -y -c bioconda hmmer hhsuite==3.3.0 kalign2
pip install absl-py==1.0.0 biopython==1.79 chex==0.0.7 dm-haiku==0.0.9 dm-tree==0.1.6 immutabledict==2.0.0 ml-collections==0.1.0 numpy==1.21.6 pandas==1.3.4 protobuf==3.20.1 scipy==1.7.0 tensorflow-cpu==2.9.0

安装jax和jaxlib,在https://storage.googleapis.com/jax-releases/jax_cuda_releases.html找到和自己的cuda相对应的版本(一定要版本对应!!cudnn88和89小数点后都要对应,否则会报错),我这个版本报错了,后面会讲,最后我安装的是0.4.11版本

pip install --upgrade --no-cache-dir jax==0.4.12 jaxlib==jaxlib-0.4.12+cuda12.cudnn89 -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html
3、下载alphafold源文件

源命令:

wget https://github.com/deepmind/alphafold/archive/refs/tags/v2.3.1.tar.gz && tar -xzf v2.3.1.tar.gz && export alphafold_path="$(pwd)/alphafold-2.3.1"

我是在windows上下载的,https://github.com/deepmind/alphafold/archive/refs/tags/v2.3.1.tar.gz

,然后上传到服务器A上解压。

4、下载化学性质到common文件夹

源命令:

wget -q -P $alphafold_path/alphafold/common/ https://git.scicore.unibas.ch/schwede/openstructure/-/raw/7102c63615b64735c4941278d92b554ec94415f8/modules/mol/alg/src/stereo_chemical_props.txt

我也是在windows上下载的,https://git.scicore.unibas.ch/schwede/openstructure/-/raw/7102c63615b64735c4941278d92b554ec94415f8/modules/mol/alg/src/stereo_chemical_props.txt,然后上传到服务器A上common文件夹中。

5、应用openmm补丁
cd ~/anaconda3/envs/alphafold/lib/python3.8/site-packages/ && patch -p0 < $alphafold_path/docker/openmm.patch

6、测试conda环境是否配置成功

运行run_alphafold_test.py,出现如下,成功!(hh但不是完全成功,因为运行正式的脚本还是会报错,老铁真的救命

3、运行alphafold2

1、运行run_alphafold.sh

这里下载run_alphafold.sh文件,和run_alphafold.py放在一个目录下

对应的参数如下:

Usage: run_alphafold.sh <OPTIONS>
Required Parameters:
-d <data_dir>         Path to directory of supporting data
-o <output_dir>       Path to a directory that will store the results.
-f <fasta_paths>      Path to FASTA files containing sequences. If a FASTA file contains multiple sequences, then it will be folded as a multimer. To fold more sequences one after another, write the files separated by a comma
-t <max_template_date> Maximum template release date to consider (ISO-8601 format - i.e. YYYY-MM-DD). Important if folding historical test sets
Optional Parameters:
-g <use_gpu>          Enable NVIDIA runtime to run with GPUs (default: true)
-r <run_relax>        Whether to run the final relaxation step on the predicted models. Turning relax off might result in predictions with distracting stereochemical violations but might help in case you are having issues with the relaxation stage (default: true)
-e <enable_gpu_relax> Run relax on GPU if GPU is enabled (default: true)
-n <openmm_threads>   OpenMM threads (default: all available cores)
-a <gpu_devices>      Comma separated list of devices to pass to 'CUDA_VISIBLE_DEVICES' (default: 0)
-m <model_preset>     Choose preset model configuration - the monomer model, the monomer model with extra ensembling, monomer model with pTM head, or multimer model (default: 'monomer')
-c <db_preset>        Choose preset MSA database configuration - smaller genetic database config (reduced_dbs) or full genetic database config (full_dbs) (default: 'full_dbs')
-p <use_precomputed_msas> Whether to read MSAs that have been written to disk. WARNING: This will not check if the sequence, database or configuration have changed (default: 'false')
-l <num_multimer_predictions_per_model> How many predictions (each with a different random seed) will be generated per model. E.g. if this is 2 and there are 5 models then there will be 10 predictions per input. Note: this FLAG only applies if model_preset=multimer (default: 5)
-b <benchmark>        Run multiple JAX model evaluations to obtain a timing that excludes the compilation time, which should be more indicative of the time required for inferencing many proteins (default: 'false')

其中 -d、-o、-f、-t 为必须参数

运行示例:output文件夹保存输出文件,input文件夹为输入文件xxx.fasta

默认在gpu运行。

bash run_alphafold.sh -d ../afdb -o ./output -f ./input/1J01.fasta -t 2024-01-26

1J01.fasta文件 

>1J01_1|Chain A|test
ATTLKEAADGAGRDFGFALDPNRLSEAQYKAI
 

2、一堆报错
报错1. No module named 'openmm'
Traceback (most recent call last):
  File "/home/mrc/project/alphafold2/alphafold-main/run_alphafold.py", line 41, in <module>
    from alphafold.relax import relax
  File "/home/mrc/project/alphafold2/alphafold-main/alphafold/relax/relax.py", line 18, in <module>
    from alphafold.relax import amber_minimize
  File "/home/mrc/project/alphafold2/alphafold-main/alphafold/relax/amber_minimize.py", line 25, in <module>
    from alphafold.relax import cleanup
  File "/home/mrc/project/alphafold2/alphafold-main/alphafold/relax/cleanup.py", line 23, in <module>
    from openmm import app
ModuleNotFoundError: No module named 'openmm'

 解决

修改cleanup.py文件

将from openmm xxx改为from simtk.openmm xxx

随后运行,amber_minimize.py也报同样的错误,找到相应的位置,修改方法如上。

报错2.Unknown command line flag 'run_relax'
FATAL Flags parsing error: Unknown command line flag 'run_relax'
Pass --helpshort or --helpfull to see help on flags.

这个报错如果严格执行上述步骤,可能不会遇到。

报错是因为我把run_alphafold.sh放错地方了,我放在了在github官方下载的alphafold源代码里面了,这个是最新版的,代码有所改动。

如果出现报错,需要检查一下,要使用2.3.1版本的alphafold的源码才可以。

报错3. 

jaxlib.xla_extension.XlaRuntimeError: FAILED_PRECONDITION: DNN library initialization failed. Look at the errors above for more details.

这个报错就是因为jax版本不对应导致的。

这个运行了一个多小时才报错!!!!!我都以为我成功了,结果一看,又报错了!!!!!!!!

向上检查报错内容发现:

我的cudnn是8.8.0,我安装的是8.9.1的jaxlib。啊啊啊啊啊啊啊啊啊沙了我吧。

2024-01-26 21:19:58.545595: E external/xla/xla/stream_executor/cuda/cuda_dnn.cc:427] 
Loaded runtime CuDNN library: 8.8.0 but source was compiled with: 8.9.1.  
CuDNN library needs to have matching major version and equal or higher minor version. 
If using a binary install, upgrade your CuDNN library.  If building from sources, 
make sure the library loaded at runtime is compatible with the version specified 
during compile configuration.

解决:从服务器B上重新联网安装,发现jaxlib0.4.12没有对应的cudnn88只有cudnn89,于是我重新安装了jaxlib0.4.11

pip install --upgrade --no-cache-dir jax==0.4.11 jaxlib==0.4.11+cuda12.cudnn88 -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html

安装好后,把conda环境中的这四个文件夹打包,拷贝到服务器A的conda环境下(先删除原来的4个文件夹,避免有旧版本的残留)

还是报错。

我在虚拟机上重新创建了一个虚拟环境,严格按照参考文档1和2的步骤进行安装,安装成功后把环境拷贝到服务器上。

因为知道是jax报错的,这里学到了一个方法,不需要跑一遍脚本,直接验证jax是否可以使用gpu。

在python中运行,如果能够输出正确的结果,说明jax正常了。

import jax.numpy as np
np.ones(5)

然而这里又报错了。

报错4:

大致意思是cudnn版本是8.8但jax是从8.9构建的,好像跟报错3是一个,就当是报错3吧,这个我忘了截图了。

但是,我安装jax的时候安装的就是8.8,不知道为什么一直报这个错误。随后我找到了一个和我相似的报错解决,他的也是cudnn版本不匹配。

解决方法:

在虚拟机的conda环境上执行如下命令,然后再把环境拷贝到服务器上:

pip install --upgrade "jax[cuda12_pip]" -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html

这个时候我看到,它给我的jax和jaxlib换了一个版本,然后又安装了好多和cuda、cudnn相关的东西。没事,再次执行,

 在python中运行

import jax.numpy as np
np.ones(5)

这时候正常了!!!!

开始跑脚本,我以为能够成功了,然而道阻且长,几个小时后又被现实无情的打脸。

又报错了。

报错5.
I0228 11:03:40.291312 140258156037952 amber_minimize.py:418] There is no registered Platform called "CUDA"
I0228 11:03:40.291552 140258156037952 amber_minimize.py:408] Minimizing protein, attempt 98 of 100.
I0228 11:03:40.396074 140258156037952 amber_minimize.py:69] Restraining 240 / 473 particles.
I0228 11:03:40.396322 140258156037952 amber_minimize.py:418] There is no registered Platform called "CUDA"
I0228 11:03:40.396551 140258156037952 amber_minimize.py:408] Minimizing protein, attempt 99 of 100.
I0228 11:03:40.497203 140258156037952 amber_minimize.py:69] Restraining 240 / 473 particles.
I0228 11:03:40.497421 140258156037952 amber_minimize.py:418] There is no registered Platform called "CUDA"
I0228 11:03:40.497671 140258156037952 amber_minimize.py:408] Minimizing protein, attempt 100 of 100.
I0228 11:03:40.599871 140258156037952 amber_minimize.py:69] Restraining 240 / 473 particles.
I0228 11:03:40.600096 140258156037952 amber_minimize.py:418] There is no registered Platform called "CUDA"
Traceback (most recent call last):
  File "/data/home/wangjiuru/alphafold-2.3.1/run_alphafold.py", line 432, in <module>
    app.run(main)
  File "/data/home/wangjiuru/anaconda3/envs/alphaf2/lib/python3.8/site-packages/absl/app.py", line 312, in run
    _run_main(main, args)
  File "/data/home/wangjiuru/anaconda3/envs/alphaf2/lib/python3.8/site-packages/absl/app.py", line 258, in _run_main
    sys.exit(main(argv))
  File "/data/home/wangjiuru/alphafold-2.3.1/run_alphafold.py", line 408, in main
    predict_structure(
  File "/data/home/wangjiuru/alphafold-2.3.1/run_alphafold.py", line 243, in predict_structure
    relaxed_pdb_str, _, violations = amber_relaxer.process(
  File "/data/home/wangjiuru/alphafold-2.3.1/alphafold/relax/relax.py", line 62, in process
    out = amber_minimize.run_pipeline(
  File "/data/home/wangjiuru/alphafold-2.3.1/alphafold/relax/amber_minimize.py", line 476, in run_pipeline
    ret = _run_one_iteration(
  File "/data/home/wangjiuru/alphafold-2.3.1/alphafold/relax/amber_minimize.py", line 420, in _run_one_iteration
    raise ValueError(f"Minimization failed after {max_attempts} attempts.")
ValueError: Minimization failed after 100 attempts.

咋又识别不了cuda了呀。

于是我尝试用cpu跑一遍试试。在命令后面加上-g false

bash run_alphafold.sh -d ../afdb -o ./output -f ./input/1J01.fasta -t 2024-01-26 -g false

等待。。

报错6.cpu的报错

是:

There is no registered Platform called "CPU"

好烦好烦好烦,查了一堆,我感觉可能是因为迁移环境导致的路径问题。。

验证:

from simtk.openmm import *
print(version.openmm_library_path)
//这里输出了虚拟机上的路径是绝对路径
print(Platform.getDefaultPluginsDirectory())
//这里输出了一个不存在的路径/usr/local/openmm/lib/pligins

我修改了openmm_library_path,修改为服务器上正确的路径,再跑一遍cpu脚本。

修改方法:

修改文件:xxx/anaconda3/envs/alphaf2/lib/python3.8/site-packages/simtk/openmm/version.py中的变量openmm_library_path为正确的路径。保存。重新进入python解释器,输出openmm_library_path为正确路径。

等待。。。

3、成功了!!!!!!!!!!!!!!!!!啊

复合物预测也成功了。用时3h5min(两条链,每个链31个残基)

>1J01M_1|Chain A
SEAQYKAIADSEFNLVVAENAMKWDATEPSQ
>1J01M_1|Chain B
SEAQYKAIADSEFNLVVAENAMKWDATEPSQ
 

预测复合物的命令是:

bash run_alphafold.sh -d ../afdb -o ./output -f ./input/1J01.fasta -t 2024-01-26 -e false -m multimer -l 1 -g false 

再次尝试gpu,

报错7:

先是:

 E external/xla/xla/stream_executor/cuda/cuda_driver.cc:268] failed call to cuInit: CUDA_ERROR_NO_DEVICE: no CUDA-capable device is detected

然后跑完MSA之后,又报错,前22个先是,第98个也是

Error compiling program : nvrtc: error: invalid value for --gpu-architecture (-arch)

然后后面77个是

No compatible CUDA device is available

完整的如下: 

I0228 17:55:49.523613 140089781139264 amber_minimize.py:408] Minimizing protein, att         empt 22 of 100.
I0228 17:55:49.627882 140089781139264 amber_minimize.py:69] Restraining 240 / 473 pa         rticles.
I0228 17:55:52.869982 140089781139264 amber_minimize.py:418] Error compiling program         : nvrtc: error: invalid value for --gpu-architecture (-arch)

I0228 17:55:52.870923 140089781139264 amber_minimize.py:408] Minimizing protein, att         empt 23 of 100.
I0228 17:55:52.975311 140089781139264 amber_minimize.py:69] Restraining 240 / 473 pa         rticles.
I0228 17:55:56.630865 140089781139264 amber_minimize.py:418] Error compiling program         : nvrtc: error: invalid value for --gpu-architecture (-arch)

I0228 17:55:56.631802 140089781139264 amber_minimize.py:408] Minimizing protein, att         empt 24 of 100.
I0228 17:55:56.733399 140089781139264 amber_minimize.py:69] Restraining 240 / 473 pa         rticles.
I0228 17:55:57.405121 140089781139264 amber_minimize.py:418] No compatible CUDA devi         ce is available
I0228 17:55:57.406468 140089781139264 amber_minimize.py:408] Minimizing protein, att         empt 25 of 100.
I0228 17:55:57.600473 140089781139264 amber_minimize.py:69] Restraining 240 / 473 pa         rticles.
I0228 17:55:58.089791 140089781139264 amber_minimize.py:418] No compatible CUDA devi         ce is available
I0228 17:55:58.091063 140089781139264 amber_minimize.py:408] Minimizing protein, att         empt 26 of 100.
I0228 17:55:58.241294 140089781139264 amber_minimize.py:69] Restraining 240 / 473 pa         rticles.
I0228 17:55:58.735364 140089781139264 amber_minimize.py:418] No compatible CUDA devi         ce is available
I0228 17:55:58.736315 140089781139264 amber_minimize.py:408] Minimizing protein, att         empt 27 of 100.
I0228 17:55:58.839019 140089781139264 amber_minimize.py:69] Restraining 240 / 473 pa         rticles.
I0228 17:55:59.514294 140089781139264 amber_minimize.py:418] No compatible CUDA devi         ce is available
....
alphafold-2.3.1/alphafold/relax/amber_minimize.py", line        420, in _run_one_iteration
    raise ValueError(f"Minimization failed after {max_attempts} attempts.")
ValueError: Minimization failed after 100 attempts.

解决:On docker after some time: No compatible CUDA device is available · Issue #403 · google-deepmind/alphafold · GitHub

第一步:先把gpu改为默认计算模式(我的应该原本就是)

nvidia-smi -c 0

 

第二步: 

在命令后面加一个--gpu_devices=0就可以了,回复里面说可能是因为有多个gpu存在,如果不指定gpu序列号,可能会把任务分发给多个gpu处理,但是openmm那里默认没有设置多个gpu序列号?导致找不到gpu,我理解的貌似是这个意思?(欢迎各位大佬指教)因为我看还有一个解决方法是在openmm里添加gpu设置。

但是,评论区说的是不能在一个gpu上运行两个预测程序,意思是它需要独自享用这块gpu吗?可是我运行的时候,这块gpu上还有其他程序在跑,也成功了。有点不太明白,后面再继续探索吧,然后再更新。

完整的命令是:

bash run_alphafold.sh -d ../afdb -o ./output -f ./input/1J01.fasta -t 2024-01-26 --gpu_device=0

感动天感动地,本来没有报希望,吃完饭回来一看服务器,成功了!!!!!!!!!!!!运行时间1h15min,感觉前面用cpu做MSA的时候太耗费时间了,后面模型预测很快。

接下来预测复合物。期待。

用时2h46min,其中跑模型2h。

(更新一下)

好像没成功,今天检查了一下,发现根本没在gpu上跑...往上一翻,原来报错已经出现在了第一行,他只是顺利运行了,但检测到没有gpu设备,自动转为cpu,不得不说,你小子挺智能的。

继续报错。

报错8.

E external/xla/xla/stream_executor/cuda/cuda_driver.cc:268] failed call to cuInit: CUDA_ERROR_NO_DEVICE: no CUDA-capable device is detected
I0301 09:50:39.821002 140258733320000 xla_bridge.py:603] Unable to initialize bac        kend 'cuda': FAILED_PRECONDITION: No visible GPU devices.

GPU驱动不对,好烦啊啊啊啊啊啊啊啊不安了先,过两天再说。 

输出

单体

输出包括:计算的MSA、非松弛结构、松弛结构、排序结构、原始模型输出、预测元数据和部分计时

输出文件结构如下:

每个输出文件的内容:

-features.pkl——一个pickle文件,包含模型用来生成结构的输入特征numpy数组。

-unrelaxed_model_*.pdb——模型输出,包含预测结构的pdb格式文本文件。

-relaxed_model_*.pdb——在对非松弛结构预测执行 Amber 松弛过程后,包含预测结构的 PDB 格式文本文件。

-ranked_*.pdb——按模型置信度(pLDDT)重新排序后包含预测结构的 PDB 格式文本文件。 这里的ranked_i.pdb包含第(i + 1)个最高置信度的预测(ranked_0.pdb包含最高的置信度)。 如果 --models_to_relax=all 表示所有排名结构都会松弛。 如果--models_to_relax=best,那么只有ranked_0.pdb是松弛的(其余的都是不松弛的)。 如果--models_to_relax=none,那么排名的结构都是不松弛的。

-ranking_debug.json——JSON 格式文本文件,包含一个映射:模型名称和用于执行模型排名的 pLDDT 值。

-relax_metrics.json——包含松弛指标的 JSON 格式文本文件,例如remaining violations。

-timings.json——JSON 格式文本文件,包含运行 AlphaFold 管道每个部分所需的时间。

-msas/——包含描述用于构建输入 MSA 的各种遗传工具命中的文件的目录。

-result_model_*.pkl——一个 pickle 文件,包含由模型直接生成的各种 NumPy 数组的嵌套字典。 除了结构模块的输出之外,还包括辅助输出(用于可视化),例如:

        Distograms(distogram/logits 表示形状为 [N_res, N_res, N_bins] 的 NumPy 数组,distogram/bin_edges表示对bin的定义)。
        每个残基 pLDDT 分数(plddt 表示为形状为 [N_res] 的 NumPy 数组,可能值的范围为 0 到 100,其中 100 表示最有信心)。 这可以用于识别以高置信度预测的序列区域,或者当对残基进行平均时作为每个目标的整体置信度得分。
        仅在使用 pTM 模型时出现:预测的 TM 分数(ptm 字段包含标量)。 作为全局叠加指标的预测器,该分数还旨在评估模型在整体域包装中是否有信心。
        仅在使用 pTM 模型时出现:预测的成对对齐误差(predicted_aligned_error 包含形状为 [N_res, N_res] 的 NumPy 数组,可能值的范围从 0 到 max_predicted_aligned_error,其中 0 表示最有信心)。这可以用于结构内域包装置信度的可视化。

pLDDT存储在输出 PDB 文件的 B 因子字段中(尽管与 B 因子不同,pLDDT 越高越好,因此在用于分子替换等任务时必须小心)。

  • 22
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值