news 2026/6/26 6:24:47

在云服务器AutoDL实现分子动力学模拟全流程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
在云服务器AutoDL实现分子动力学模拟全流程

如果是在自己的ubuntu虚拟机中进行MD模拟,跳过前面的AutoDL部分即可。以下内容为本人使用经验,希望为做MD的朋友推荐高效的计算资源和简易可复现的workflow,无商业行为。

AutoDL是国内先进的GPU算力云平台,主要面向深度学习和人工智能开发,提供高性能GPU租赁及即开即用环境。在AutoDL中RTX4090的租赁价格约2元/小时(视不同地区服务器群配置而有所差异),在行业内极具性价比,并且4090可为GROMACS生物大分子MD模拟提供充足的算力,是运行MD的首选。

GPU开机操作及镜像选择

注册和充值相关事宜参考官方“帮助”文件

首先进入算力市场,选择和自己所在城市距离较近的机房,选择RTX4090或RTX4090D GPU(计算资源较为紧张,夜间容易抢到),点击“n卡可租”,AutoDL为我们提供了现成的GROMACS镜像,如图选择镜像。另外如果MD时间在100ns以上建议扩容数据盘

这里讲解一下为什么选择4090,首先4090的算力足够完成模拟,并且GROMACS的23年版本比较旧,cuda与5090这种LBlackWell架构的GPU不兼容,另外该版本本身也没有对BlackWell、Ada架构的单元做适配,亲测该任务上4090是A100-PCIE-40GB计算速度的两倍。如果要使用5090大家需要在服务器内部自行配置最新版GROMACS,也欢迎大家在评论区分享配置流程和自己的镜像。

开机后点击右上角控制台,点击该机器的JupyterLab按钮,进入界面后点击左侧的“autodl-tmp”,再点击右侧“终端“这是数据盘地址,IO速度比较快,我们尽量在这里完成模拟流程。如果直接点击了终端,输入cd /root/autodl-tmp

MD全流程脚本

CHARMM36、Amber99SB-ILDN力场都是同样的流程,只是mdp文件的参数不同,大家可以理解为mdp是个描述设置的文件。MD流程包括:pdb2gmx转化——定义box——注入溶剂环境——能量最小化——NVT温度平衡——NPT压力平衡——MD正式模拟。运行时请确保pdb文件、ions.mdp、minim.mdp、nvt.mdp、npt.mdp、md.mdp六个文件在工作目录下,python脚本及所有mdp文件可在以下文章获取(Amber99SB-ILDN力场MD模拟mdp文件及数据处理脚本分享)

