用Docker快速实现SAPT能量分解分析
时间:2022-07-22
本文章向大家介绍用Docker快速实现SAPT能量分解分析,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
SAPT是个著名的能量分解分析方法。如果有人想做SAPT能量分解,需要安装Psi4程序包。这个软件包需要下载下来编译、连接各种库以及配置环境变量。当然也可以选择二进制版本,不过不是每个程序都提供二进制版本。
现在有了更方便的技术,叫做Docker。简而言之,Docker技术是将应用封装成一个包,封装的时候把应用需要的环境也包进来了。这个打好的包被称为镜像(image),基于镜像可以开启一个容器(container),容器与操作系统底层直接交互并且可以执行。有个这个技术,我们就可以拿过来容器直接用,免去了编译、链接库等等的劳顿。重要的是能快速出结果。
需要满足的前提
- 机器上有Docker,并且账户有执行Docker的权限。
- 机器能正常速度连接DockerHub。(教育网很快)
快速上手
如果满足上述两点要求,SAPT能量分解分析可以被快速实现。
1. 案例准备
我们先创建一个工作目录SAPT,并在目录中创建输入文件(参考Psi4手册)SAPT_test.dat,以水二聚体SAPT0能量分解分析为例:
molecule water_dimer {
0 1
O -1.551007 -0.114520 0.000000
H -1.934259 0.762503 0.000000
H -0.599677 0.040712 0.000000
--
0 1
O 1.350625 0.111469 0.000000
H 1.680398 -0.373741 -0.758561
H 1.680398 -0.373741 0.758561
units angstrom
no_reorient
symmetry c1
}
set basis aug-cc-pvdz
energy('sapt0')
2. 完成计算
如果满足上述两个条件,一条指令便可完成能量分解计算。
docker run -v $(pwd)/SAPT:/SAPT paesanilab/psi4conda psi4 /SAPT/SAPT_test.dat /SAPT/SAPT_test.out
如果第一次使用psi4,电脑会自动从DockerHub拉取paesanilab/psi4conda这个镜像,psi4conda大约1.5G。运行结束后在$(pwd)/SAPT文件夹下输出SAPT_test.out,里面有计算结果。分子相互作用能被分解为:静电、交换、诱导、色散能四个部分。在SAPT_test.out后面的表中。
3. 指令的解读
docker run 基于一个镜像(paesanilab/psi4conda)去创建一个容器,这个容器可以执行Psi4任务。
-v 表示挂载一个目录或文件。-v $(pwd)/SAPT:/SAPT 表示把当前目录下的SAPT文件夹挂载到容器里的根目录下/SAPT。这样SAPT_test.dat就跟随自己的目录挂载到了容器里。
容器创建后,我们要告诉容器执行 psi4 /SAPT/SAPT_test.dat /SAPT/SAPT_test.out这个指令。这是psi4的标准执行命令。
关于Docker的其他说明
- 需要把非root用户加入Docker组才能让普通用户有Docker权限。
sudo groupadd docker
sudo usermod -aG docker [non-root user]
- 大陆地区,除了教育网之外的网络,难以链接DockerHub库,需要用国内的镜像库进行加速。推荐用阿里云的。
- 如果服务器没有网络,或者网络很差。可以用docker load把其他电脑下载好并且压缩成tar包的镜像载入。
- Docker的缺点是,镜像通常很大,基本到GB级别。
- 从原理上讲,在容器里运行程序不应该比亲自编译、链接的程序运行慢。这还需要实测。
- 在 .Net 设定 proxy 的方法
- MVC结构简介
- 优酷、爱奇艺、摩拜……多家网络平台被曝注册容易注销难!面临个人隐私泄露风险
- WordPress中借助.htaccess屏蔽某个IP或某个IP段(防垃圾评论)
- ASP.NET 调味品:AJAX
- CTreeCtrl 控件使用总结
- 高盛成立交易部门,涉足比特币和加密货币交易
- WordPress主题开发:添加主题更新提醒功能
- WordPress主题开发:添加主题更新提醒功能
- ASP.NET2.0应用中定制安全凭证之实践篇
- Kaggle大神带你上榜单Top2%:点击预测大赛纪实(下)
- WordPress主题后台选项开发框架 Options Framework 介绍
- vc++ 在程序中运行另一个程序的方法
- 为Options Framework主题后台框架添加后台侧边栏
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法