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

在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环境。现在我已经将整个过程脚本化新的服务器环境部署时间从最初的数天缩短到了不到两小时。

相关文章:

在Ubuntu 22.04上从源码编译安装gnina 1.1:一个生物信息学新手的踩坑与成功记录

在Ubuntu 22.04上从源码编译安装gnina 1.1:一个生物信息学新手的踩坑与成功记录 第一次接触gnina时,我正试图在实验室的Ubuntu服务器上搭建一套分子对接的工作流程。作为生物信息学领域的新手,面对复杂的依赖关系和编译过程,我几乎…...

高效释放C盘空间:使用FreeMove轻松迁移Windows目录的完整指南

高效释放C盘空间:使用FreeMove轻松迁移Windows目录的完整指南 【免费下载链接】FreeMove Move directories without breaking shortcuts or installations 项目地址: https://gitcode.com/gh_mirrors/fr/FreeMove 你是否经常因为C盘空间不足而烦恼&#xff1…...

OpenClaw接入KakaoTalk:中继架构与富媒体消息实战

1. 项目概述:为OpenClaw接入KakaoTalk Channel 如果你正在使用OpenClaw构建自己的AI助手,并且希望它能通过KakaoTalk(韩国最主流的即时通讯应用)与用户进行交互,那么这个名为 openclaw-kakao-talkchannel-plugin 的…...

对比直接使用原厂 API 体验 Taotoken 在路由容灾方面的实际价值

Taotoken 路由容灾机制的实际应用体验 1. 业务连续性保障的挑战 在实际业务场景中,大模型 API 的稳定性直接影响应用服务质量。传统单一供应商接入方式存在单点故障风险,当原厂 API 出现临时波动时,开发者往往需要手动切换备用方案&#xf…...

终极SheetJS安全指南:如何彻底防范电子表格中的恶意内容

终极SheetJS安全指南:如何彻底防范电子表格中的恶意内容 【免费下载链接】sheetjs 📗 SheetJS Spreadsheet Data Toolkit -- New home https://git.sheetjs.com/SheetJS/sheetjs 项目地址: https://gitcode.com/gh_mirrors/sh/sheetjs SheetJS作为…...

LLM推理优化:SFPO慢快策略提升效率与性能

1. 慢快策略优化方法的核心价值在大型语言模型(LLM)推理任务中,计算资源消耗与响应速度之间的矛盾始终是开发者面临的主要挑战。SFPO(Slow-Fast Prompt Optimization)方法通过动态调整推理策略,在保证输出质…...

如何利用GPT-Engineer教育版打造高效编程课堂:教师必备的AI助手终极指南

如何利用GPT-Engineer教育版打造高效编程课堂:教师必备的AI助手终极指南 【免费下载链接】gpt-engineer CLI platform to experiment with codegen. Precursor to: https://lovable.dev 项目地址: https://gitcode.com/gh_mirrors/gp/gpt-engineer GPT-Engin…...

从专利到仿真:拆解Novel三路Doherty功放如何用ADS实现更大回退

从专利到仿真:三路Doherty功放的ADS实现与性能优化 在射频功率放大器设计中,Doherty架构因其高效率特性成为5G基站和广播系统的核心技术。传统两路Doherty功放已经无法满足现代通信系统对宽回退范围的需求,工程师们开始探索三路甚至多路Doher…...

如何快速优化Captura大文件处理性能:从内存映射到高效I/O实战指南

如何快速优化Captura大文件处理性能:从内存映射到高效I/O实战指南 【免费下载链接】Captura Capture Screen, Audio, Cursor, Mouse Clicks and Keystrokes 项目地址: https://gitcode.com/gh_mirrors/ca/Captura Captura是一款功能强大的屏幕录制工具&#…...

希尔伯特变换不只是数学玩具:手把手教你用它实现DSB信号的解调

希尔伯特变换在DSB信号解调中的实战应用与性能优化 1. 从数学工具到工程利器的蜕变 希尔伯特变换在信号处理领域常被视为一个抽象的数学概念,但它在实际工程应用中却展现出惊人的实用价值。当我们面对DSB(双边带)信号解调这一经典问题时&…...

