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

在云服务器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 &

http://www.jsqmd.com/news/1079679/

相关文章:

  • Widevine L3解密技术解析:从DRM原理到密钥提取实战
  • C*-单群与受限子代数:算子代数视角下的结构新刻画
  • 输出、输入函数以及数据类型转换细节
  • 核方法计算加速:Nyström逼近原理与工程实践指南
  • 大模型应用-筑基期【08:构建你的Prompt模板库】
  • 安卓群控项目——根据开源项目QtScrcpy二次开发
  • NewAPI网关部署与企业Token监管实操指南
  • 数位DP:从“穷举数字”到“逐位拆解”
  • AI大模型应用开发工程师到底做什么?
  • 超长型材拉弯加工,实测数据与效果差异几何?
  • 11.3% 稳健增长!2026年温度敏感导电碳浆市场发展现状及未来前景趋势分析
  • 从 Demo 到上线,Agent 还差一套工程化底座
  • 住所地公证书去哪里办理?住所地公证需要什么材料?
  • ouTube Data API v3 视频详情接口(videos.list)完整介绍与标准 JSON 返回示例
  • VADER、TextBlob与Flair三工具协同情感分析实战
  • Bushound USB协议分析工具:从原理到实战的深度解析
  • erp,oa价格昂贵,企业私有化部署怎么降本?EzCloud 插件化架构解决定制开发长期痛点
  • Git提交用错email了? 用gitConfig来管理
  • SOS构造与负动量:凸凹优化收敛性证明的自动化路径
  • AI 编程多模型协同怎么落地:基于 Agent 路由、独立审查和 OpenCode 权限治理的工程实践
  • 新不良人0.1折下载
  • 数据分包传输技术详解:从原理到Python模拟实现
  • 为什么做了 DevOps,你还是管不好开源依赖?
  • 如何用NxNandManager轻松管理你的Switch NAND存储:免费开源工具完整指南
  • centos搭建k8s 1.28集群
  • Calico IPIP CrossSubnet 与 IPIP 默认模式对比模式介
  • 平衡二叉树:一棵懂得“自我纠偏“的智慧树
  • 百度旋转验证码模型更新及识别代码
  • 计算机毕业设计之jsp基于ssm的新冠疫情管理系统
  • 企业级大模型微调:从行为控制到业务闭环的实战方法论