当前位置: 首页 > article >正文

ESMFold 安装教程

常见问题:我们经常安装失败的原因是,esmfold需要3.7版本的python,1.0.0的openfold,11.3的CUDA,1.12的torch,0.13的torchvision,0.12的torchaudio......通常情况下会因为一个包的版本不匹配而造成安装的失败,安装教程如下:

(一)安装esmfold的基础环境

1、将以下内容保存为esmfold_conda_environment.yml

name: esmfold
channels:
 - conda-forge
 - bioconda
 - pytorch
dependencies:
 - conda-forge::python=3.7
 - conda-forge::setuptools=59.5.0
 - conda-forge::pip
 - conda-forge::openmm=7.5.1
 - conda-forge::pdbfixer
 - conda-forge::cudatoolkit==11.3.*
 - conda-forge::cudatoolkit-dev==11.3.*
 - conda-forge::einops==0.6.1
 - conda-forge::fairscale
 - conda-forge::omegaconf
 - conda-forge::hydra-core
 - conda-forge::pandas
 - conda-forge::pytest
 - bioconda::hmmer==3.3.2
 - bioconda::hhsuite==3.3.0
 - bioconda::kalign2==2.04
 - pytorch::pytorch=1.12.*

2、创建esmfold的虚拟环境

conda env create -f esmfold_conda_environment.yml

安装结果如下:

可以检查安装的版本号是否对应:

conda activate esmfold
conda list

3、将以下内容保存为esmfold_pip_environment.yml

biopython==1.79
deepspeed==0.5.9
dm-tree==0.1.6
ml-collections==0.1.0
numpy==1.21.2
PyYAML==5.4.1
requests==2.26.0
scipy==1.7.1
tqdm==4.62.2
typing-extensions==3.10.0.2
pytorch_lightning==1.5.10
wandb==0.12.21
biotite==0.39.0
matplotlib
joblib

4、使用pip安装所需依赖

pip install -r esmfold_pip_environment.yml

安装结果如下: 

(二)esmfold的安装

注意:按照官网教程,目前还需要从Github下载并安装三个主要的包,分别为esm,dllogger,openfold。运行esmfold需要安装openfold 1.0.0,如果直接使用pip install openfold或者使用github作者给予的命令,会安装成2.0.0,会造成程序的错误,因此主要解决的一个问题就是需要手动安装1.0.0版本的openfold,过程中遇到的其他问题也会一一解决。

安装fair-esm、esmfold以及dllogger,这三个包是可以正常进行安装的,第一行和第二行都是安装esm包,可以二选一执行

pip install fair-esm  # latest release,OR
pip install git+https://github.com/facebookresearch/esm.git  # bleeding edge, current repo main branch
pip install "fair-esm[esmfold]"
# OpenFold and its remaining dependency
pip install 'dllogger @ git+https://github.com/NVIDIA/dllogger.git'

(三)openfold的安装 

1、首先按照esm官方提供的教程,我们应该执行以下命令进行安装,但是该命令会报错,不过报错信息中会有提示,如下图所示

pip install 'openfold @ git+https://github.com/aqlaboratory/openfold.git@4b41059694619831a7db195b7e0988fc4ff3a307'

2、按照提示信息下载指定版本的openfold

git clone --filter=blob:none --quiet https://github.com/aqlaboratory/openfold.git ./openfold
cd ./openfold/
git rev-parse -q --verify 'sha^4b41059694619831a7db195b7e0988fc4ff3a307'
git fetch -q https://github.com/aqlaboratory/openfold.git 4b41059694619831a7db195b7e0988fc4ff3a307
git checkout -q 4b41059694619831a7db195b7e0988fc4ff3a307

执行完上述操作后,我们可以使用nano或者vim文本编辑器去查看openfold/setup.py里的version由原来的2.0.0变成了1.0.0,说明指定版本openfold下载成功

3、pip以可编辑模式安装openfold包,安装过程也会遇到各种各样的问题,我们逐步解决

pip install -e . 

(1)问题一:mkl版本问题,报错信息如下

