计算化学公社

 找回密码 Forget password
 注册 Register
Views: 36|回复 Reply: 2
打印 Print 上一主题 Last thread 下一主题 Next thread

[综合交流] MolGame:以RPG游戏的方式打开MD模拟

[复制链接 Copy URL]

49

帖子

2

威望

1007

eV
积分
1096

Level 4 (黑子)


近在vibe的一个小项目, MolGame。
https://github.com/John-zzh/molgame


目标是把分子动力学模拟接到一个实时 3D 交互界面里,让用户像玩第一人称游戏一样,用 WASD、鼠标(或者xbox手柄)去“推”配体、离子、残基或者整条蛋白链,观察体系的实时响应。

游戏引擎是OpenMM:

- Amber14SB + TIP3P 显式水
- PME 静电
- 支持 OpenMM 的 CUDA / OpenCL / CPU 后端
- 配体可以通过 OpenFF / openmmforcefields 用 GAFF2 参数化

渲染和交互部分用 Pygame + OpenGL 写。界面目前是一个复古 HUD 风格,左边显示实时状态,右边是 3D 分子场景。


1. 直接加载 PDB ID
例如:
    python start.py --pdb 1UBQ
    python start.py --pdb 2LYZ
第一次运行会自动从 RCSB 下载 PDB。

2. 支持蛋白 + PDB 内配体
如果 PDB 里有配体残基,可以直接指定残基名:
    python start.py --pdb 4HJO --ligand AQ4
程序会提取配体,用 GAFF2/AM1-BCC 参数化,然后加入到溶剂化体系中。

3. 支持本地蛋白和本地配体文件
可以加载本地 PDB,以及已经加好氢、有 3D 坐标、并且和蛋白对齐好的 SDF/MOL2 配体:

    python start.py --pdb-file ./protein.pdb
    python start.py --pdb-file ./protein.pdb --ligand-file ./ligand.sdf
    python start.py --pdb-file ./protein.pdb --ligand-file ./ligand.mol2
    python start.py --pdb-file ./protein.pdb --ligand-file ./lig1.sdf --ligand-file ./lig2.mol2

本地配体默认保留已有氢和坐标,不再额外加氢。

重复传入多个 --ligand-file 时,每个文件会作为一个独立 ligand group。默认先控制第一个配体,按 X 进入选择模式后可以瞄准另一个配体,再按 X 切换控制目标。


4. 支持离子控制
可以控制 PDB 里已有的常见离子:
    python start.py --pdb 4MS2 --ion CA
    python start.py --pdb 4MS2 --ion MG
目前支持 CA、NA、CL、K、MG、ZN。

5. 实时交互,基本操作类似RPG游戏:
- WASD:按相机方向移动当前目标(施加外力)
-方向键:旋转当前目标(施加外力)
- Space / Shift:上下移动(施加外力)
- 鼠标:旋转视角
- 滚轮:缩放
- X:进入选择模式,重新选择主体,可以用准星瞄准残基、蛋白链或离子,再次按X完成选定
- 方向键 / 手柄 D-pad:给当前目标施加力矩,让目标旋转
- V:切换蛋白显示方式
- L:切换配体显示方式,支持 ball 和 line
- P:暂停并打开参数菜单

手柄也能用:左摇杆移动,右摇杆看向,扳机上下移动,D-pad 施加力矩,A 暂停。

6. 可以选择残基或整条链

暂停菜单里有 Select scope:

- Residue:瞄准并选择一个残基
- Chain:瞄准一个原子后选择它所在的整条蛋白链

这个功能主要是为了测试更大主体在力场中的响应,比如推整条链、给整条链施加旋转力矩。


7. 实时HUD
- PE total:总势能
- PE clean:扣除玩家施加外力/力矩后的势能
- clean PE 的实时曲线
- 温度
- FPS
- 当前视图、选择模式、force mode

这里的 clean PE 是通过 OpenMM force group 实现的。玩家控制产生的 steering force 和 torque force 被放在 group 31 里,所以 clean PE = total PE - group 31 energy。
为了性能,能量现在不是每帧计算,而是大约每 0.5 秒更新一次;每帧只读取原子坐标。

8. 暂停菜单里可以保存当前构象:
- 默认保存蛋白 + 配体,不含水
- 也可以选择包含水
- 文件名类似 molgame_snapshot_YYYYMMDD_HHMMSS_dry.pdb 或 _all.pdb


