在Ubuntu 22.04上从源码编译安装gnina 1.1:一个生物信息学新手的踩坑与成功记录
在Ubuntu 22.04上从源码编译安装gnina 1.1一个生物信息学新手的踩坑与成功记录第一次接触gnina时我正试图在实验室的Ubuntu服务器上搭建一套分子对接的工作流程。作为生物信息学领域的新手面对复杂的依赖关系和编译过程我几乎每一步都遇到了意想不到的问题。这篇文章记录了我从零开始成功编译gnina 1.1的全过程特别聚焦那些官方文档没有详细说明的坑和解决方案。1. 系统环境准备与基础依赖在开始之前确保你的Ubuntu 22.04系统已经更新到最新状态sudo apt update sudo apt upgrade -ygnina对GPU加速有强烈依赖因此正确安装NVIDIA驱动和CUDA工具包至关重要。我的配置是RTX 3090显卡以下是验证环境是否就绪的关键命令nvidia-smi # 查看驱动版本和GPU状态 nvcc --version # 检查CUDA编译器常见的第一个坑是CUDA版本不匹配。gnina 1.1官方推荐CUDA 11.x而我最初安装了CUDA 12.0导致后续编译失败。解决方法是完全卸载现有CUDA后重新安装指定版本sudo apt purge ^nvidia-.* ^cuda-.* sudo apt install cuda-11-8基础开发工具和库文件的安装相对直接但有几个包容易被忽略sudo apt install -y \ build-essential \ libboost-all-dev \ libeigen3-dev \ libgoogle-glog-dev \ libprotobuf-dev \ protobuf-compiler \ libhdf5-dev \ libatlas-base-dev \ swig \ libxml2-dev提示如果服务器位于国内建议先配置apt镜像源加速下载。阿里云或清华大学的Ubuntu镜像都是不错的选择。2. OpenBabel的编译与Python绑定OpenBabel是gnina的重要依赖项但直接从apt安装的版本通常不符合要求。我们需要从源码编译并启用Python绑定git clone https://github.com/openbabel/openbabel.git cd openbabel mkdir build cd build编译配置时需要特别注意几个关键参数cmake .. \ -DCMAKE_INSTALL_PREFIX$HOME/.local/openbabel \ -DPYTHON_BINDINGSON \ -DRUN_SWIGON \ -DWITH_MAEPARSEROFF \ -DWITH_COORDGENOFF这里我遇到了第一个大坑Python版本混乱。系统默认Python是3.10但cmake可能错误地关联到其他版本。解决方法是指定正确的Python解释器路径-DPYTHON_EXECUTABLE$(which python3)编译完成后不要忘记设置环境变量。将以下内容添加到~/.bashrc# OpenBabel export PATH$HOME/.local/openbabel/bin:$PATH export LD_LIBRARY_PATH$HOME/.local/openbabel/lib:$LD_LIBRARY_PATH export PYTHONPATH$HOME/.local/openbabel/lib/python3.10/site-packages:$PYTHONPATH验证安装是否成功import openbabel mol openbabel.OBMol() print(OpenBabel版本:, openbabel.__version__)3. libmolgrid的编译与配置libmolgrid是gnina的核心组件之一负责处理分子网格数据。编译过程相对简单但需要正确链接到之前安装的OpenBabelgit clone https://github.com/gnina/libmolgrid.git cd libmolgrid mkdir build cd build关键的cmake配置参数cmake .. \ -DCMAKE_INSTALL_PREFIX$HOME/.local/libmolgrid \ -DOPENBABEL3_INCLUDE_DIR$HOME/.local/openbabel/include/openbabel3 \ -DOPENBABEL3_LIBRARIES$HOME/.local/openbabel/lib/libopenbabel.so这里我遇到了链接错误libopenbabel.so: cannot open shared object file。原因是系统没有找到OpenBabel的库文件位置。解决方法是在编译前临时设置库路径export LD_LIBRARY_PATH$HOME/.local/openbabel/lib:$LD_LIBRARY_PATH编译完成后建议运行测试用例验证功能make test4. gnina的最终编译与验证万事俱备现在可以编译gnina本体了。首先获取源代码git clone https://github.com/gnina/gnina.git cd gnina mkdir build cd build关键的cmake配置需要正确指向所有依赖项cmake .. \ -DCMAKE_INSTALL_PREFIX$HOME/.local/gnina \ -DLIBMOLGRID_INCLUDE_DIR$HOME/.local/libmolgrid/include \ -DLIBMOLGRID_LIBRARY$HOME/.local/libmolgrid/lib/libmolgrid.so \ -DOPENBABEL3_INCLUDE_DIR$HOME/.local/openbabel/include/openbabel3 \ -DOPENBABEL3_LIBRARIES$HOME/.local/openbabel/lib/libopenbabel.so编译过程中可能遇到的两个典型问题内存不足使用-j参数并行编译时如果内存不足会导致编译器崩溃。解决方案是减少并行数量或增加swap空间make -j4 # 替代默认的-j8CUDA架构不匹配如果遇到nvcc fatal: Unsupported gpu architecture错误需要明确指定显卡的计算能力。例如对于RTX 3090-DCUDA_ARCHsm_86成功编译后添加gnina到环境变量export PATH$HOME/.local/gnina/bin:$PATH export LD_LIBRARY_PATH$HOME/.local/gnina/lib:$LD_LIBRARY_PATH验证安装的最简单方法是运行帮助命令gnina --help5. 测试分子对接流程为了确保gnina正常工作我们可以运行一个简单的对接测试。首先准备受体和配体文件# 下载测试用蛋白(如HIV-1蛋白酶) wget https://files.rcsb.org/download/1HVR.pdb # 创建简单的配体文件 echo CN1CNC2C1C(O)N(C(O)N2C)C ligand.smi使用openbabel将配体转换为PDBQT格式obabel -ismi ligand.smi -opdbqt -O ligand.pdbqt --gen3d运行对接计算gnina -r 1HVR.pdb -l ligand.pdbqt \ --autobox_ligand ligand.pdbqt \ --exhaustiveness 8 \ --num_modes 3 \ --seed 42注意首次运行时gnina会自动下载预训练的CNN模型确保网络连接正常。6. 常见问题与解决方案在整个安装过程中我总结了以下几个典型问题及其解决方法Python导入错误症状ImportError: No module named openbabel原因PYTHONPATH未正确设置解决确认PYTHONPATH包含OpenBabel的Python模块路径CUDA版本冲突症状error: identifier __half_as_short is undefined原因CUDA工具包版本与显卡驱动不兼容解决完全卸载CUDA后重新安装指定版本内存不足导致编译中断症状g: fatal error: Killed signal terminated program cc1plus解决减少并行编译数量或增加swap空间OpenBabel符号未定义症状undefined reference toOBMol::OBMol()原因链接时找不到OpenBabel库解决确保LD_LIBRARY_PATH包含OpenBabel库路径对于想要进一步优化性能的用户可以考虑以下编译选项-DCMAKE_BUILD_TYPERelease \ -DCUDA_FAST_MATHON \ -DCUDA_ARCHsm_86 # 根据实际GPU调整经过三天断断续续的尝试和错误排查当最终看到gnina成功运行并输出对接结果时那种成就感让我觉得所有努力都是值得的。最深刻的教训是在开始之前一定要仔细阅读所有依赖组件的文档并做好环境隔离如使用conda管理Python环境。现在我已经将整个过程脚本化新的服务器环境部署时间从最初的数天缩短到了不到两小时。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2584344.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!