解决方案:对mkl进行降级,首先卸载当前版本的mkl

conda uninstall mkl

注意:在卸载mkl的过程中会移除一些包,也会对一些包进行降级,尤其是这里把pytorch从GPU版本变成了CPU版本的了 ,所以后续还需要重新安装GPU版的pytorch!

然后在安装2018版的mkl,如果过程报类似这样的错误的话,“PackagesNotFoundError: The following packages are not available from current channels:” 需要对conda进行换源,可以参考其他博客:

conda install mkl=2018 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/linux-64/

安装好之后可以再次尝试安装openfold,不出意外的话就会报第二个错误

pip install -e . 

(2)问题二:No CUDA runtime is found

解决方案:需要安装cuda版本的torch,执行以下指令用pip或者conda进行安装

pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu113
conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.3 -c pytorch

安装好之后可以再次尝试安装openfold,这次应该可以安装成功,如果显示以下信息,说明安装成功。

pip install -e . 

注意:使用上述指令是以“开发模式”(editable mode,即 pip install -e .)安装 openfold,它在环境中仅创建了一个指向源代码目录的链接(.egg-link 文件)。如果你是在系统root下的conda进行安装,并且源代码目录(例如 /root/openfold)对其他用户不可见或没有读取权限,那么当其他用户激活同一 conda 环境并运行 esm-fold 时,就会找不到 openfold 模块,从而报错 “No module named 'openfold'”。 

解决方法:选择以普通的形式进行安装,这样 openfold 的包会被复制到 conda 环境的 site-packages 目录中,而不是仅仅建立一个链接,其他用户无需访问源代码目录。

pip install .

(四)运行测试

1、查看使用说明
esm-fold -h

参数说明: 

usage: esm-fold [-h] -i FASTA -o PDB [-m MODEL_DIR]
                [--num-recycles NUM_RECYCLES]
                [--max-tokens-per-batch MAX_TOKENS_PER_BATCH]
                [--chunk-size CHUNK_SIZE] [--cpu-only] [--cpu-offload]

  • -h, --help:显示帮助信息并退出,列出所有可用参数及说明。

  • -i FASTA, --fasta FASTA :输入参数,指定要折叠的蛋白质序列所在的 FASTA 文件路径。

  • -o PDB, --pdb PDB:输出参数,指定折叠生成的 PDB 文件(结构文件)存放的目录。

  • -m MODEL_DIR, --model-dir MODEL_DIR:预训练模型数据目录的父路径。esm-fold 会在该目录下查找预训练的 ESM 模型文件。

  • --num-recycles NUM_RECYCLES:指定模型运行时进行“recycle”(循环迭代)的次数。默认值为训练时所用的次数(通常是 4 次)。循环迭代次数越多,理论上预测的结构可能更准确,但同时计算量也会增大。

  • --max-tokens-per-batch MAX_TOKENS_PER_BATCH:设定每个 GPU 前向传播中最大允许的 token 数量。这个参数用于将较短的序列组合到同一个 batch 中,便于批量预测。如果遇到内存不足问题,可以尝试降低该值以减少一次性计算的 token 数量。

  • --chunk-size CHUNK_SIZE:对轴向注意力计算进行分块处理,从而降低内存占用。默认注意力计算内存复杂度为 O(L²),使用 chunking 后可以降到 O(L)。chunk-size 越低,内存占用越少,但运行速度可能降低。常用的建议值为 128、64 或 32。如果不设置,则采用默认计算策略。

  • --cpu-only:指定仅使用 CPU 进行计算(不使用 GPU)。在没有 GPU 或需要调试 CPU 模式时使用。

  • --cpu-offload:启用 CPU offloading,即将部分计算或数据从 GPU 转移到 CPU,以减轻 GPU 内存压力。这在 GPU 内存不足时比较有用,但可能会导致速度变慢。

 2、执行测试

(1)创建测试文件夹

mkdir test

(2)编辑fasta文件,写入测试序列

vim test.fasta

 >test_0