idiomatic.js终极指南:Node.js环境中的JavaScript代码规范

idiomatic.js终极指南:Node.js环境中的JavaScript代码规范 【免费下载链接】idiomatic.js Principles of Writing Consistent, Idiomatic JavaScript 项目地址: https://gitcode.com/gh_mirrors/id/idiomatic.js GitHub 加速计划 / id / idiomatic.js 是一个…...

Git上传核心技能:从本地提交到远程协作的完整实战指南

1. 项目概述:从零到一,掌握Git上传的核心技能在任何一个现代开发者的工具箱里,Git都是那个最基础、也最不可或缺的扳手。你可能已经无数次地敲下过git add、git commit、git push这一套组合拳,但你真的理解每一次操作背后&#xf…...

emilianJR/chilloutmix_NiPrunedFp32Fix边缘设备部署:树莓派配置指南

emilianJR/chilloutmix_NiPrunedFp32Fix边缘设备部署:树莓派配置指南 【免费下载链接】chilloutmix_NiPrunedFp32Fix 项目地址: https://ai.gitcode.com/hf_mirrors/emilianJR/chilloutmix_NiPrunedFp32Fix emilianJR/chilloutmix_NiPrunedFp32Fix是一款基于…...

别再手动一个个装了!用华为iDriver一键搞定2288H V5服务器Win2016全部驱动

华为2288H V5服务器Windows驱动自动化部署实战指南 在数据中心运维工作中,服务器驱动安装往往是耗时又容易出错的环节。特别是面对华为2288H V5这类企业级服务器,手动逐个安装Windows Server 2016驱动不仅效率低下,还可能导致版本不一致、配…...

Aloha框架:基于人类演示的GUI自动化革命

1. Aloha框架概述:当GUI自动化遇见人类演示在软件测试和流程自动化领域,GUI自动化一直是个既关键又棘手的环节。传统基于坐标定位或图像识别的方案就像用盲人摸象的方式操作界面——脆弱、易失效且维护成本高。而Aloha框架带来的是一种革命性的思路&…...

华硕笔记本色彩修复指南:用G-Helper恢复屏幕最佳显示效果

华硕笔记本色彩修复指南:用G-Helper恢复屏幕最佳显示效果 【免费下载链接】g-helper Fast, native tool for tuning performance, fans, GPU, battery, and RGB on any Asus laptop or handheld - ROG Zephyrus, Flow, Strix, TUF, Vivobook, Zenbook, ProArt, Ally…...

从碎片化收藏到永久珍藏:用PicaComic下载器构建你的个人漫画宇宙

从碎片化收藏到永久珍藏:用PicaComic下载器构建你的个人漫画宇宙 【免费下载链接】picacomic-downloader 哔咔漫画 picacomic pica漫画 bika漫画 PicACG 多线程下载器,带图形界面 带收藏夹,已打包exe 下载速度飞快 项目地址: https://gitco…...

服务雪崩、熔断、降级、限流:原理+技术选型

文章目录一、先搞懂根基:什么是服务雪崩?所有防护手段的终极防护目标1. 通俗场景举例,一秒看懂雪崩2. 服务雪崩官方核心定义3. 雪崩核心发生三要素二、核心四大概念深度拆解:区别、场景、核心作用一目了然1. 服务雪崩:…...

3DGS存储爆炸?手把手教你优化Gaussian Splatting模型,从GB瘦身到百MB

3DGS存储爆炸?手把手教你优化Gaussian Splatting模型,从GB瘦身到百MB 当你在移动设备上加载一个3DGS场景时,看着进度条缓慢爬升,是否曾疑惑:为什么一个简单的3D场景需要占用几个GB的空间?这个问题困扰着许多…...

技术革命R3nzSkin:如何实现英雄联盟国服全皮肤本地化体验