# Run this for A_B.pdb gmx pdb2gmx -f A_B.pdb -o A_B_processed.gro -water tip3p -ignh # 选6,tip3p是经典三点式水分子表示,适合Amber99SB-ILDN # Define box gmx editconf -f A_B_processed.gro -o A_B_box.gro -c -d 1.0 -bt dodecahedron # 十二面体,距边界1纳米 # Add water gmx solvate -cp A_B_box.gro -cs spc216.gro -o A_B_solv.gro -p topol.top # spc216是水的标准格式 # Compile the run input file for adding ions gmx grompp -f ions.mdp -c A_B_solv.gro -p topol.top -o ions.tpr # 可视为一个打包机制,需要先写mdp # Add K+ and Cl- to 0.14 M, and neutralize gmx genion -s ions.tpr -o A_B_ions.gro -p topol.top -pname K -nname CL -neutral -conc 0.14 # 卵母细胞环境高K低Na 选13 SOL,将部分水分子替换成离子,切忌选protein # Assuming you have a minim.mdp file gmx grompp -f minim.mdp -c A_B_ions.gro -p topol.top -o em.tpr gmx mdrun -v -deffnm em -ntmpi 1 -ntomp 16 -gpu_id 0 # 还是先有mdp再打包,目的是移开overlap部分确保作用力Fmax小于1000(尽量一开始pdb就删无序区) # -ntomp 16是CPU线程数,一般4090是16,如果报错就按显示的填 # NVT (Temperature equilibration - e.g., 100 ps) gmx grompp -f nvt.mdp -c em.gro -r em.gro -p topol.top -o nvt.tpr # 升到生理温度310K,先验步 如果有warning需要确认无害后添加参数 -maxwarn 1 gmx mdrun -v -deffnm nvt # NPT (Pressure equilibration - e.g., 100 ps) gmx grompp -f npt.mdp -c nvt.gro -r nvt.gro -t nvt.cpt -p topol.top -o npt.tpr # 升到一个大气压,等压过程一定会改变box体积,该步对overlap敏感 gmx mdrun -v -deffnm npt # 同上,注释: -f参数 -c主体坐标 -r约束 -t状态 # Production run (e.g., 100 ns) gmx grompp -f md.mdp -c npt.gro -t npt.cpt -p topol.top -o md.tpr gmx mdrun -v -deffnm md # 正式模拟,耗时较长 # GROMACS为了防止原子跑到体系外,有一个机制,如果原子从一端出了盒子会从另一端进入 # 因此如果直接分析,被分开的原子会影响rmsd等数据,该步将被盒子分开的原子拼接回原位 选0 gmx trjconv -s md.tpr -f md.xtc -o md_noPBC.xtc -pbc mol -ur compact # 再将蛋白居中 选1 再选0 gmx trjconv -s md.tpr -f md_noPBC.xtc -o md_final.xtc -center -pbc none # 该步骤产生三个相近大小的轨迹文件.xtc 因此数据盘可以扩容 # 基本分析,.xvg文件可以用python做图 gmx energy -f md.edr -o energy.xvg gmx rms -f md.xtc -s md.tpr -o rmsd.xvg -tu ns gmx rmsf -f md.xtc -s md.tpr -o rmsf.xvg -res gmx hbond -f md.xtc -s md.tpr -num hbond.xvg gmx gyrate -f md.xtc -s md.tpr -o gyrate.xvg # 互作分析,系统并不知道哪个res是哪个蛋白的,我们需要给它们一个index # 由于GROMACS对蛋白的编号顺序与Chimerax中看到的可能不同,所以建议先获取最后一帧观察一下 gmx trjconv -f md.xtc -s md.tpr -o last_frame.pdb -dump 100000 # 假如100ns情况下 # 创建index文件(如A:1-100res B:101-300res)进入后应该会有16个现有标签 gmx make_ndx -f md.tpr -o index.ndx # 如果已有index.ndx可以写 -n index.ndx ri 1-100 name 17 A ri101-300 name 18 B # 我个人很喜欢的一种分析,判断A-B间的氢键数量,先选17再选18 gmx hbond -f md.xtc -s md.tpr -n index.ndx -num hbonds_interface.xvg # AutoDL镜像自带相关包,ubuntu系统需要自行下载pandas等python包 python figure_hbonds_interface.py # contacts位点数,先选17再选18 gmx mindist -f md.xtc -s md.tpr -n index.ndx -on num_contacts.xvg -d 0.6 # 6埃截断 # 处理contacts的python python plot_contact.py # sasa互作面积,整体求分别求再相减除二 gmx sasa -f md.xtc -s md.tpr -n index.ndx -o total_sasa.xvg gmx sasa -f md.xtc -s md.tpr -n index.ndx -o sasa_A.xvg gmx sasa -f md.xtc -s md.tpr -n index.ndx -o sasa_B.xvg # python python interface_area.py # 服务器相关操作,后台运行、拼接轨迹等 #续跑 nohup gmx mdrun -v -deffnm md -cpi md.cpt -noappend & # 合并 gmx trjcat -f md.xtc md.part0002.xtc -o full_100ns.xtc -cat # 能量文件合并 gmx eneconv -f md.edr md.part0002.edr -o full_md.edr # 看运行状态 tail -f md.part0002.log ps aux | grep gmx

不建议后台运行,很容易断,如果像上面我的脚本一样,请直接关闭Jupyter,不要关闭终端,如果要后台运行请自己写一下nohup &

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/26 6:24:19

Element UI el-upload 多文件上传踩坑与解决方案

Element UI el-upload 多文件上传踩坑与解决方案基于 Element UI 2.x 的 el-upload 组件,在使用 multiple 多文件上传时遇到的常见问题及解决方案。坑一:on-success 中 fileUrl 为 undefined 现象 多文件上传后,fileList 中部分文件的 fileUr…

作者头像 李华
网站建设 2026/6/26 6:23:26

4月28日起,iOS出海上架门槛变了

对做 iOS 出海的团队来说,最近最值得盯的一条上架政策,不是支付外链,也不是某个单一地区的合规要求,而是一个更基础、也更容易被忽略的硬门槛:自 2026 年 4 月 28 日起,上传到 App Store Connect 的 App&am…

作者头像 李华
网站建设 2026/6/26 6:16:46

时序数据库介绍

时序数据库(Time Series Database,简称TSDB)是专门用于存储、查询和分析时间序列数据的数据库。这类数据的特点是数据点带有时间戳,并且随时间连续产生。一、核心特点写多读少:数据写入量极大(每秒百万级&a…

作者头像 李华
网站建设 2026/6/26 6:15:40

PYTHON+AI LLM DAY EIGHTY-SEVEN

今天简单介绍一下milvus向量库中的混合检索方法.混合检索的目的也就是从不同向量场实现对问题的精准查询,这也是milvus向量库的一大优点.milvus向量库支持的混合检索的方式有两种.也是常说的排序器.分别是加权排名策略(WeightedRanker)和重排序策略&…

作者头像 李华
网站建设 2026/6/26 6:14:49

RNS510车载系统解析:从WinCE架构到老车升级实战

1. 项目概述:RNS510,一个时代的车载多媒体记忆如果你是一位大众、奥迪或斯柯达的老车主,或者对2010年前后那批德系车的“高级感”有印象,那么你对中控台上那块带旋钮和物理按键、屏幕分辨率不高但功能在当时看来相当集成的车机&am…

作者头像 李华