MNKTRVAINGFGRIGRMVFRQAILDEQLEVVAINASYPAETLAHLIKYDSVHGIFDKEVKAVNEGIMISDKKIKLVNSRVPENLPWDELNIDIVIEATGKFKTKESAGGHIRAGAKKVVITAPGKEVDQTIVMGVNEGVYNPEKDDVISNASCTTNCLAPIVKIIDDHFSIENGLMTTVHAFTNDQKNIDNPHKDLRRARGCTQSIIPTSTGAAKALGEVIPHLNGRLHGMALRVPTPNVSLVDLVVDVKNSISVEEVNHIFKQAQETDFKGIVSYSEEPLVSIDYTTTDFSAVVDGLSTMVMDNHKVKVLAWYDNEWGYSKRVIDLTKYVGSYLYQKQAQIS
>test_1
MSVKVAINGFGRIGRMVFRRAISDGGLDIAAINASYPAETLAHLIKYDTTHGRFDGEVIPEDGSLIVNGKKILLLNSRDPKELPWGSLRIDIVIEATGKFNSRDRAAAHLEAGAAKVILTAPGKDEDITIVMGVNEERLDIDRHAIISNASCTTNCLAPVVKVLDEQFGIVNGLMTTVHSYTNDQRNIDNPHKDLRRARACAQSIIPTTTGAAKALSLVLPHLKGKLHGMALRVPTPNVSLVDLVADIHRDASVHEINEAFIAASQGNLAGILDFTSEPLVSADFNTNPHSAIIDGLSTMVMGRNKVKILAWYDNEWGYSSRVVDLTKLVAAEIHEKLRVKAV
>test_2
MKLKVLINGAGRIGKAVLKQLLNIEDFEIVSINDINPYIENIVYSINYDSTYGKFDDKFKIIDNNFIQNSKAKIKILNHNSLIDIDLKDIDIIIDASGKKEDIKLLEKLPVKAIFLTHPNRNAHINLVLGVNENKINPNIHKIISTSSCNATSLLPALKIIDDSKEILCGDIVTIHPLLNHQRVLDGNYVGSATRDVDLNFEFGRSSTQNIIPSHTTTIKACSYVLPKFNSELISSNSLRVPTDTVGAINVTLFTKQASNKDEIIDIFMNFEKNQKFPIVLNNFEPLVSSDFKKEKYTTIIDHRYLEVKNNMIKLLLWYDNEWGYASKVVETLRYYKSICSQI

(3)esm-fold进行结构预测

# 使用esm-fold预测示例蛋白质序列的结构
esm-fold -i test.fasta -o test_output/ -m /public/esm --num-recycles 4

 输出结果如下,包括pLDDT信息和pTM的信息,以及每个结构建模的时间:

参考链接:

Ubuntu22.04+GPU4090 的 esmfold+openfold 安装全流程_openfold安装-CSDN博客


http://www.kler.cn/a/590954.html

相关文章:

  • (6)用于无GPS导航的Nooploop
  • 音视频处理的“瑞士军刀”与“积木”:FFmpeg 与 GStreamer 的深度揭秘
  • leetcode236-二叉树的公共祖先
  • Django REST Framework中的序列化器类和视图类
  • 基于深度学习的OCR+NLP,医疗化验单智能识别方案
  • MPC算法路径跟踪_Matlab实现
  • HTML基础内容2
  • C#运算符与表达式:从入门到游戏伤害计算实践
  • debian12.9 kde切到x11安装搜狗输入法遇到的问题
  • Docker Compose 和 Kubernetes(K8s)对比
  • 工作记录 2017-02-03
  • redis十大应用数据类型具体使用及其应用
  • 蓝桥杯每日五题第一日
  • 每日学习Java之一万个为什么(待补充)
  • LeetCode算法题(Go语言实现)_04
  • 【AVRCP】蓝牙协议栈深度解析:AVCTP互操作性核心机制与实现细节
  • 安全帽二维码:如何提升施工现场的安全管控效果
  • linux 命令 touch
  • 提示词工程化学习,方便用于dify
  • .NET8使用EF Core连接SQLite