图形学生物信息学科学计算科研【免费下载链接】pymol-open-sourceOpen-source foundation of the user-sponsored PyMOL molecular visualization system.项目地址https://gitcode.com/gh_mirrors/py/pymol-open-source点击查看免费下载本文基于 Open-Source PyMOL 仓库的 README 及其直接关联的 INSTALL、DEVELOPERS、LICENSE 文档展开梳理该项目的定位、依赖要求、完整安装命令、构建参数默认值与运行方式并延伸到测试框架与贡献规范。读完后你将能够在自己的机器上从源码编译安装 PyMOL正确配置PYMOL_PATH等环境变量理解 pip 安装背后自定义构建后端PEP 517的工作机制并知道如何运行其 Python 与 C 双层测试。一、项目定位Open-Source PyMOL 是什么README.md 对项目的定义十分凝练Open-source foundation of the user-sponsored PyMOL molecular visualization system.即 Open-Source PyMOL 是用户资助型 PyMOL 分子可视化系统的开源基础商业版Incentive PyMOL则提供维护与支持。仓库 pyproject.toml 中的项目描述进一步说明了能力范围description PyMOL is a Python-enhanced molecular graphics tool. It excels at 3D visualization of proteins, small molecules, density, surfaces, and trajectories. It also includes molecular editing, ray tracing, and movies. Open Source PyMOL is free to everyone! 从这段描述可以确认其核心功能域蛋白质、小分子、电子密度、表面与轨迹的 3D 可视化外加分子编辑、光线追踪ray tracing和电影动画生成。README 正文其余部分由三个入口构成本文逐一深入README 章节指向文档本文对应章节InstallationINSTALL第三、四、五节ContributingDEVELOPERS第八节LicenseLICENSE第二节License 说明版权方为 Schrodinger, LLC以BSD-like license发布LICENSE 全文授予使用、复制、修改、分发及分发修改版的权利前提是保留版权声明、不得使用 Schrodinger, LLC 名称做广告宣传同时附有条款要求含 PyMOL 源码的衍生软件在宣传中必须与 Schrodinger 官方产品明确区分PyMOL 商标声明。README 顶部还带有 CI 徽章对应仓库中的 build.yml GitHub Actions 工作流该工作流在 ubuntu-22.04 上对 Python 3.10 ~ 3.13 做矩阵构建测试命令为pymol -ckqy testing/testing.py --run all二、仓库结构速览帮助理解安装产物从哪里来理解安装流程前先快速建立对源码布局的认知以 INSTALL 与 setup.py 中的引用为准layer0/、layer1/、layer2/、layer3/、layer4/、layer5/C 核心按渲染OpenGL/GLUT、CGO、对象模型ObjectMolecule.cpp、命令执行Executive.cpp等分层组织layer0/Version.h 保存版本号构建时由setup.py的get_pymol_version()从中提取modules/pymol/、modules/chempy/、modules/pmg_tk/、modules/pmg_qt/Python 包pymol主模块、化学编辑库、两套 GUIdata/运行时数据着色器、位图、启动脚本、示例文件安装后构成$PYMOL_PATH/datacontrib/独立许可证的第三方模块champ 手性计算、mmtf-c 解析器、OpenVR 交互等layerCTest/C 单元测试基于 catch2通过--testingTrue启用testing/Python 端测试框架与数据用 pytest 驱动。三、编译安装依赖要求INSTALL 列出了源码编译的全部前置条件。核心依赖是依赖是否必需说明C17 编译器gcc 8必需CMakeLists.txt 中以target_compile_features(... cxx_std_17)强制 C17CMake 3.13必需与cmake_minimum_required(VERSION 3.13)一致Python 3.9必需与 pyproject.toml 的requires-python 3.9一致pip build 子模块必需pip install buildconda 包名为python-buildOpenGL / GLEW / glm必需渲染三件套libpng / freetype必需图像与字体PmwPython Megawidgets可选传统 GUI/插件需要GLUTfreeglut可选--gluttrue启用libxml2可选COLLADA 导出--libxmlno关闭msgpack-c 2.1.5 / mmtf-cpp可选快速 MMTF 加载与导出--use-msgpackcno关闭PyQt5 / PyQt6 / PySide2 / PySide6可选缺失时若以--gluttrue编译则回退 Tk 界面catch2可选--testingtrue启用 C 层测试openvr 1.0.x可选--openvrtrue启用 VR 支持libnetcdf可选VMD molfile 插件--vmd-pluginsno关闭注意一个细节pyproject.toml 中运行时唯一声明的 Python 依赖是numpy2.0其余freetype、GLEW 等都是 C 层系统库需要预先安装到系统或写入搜索路径——这正是 INSTALL 中PREFIX_PATH等环境变量的用途。四、安装命令与环境变量4.1 两条标准安装命令INSTALL 给出两种安装方式# 干净构建并安装 pip install . # 推荐开发者使用保留构建输出、支持增量构建、同时构建 C 单元测试 pip install --verbose --no-build-isolation --config-settings testingTrue .第二条命令里有两个关键点值得展开--no-build-isolation跳过 pip 的隔离构建环境直接复用本机已装好的 CMake/numpy/setuptools[build-system] requires声明的三件套--config-settings testingTruepip 把该键值传给 PEP 517 构建后端。本项目用了一个自定义后端 _custom_build/backend.pypyproject.toml 中backend-path [_custom_build]、build-backend backend指定class _CustomBuildMetaBackend(backend_class): def run_setup(self, setup_scriptsetup.py): if self.config_settings: flags [ f--{k}{v} for k, v in self.config_settings.items() ] sys.argv sys.argv[:1] [build_ext] flags sys.argv[1:] return super().run_setup(setup_script)也就是说pip 的--config-settings kv会被原样翻译成setup.py build_ext --kv的命令行参数。这就解释了为什么所有构建开关既可以从 pip 传--config-settings gluttrue也可以直接python setup.py build_ext --gluttrue。4.2 构建开关与默认值setup.py 用 argparse 定义了完整的开关集其默认值集中在 setup.py参数默认值作用--glutFalse链接 GLUT传统 GUI--osx-frameworksTruemacOS 上用原生框架而非 XQuartz--jobs/-j处理器数并行编译--libxmlTrue关闭则禁用 COLLADA 导出--use-openmp非 macOS 为yesOpenMP 支持--use-vtkmno用 VTK-m 做等值面可选 2.0~2.3--use-msgpackcguessc11/c/guess/no控制 MMTF 快速路径--testingFalse构建 C 层测试catch2--openvrFalseVR 支持--vmd-pluginsTrueVMD molfile 插件依赖 libnetcdf布尔参数通过str2boolsetup.py解析接受true/yes与false/no。依赖库的搜索路径由PREFIX_PATH环境变量控制setup.py 的get_prefix_path()冒号分隔的目录列表构建时在其中查找include、lib、lib64等子目录。例如把 msgpack-c 装在~/msgpack-c、mmtf-cpp 装在~/mmtf-cpp则export PREFIX_PATH$HOME/mmtf-cpp:$HOME/msgpack-c其余标准环境变量沿用工具链惯例INSTALLCXX/CC指定编译器命令CXXFLAGS/CFLAGS/CPPFLAGS/LDFLAGS分别传编译与链接参数。4.3 特殊安装选项与环境变量--pymol-path指定 PyMOL 数据安装目录对应$PYMOL_PATH见 setup.py 中install_pymol_path的处理--no-launcher跳过pymol启动脚本的安装系统包管理器场景下PACKAGING 推荐python setup.py install --pymol-path/usr/share/pymol并把modules/下的 Python 包放入 site-packagesdata/、scripts/放入/usr/share/pymol/运行时必须。4.4 运行环境变量的自动推导PACKAGING 说明常规安装无需手动设置环境变量PyMOL 启动时会按优先级自行推导PYMOL_PATH 依次取 - pymol python module /pymol_path - 启动脚本匹配 modules/pymol/__init__.py 时取 modules 目录的父目录 - sys.prefix /share/pymol PYMOL_DATA $PYMOL_PATH/data PYMOL_SCRIPTS $PYMOL_PATH/scripts因此只要pymolPython 包正常安装数据文件路径就能被自动找到只有当数据被安装到非默认位置时才需要显式export PYMOL_PATH...modules/pymol/init.py 开头的文档字符串也明确提示了这一点。五、启动方式INSTALL 指明安装后的入口$PYMOL_PATH/bin/pymol # 或 $PYTHONUSERBASE/bin/pymolpymol命令由 pyproject.toml 的入口点声明提供pymol pymol:launch。除此之外modules/pymol/init.py 的文档注释列出了全部支持方式# 1) 直接以脚本运行 shell python /path/to/pymol/__init__.py [args] # 2) pymol 模块在 PYTHONPATH 中时 shell python -m pymol [args]# 3) 在 Python 主线程内阻塞解释器 import pymol pymol.launch() # 4) 主线程内派生新线程带 GUImacOS 不支持此方式 import pymol pymol.finish_launching()modules/pymol/main.py 则实现了python -m pymol入口sys.exit(pymol.launch())。六、构建产物与 CMake 的关系顶层 CMakeLists.txt 并不完整——它依赖setup.py先行收集源码get_sources()扫描各 layer 目录下的.c/.cpp并通过变量TARGET_NAME、ALL_SRC、ALL_COMP_ARGS等注入add_library(${TARGET_NAME} SHARED ${ALL_SRC}) target_compile_features(${TARGET_NAME} PRIVATE cxx_std_17)即 CMake 只负责把 C 核心编成一个共享库供 Python 扩展加载而依赖发现、源码收集、着色器文本生成create_shadertext见 setup.py 与独立脚本 create_shadertext.py、PYMOL_PATH数据复制、启动脚本生成都由setup.py编排。这是阅读构建逻辑时应记住的主从关系pip → 自定义后端 → setup.py → CMake。版本号并非独立配置而是解析 layer0/Version.h 中_PyMOL_VERSION ...宏得到setup.py。结合 ChangeLog 可见当前主线版本为3.1.02025-01-24新增 BCIF 导入、压缩 SDF 导入、delete_states命令等上一版 3.0.02024-04-09引入了卤键检测、fnab命令与改进的 CGO builder API。七、测试Python 框架 C 单元测试 CI仓库提供三层测试能力均可从 README 的 CI 徽章入口找到实证Python 测试框架testing/pytest 驱动配置见 testing/pytest.ini。testing/README.md 说明每个测试方法基于一个干净的 PyMOL 会话reinitialize并从测试文件所在目录启动运行方式pymol -cq /path/to/pymol-testing/runall.pml # 或 PyMOL 命令行内 PyMOL run /path/to/pymol-testing/testing.py PyMOL run_testfiles path/to/*.pyC 单元测试layerCTest/catch2 框架。构建时需--testingTrue开发者安装命令即如此CI 工作流中通过pip install -v --config-settings testingTrue .[dev]启用。CI 工作流build.ymlLinux 矩阵覆盖 Python 3.10~3.13系统依赖包括catch2、libfreetype6-dev、libglew-dev、libglm-dev、libmsgpack-dev、libnetcdf-dev、libpng-dev、libxml2-dev并额外 clone mmtf-cpp 头文件到include/最终测试命令pymol -ckqy testing/testing.py --run all即上文 Python 框架的入口。八、贡献路径与许可证约束DEVELOPERSPyMOL Developer Notice2006-01-28定义了三种参与方式各自的版权与许可证约束不同在主源码树上工作改进代码的版权须转让给 Schrodinger, LLC或放入公有领域且不得附加任何超出 LICENSE 的条件。方式是在每个源文件头部加入版权转让或公有领域声明文档中给出了两段标准注释模板。在 contrib/ 目录开发自包含功能可保留自己的版权但代码必须采用 Python 许可证或同等宽松许可即无限制免费使用的 BSD 风格条款文档内附完整注释模板。仓库现存的 contrib/champ/、contrib/mmtf-c/ 等正是此模式的实例。开发基于 PyMOL Python API 的独立项目可不受 PyMOL 发行版约束、自行决定许可但若希望并入官方 PyMOL 发行包须采用 PyMOL 许可证或同等宽松开源许可证明确注明 GPL 不允许。九、快速参考清单# 1. 装好系统依赖freetype/GLEW/glm/libpng/msgpack-c/mmtf-cpp 等 # 2. 指定依赖搜索路径如适用 export PREFIX_PATH$HOME/mmtf-cpp:$HOME/msgpack-c # 3a. 普通安装 pip install . # 3b. 开发者安装增量构建 C 层测试 pip install --verbose --no-build-isolation --config-settings testingTrue . # 4. 运行 $PYMOL_PATH/bin/pymol # 安装后 python -m pymol # 模块在 PYTHONPATH 时 pymol.launch() # Python 内嵌 # 5. 跑测试 pymol -ckqy testing/testing.py --run all适用前提与限制以上流程基于当前仓库主线3.1.0 开发线要求 Python ≥ 3.9、CMake ≥ 3.13、C17 编译器PYMOL_PATH/PYMOL_DATA/PYMOL_SCRIPTS仅当数据目录非默认位置时需要手工设置Qt 界面与 GLUT/Tk 回退、VTK-m 等值面、OpenVR 等均为可选项按需通过对应开关启用即可。赞分享图形学生物信息学科学计算科研【免费下载链接】pymol-open-sourceOpen-source foundation of the user-sponsored PyMOL molecular visualization system.项目地址https://gitcode.com/gh_mirrors/py/pymol-open-source点击查看免费下载相关推荐PyMOL分子可视化系统终极安装指南从零开始构建专业科研平台PyMOL分子可视化系统终极安装指南从零开始构建专业科研平台 想要快速掌握 PyMOL分子可视化系统 的完整安装方法吗本指南将为您详细解析如何在三大主流操作图形学生物信息学科学计算科研NeteaseCloudMusicGtk4 代码架构深度剖析Rust 与 GTK4 的完美结合NeteaseCloudMusicGtk4 代码架构深度剖析Rust 与 GTK4 的完美结合 NeteaseCloudMusicGtk4 是一款专为 LinCANN/asc-devkitAI Core硬件架构解析基本架构a nameZH CN_TOPIC_0000002380477945 /a 如下图所示基于Ascend C开发的算子运行在AI Core上。人工智能深度学习算子库CANNAscend上一篇飞书 Bot 突然不说话了怎么办lark-coding-agent-bridge 排查技巧与常见问题 FAQ下一篇Madeira的原生D3D12运行时 madeira_d3d12.dll 完全解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考