安装
====

推荐用 mamba/conda:

    mamba env create -f environment.yml
    mamba activate molgame
    python start.py --pdb-file ./protein.pdb --ligand-file ./ligand.sdf

平台支持
========
- macOS
- Linux / Ubuntu 桌面
- Windows
- WSL

注意:这个项目需要 Pygame + OpenGL 窗口,所以 Ubuntu server、SSH、容器、headless 环境不能保证直接运行。WSL 推荐 Windows 11 WSLg;旧 WSL 需要 X server 和 OpenGL 转发。

OpenMM 后端默认自动选择:

    CUDA -> OpenCL -> CPU -> Reference

也可以手动指定:

    python start.py --platform CUDA
    python start.py --platform OpenCL
    python start.py --platform CPU


当前限制
========

1. 大体系会慢

显式水体系很重。比如十几万粒子时,实时 FPS 可能只有十几帧。这主要是 OpenMM 步进、GPU/CPU 坐标回读和渲染共同造成的。


2. 不是生产级 MD 工作流

它更像一个交互式实验工具 / 游戏化原型。正式科研模拟仍然应该用规范的 OpenMM/Gromacs/AMBER 工作流做体系准备、平衡、采样和分析。


3. 配体处理还有边界情况

本地配体要求已经有显式氢和 3D 坐标,并且最好已经和蛋白放在同一坐标系里。复杂金属配位、共价配体、特殊残基等情况暂时不保证。


为什么做这个
============

我想试一下:如果分子动力学不只是“提交任务、等轨迹、再分析”,而是可以实时地被操作,会不会带来一种不一样的直觉。

- 用手柄把配体往 pocket 里推
- 选择一条链然后给它施加力矩
- 观察局部接触和能量曲线变化
- 在真实力场里体验“这个东西为什么推不动”

它不替代严肃模拟,但可能适合教学、演示、debug 体系、或者单纯作为一个分子模拟玩具。


欢迎开issue,加入新功能!


评分 Rate

参与人数
Participants 3
eV +15 收起 理由
Reason
SharkYYX2025 + 5 好萌好萌好萌!
student0618 + 5 限制写得严谨给赞,对潜力可更有信心IMD不.
LittlePupil + 5 你太可爱

查看全部评分 View all ratings

1075

帖子

4

威望

2673

eV
积分
3828

Level 5 (御坂)

A Student

2#
发表于 Post on yesterday 23:41 | 只看该作者 Only view this author
本帖最后由 student0618 于 2026-6-24 23:51 编辑

Interesting work!

和vmd的IMD、Foldit (Rosetta MC) 相比速度怎样?印象中UCSF ChimeraX也有插件有相近的功能(至少两个,没记错一个要下小分子参数、一个是用real time MD 作real time xray density refinement 的isolde)

VMD以前试很慢,foldit我一直有玩可它是快但只有MC/EM、非游戏版folditstandalone比游戏板慢。
chimeraX试过isolde不过我的gpu接不上,它也实时重算maps所以也很慢,以前学X-ray时玩过一会就没试了。

以前也看过VMD VR IMD 手动docking的论文 https://pubs.acs.org/doi/10.1021/acs.jcim.0c01030 (no paywall version https://chemrxiv.org/doi/full/10.26434/chemrxiv.12834335.v2 )
敬仰一针见血的指责,厌倦别有用心的赞美。

49

帖子

2

威望

1007

eV
积分
1096

Level 4 (黑子)

3#
 楼主 Author| 发表于 Post on yesterday 23:58 | 只看该作者 Only view this author
student0618 发表于 2026-6-24 23:41
Interesting work!

和vmd的IMD、Foldit (Rosetta MC) 相比速度怎样?印象中UCSF ChimeraX也有插件有相近 ...

这个取决于不同硬件了,我用的mac M5芯片,没有测试N卡。
我的测试例143614原子
Protein atoms: 5665,  Ligand atoms: 126,  Bonds: 5450+134,  Water: 45941
FPS = 20
MD steps/frame = 8
timestep = 2 fs
模拟速度是 27 ns/day

评分 Rate

参与人数
Participants 1
eV +2 收起 理由
Reason
student0618 + 2 谢谢

查看全部评分 View all ratings

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2026-6-25 04:27 , Processed in 0.227160 second(s), 25 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list