技术革命R3nzSkin:如何实现英雄联盟国服全皮肤本地化体验 【免费下载链接】R3nzSkin-For-China-Server Skin changer for League of Legends (LOL) 项目地址: https://gitcode.com/gh_mirrors/r3/R3nzSkin-For-China-Server 你是否曾为那些绝版限定皮肤而心动…...

CrowdSec 安全合规终极指南:如何轻松满足 GDPR 和等保 2.0 要求

CrowdSec 安全合规终极指南:如何轻松满足 GDPR 和等保 2.0 要求 【免费下载链接】crowdsec CrowdSec - the open-source and participative security solution offering crowdsourced protection against malicious IPs and access to the most advanced real-world…...

零样本视频生成检测技术解析与应用

1. 项目概述视频内容真实性的鉴别正在成为数字媒体领域的关键挑战。最近我在研究一种名为"零样本视频生成检测"的技术方案,它不需要任何预训练数据就能识别AI生成的视频内容。这套方法的核心在于分析视频的时空维度特征,通过计算似然值来判断真…...

DiffSynth Studio终极扩展开发指南:FastBlend与ESRGAN插件深度集成

DiffSynth Studio终极扩展开发指南:FastBlend与ESRGAN插件深度集成 【免费下载链接】DiffSynth-Studio Enjoy the magic of Diffusion models! 项目地址: https://gitcode.com/GitHub_Trending/dif/DiffSynth-Studio DiffSynth Studio是一款强大的扩散模型工…...

基于VIBE-Annotations数据集:从3D姿态到氛围标签的AI动作理解实践

1. 项目概述与核心价值最近在整理一个关于视频内容理解的项目,需要处理大量视频片段,并对其中的人物动作、情绪、场景进行标注。手动标注不仅耗时,而且主观性强,不同标注员的结果一致性很难保证。就在我为此头疼的时候&#xff0c…...

Netflix插件多语言支持完全指南:从翻译到本地化实现

Netflix插件多语言支持完全指南:从翻译到本地化实现 【免费下载链接】plugin.video.netflix InputStream based Netflix plugin for Kodi 项目地址: https://gitcode.com/gh_mirrors/pl/plugin.video.netflix Netflix插件作为Kodi平台上的重要流媒体扩展&…...

多模态生成技术解析:HunyuanImage 3.0与OmniGen2对比

1. 多模态生成技术发展现状计算机视觉与自然语言处理的交叉领域正在经历一场深刻变革。2023年,多模态生成技术呈现出三个显著特征:模型参数量级突破百亿门槛、跨模态对齐精度显著提升、生成内容可控性大幅增强。在这个背景下,HunyuanImage 3.…...

2025年程序员必备云存储服务终极指南:10大最佳选择全面对比

2025年程序员必备云存储服务终极指南:10大最佳选择全面对比 【免费下载链接】Best-websites-a-programmer-should-visit-zh 程序员应该访问的最佳网站中文版 项目地址: https://gitcode.com/gh_mirrors/be/Best-websites-a-programmer-should-visit-zh 在数字…...

剪映自动化深度解析:Python驱动视频剪辑革命的技术架构

剪映自动化深度解析:Python驱动视频剪辑革命的技术架构 【免费下载链接】JianYingApi Third Party JianYing Api. 第三方剪映Api 项目地址: https://gitcode.com/gh_mirrors/ji/JianYingApi 在当今视频内容创作爆炸式增长的时代,剪映自动化已成为…...

使用Python在Taotoken平台快速切换并测试不同大模型

使用Python在Taotoken平台快速切换并测试不同大模型 1. 准备工作 在开始编写代码之前,您需要完成以下准备工作。首先登录Taotoken平台控制台,在「API密钥」页面创建一个新的API Key。建议为测试用途创建一个专用密钥,并记录下这个密钥字符串…...

Frappe CRM移动端开发:Vue.js构建响应式CRM应用

Frappe CRM移动端开发:Vue.js构建响应式CRM应用 【免费下载链接】crm Fully featured, open source CRM 项目地址: https://gitcode.com/gh_mirrors/crm2/crm Frappe CRM是一款功能全面的开源客户关系管理系统,采用Vue.js框架开发移动端界面&…...