请选择 进入手机版 | 继续访问电脑版

计算化学公社

 找回密码
 现在注册!
查看: 362|回复: 10

[xtb] xtb-python独立版编译指南及在ASE中调用实例

[复制链接]

789

帖子

7

威望

3628

eV
积分
4557

Level 6 (一方通行)

计算化学社畜

发表于 2020-11-17 21:38:31 | 显示全部楼层 |阅读模式
本帖最后由 冰释之川 于 2020-11-23 08:16 编辑

截止xtb-6.3.3版本(https://xtb-docs.readthedocs.io/en/latest/contents.html),GFN-xTB在开启PBC(Periodic Boundary Conditions)后所支持的几何优化引擎只有“engine=inertial”一种选择,而ASE(Atomic Simulation Environment) 作为比较流行的计算模拟接口程序(https://wiki.fysik.dtu.dk/ase/) 在开启PBC调用xtb程序进行几何优化时,能够支持多种优化算法(BFGS, BFGSLineSearch, LBFGS, LBFGSLineSearch, GPMin,MDMin and FIRE)因而如果想充分发挥GFN-xTB优化周期性体系的独特魅力,使用ASE和配套的xtb-python模块是一种较好的选择。(注意:xtb-6.3.3版本下GFN2-xTB尚不支持PBC


之前笔者曾分享过《在ASE中使用xtb-6.3.0(pre.2)的py脚本》(http://bbs.keinsci.com/thread-17104-1-1.html),不过从xtb-6.3.0正式版开始,xtb-python模块与xtb主体分家,因而笔者特开此贴,给大家带来xtb-python模块的编译安装指南以及在ASE中调用计算的py脚本。

第〇部分:xtb的安装

直接下载编译后的xtb二进制文件即可,接下来就是设置xtb的环境变量了,具体安装细节参见《将Gaussian与Grimme的xtb程序联用搜索过渡态、产生IRC、做振动分析》(http://sobereva.com/421)
这里给出在~/.bashrc中需要设置的几个xtb环境变量:
  1. # xtb-6.3.3
  2. export PATH=$PATH:/mnt/d/xtb_Linux/xtb-6.3.3/bin
  3. export XTBPATH=/mnt/d/xtb_Linux/xtb-6.3.3/share/xtb
  4. ulimit -s unlimited
复制代码


第一部分:ASE的安装

1. ASE的安装比较简单,可以直接使用pip3全自动无脑安装:
  1. $ pip3 install --upgrade --user numpy scipy matplotlib ase
复制代码
2. 在~/.bashrc中设置python环境变量:
  1. # Python 3.6
  2. export PYTHONPATH=/home/yjy/.local/lib/python3.6/site-packages:$PYTHONPATH
  3. export PATH=$PATH:/home/yjy/.local/bin
复制代码

3. 调用ase命令进行测试(大约需要1分钟):
  1. $ ase test               
复制代码
4. 如果ase运行正常,会看到如下信息:
  1. ========== Summary ==========
  2. Number of tests   363
  3. Passes:           257
  4. Failures:           0
  5. Errors:             0
  6. Skipped:          106
  7. =============================
  8. Test suite passed!
  9. Time elapsed: 55.2 s
复制代码


第二部分:python-xtb的安装

这里分享利用源码编译安装python-xtb的详细流程,喜欢用conda安装的童靴请查阅官网上的conda安装说明(https://xtb-python.readthedocs.io/en/latest/installation.html)。

1. 安装intel全家桶:
具体过程参见《VASP的最简单的安装方法》(http://sobereva.com/455),这里不再赘述。

2. 安装 cmake和python3-dev (这里以CentOS系统为例):
  1. $ sudo yum install epel-release
  2. $ sudo yum install cmake python3-devel
复制代码
3. 下载并解压python-xtb源码包(https://github.com/grimme-lab/xtb-python/releases/tag/v20.2):
  1. $ tar -zxvf xtb-python-20.2.tar.gz
  2. $ cd xtb-python-20.2
复制代码
4. 安装cffi、numpy、meson和ninja模块:
  1. $ pip3 install cffi numpy meson ninja
复制代码
5. 更改xtb-6.3.3安装目录下的xtb.pc文件(参考地址:/mnt/d/xtb_Linux/xtb-6.3.3/lib64/pkgconfig):
  1. $ vi xtb.pc
复制代码
将prefix=/ 改为 prefix=/mnt/d/xtb_Linux/xtb-6.3.3/

6. source intel全家桶环境变量并设置PKG_CONFIG_PATH环境变量:
  1. $ source /mnt/d/Intel_Linux/intel/parallel_studio_xe_2020.0.079/psxevars.sh
复制代码
7. 将xtb-6.3.3动态库环境变量写进~/.bashrc中并source ~/.bashrc
  1. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/mnt/d/xtb_Linux/xtb-6.3.3/lib64
复制代码
8. 正式开始编译安装python-xtb:
  1. $ meson setup build --prefix=$PWD --default-library=shared
  2. $ ninja -C build install
  3. $ pip3 install -e .
复制代码
9. 验证安装:
  1. $ pip3 list
复制代码
你会看到如下信息:
  1. Package         Version      Location
  2. --------------- ------------ -----------------------------------
  3. ase             3.19.1
  4. cffi            1.14.3
  5. matplotlib      3.2.1
  6. meson           0.56.0
  7. ninja           1.10.0.post2
  8. numpy           1.18.2
  9. pip             20.1.1
  10. pycparser       2.20
  11. pyparsing       2.4.7
  12. python-dateutil 2.8.1
  13. scipy           1.4.1
  14. wheel           0.34.2
  15. xtb-python      20.1         /home/yjy/softwares/xtb-python-20.2
复制代码
第15行信息表明python-xtb模块已安装完毕


第三部分:python-xtb的运行

1. 下载ASE_xtb_test.7z测试包并进入该目录,将test.sh脚本中的intel全家桶环境变量路径示例更改为实际对应的路径
  1. #source /home/yjy/intel/parallel_studio_xe_2020/psxevars.sh
  2. #source /opt/intel2018/parallel_studio_xe_2018/psxevars.sh
  3. source /mnt/d/Intel_Linux/intel/parallel_studio_xe_2020.0.079/psxevars.sh
复制代码
2. 利用bash运行脚本:
  1. $ bash test.sh
复制代码
若python-xtb正常运行,你会看到如下信息:
  1. ***  ASE program with xTB started at 2020-11-17 21:33:20  ***

  2. -> Task name:                                             diamond
  3. -> Orthorhombic cell parameters:         Cell([3.57, 3.57, 3.57])
  4. -> Total number of atoms in a cell:                            8
  5. -> PBC dimensions:                            [ True  True  True]
  6. -> The atoms with following labels are fixed:
  7. [0, 1]

  8. Total energy of the initial geomertry:
  9. -457.167602 eV   <==>   -16.80059963 Hartree

  10. ~~~ Geometry optimization started... ~~~
  11.                 Step[ FC]     Time          Energy          fmax
  12. *Force-consistent energies used in optimization.
  13. BFGSLineSearch:    0[  0] 21:33:21     -457.167602*       1.8195
  14. BFGSLineSearch:    1[  2] 21:33:22     -457.245735*       1.0806
  15. BFGSLineSearch:    2[  4] 21:33:23     -457.276050*       0.4399
  16. BFGSLineSearch:    3[  6] 21:33:24     -457.289570*       0.6919
  17. BFGSLineSearch:    4[  8] 21:33:25     -457.297283*       0.2032
  18. BFGSLineSearch:    5[ 10] 21:33:26     -457.298051*       0.1078
  19. BFGSLineSearch:    6[ 12] 21:33:27     -457.298503*       0.0713
  20. BFGSLineSearch:    7[ 14] 21:33:28     -457.298911*       0.0564
  21. BFGSLineSearch:    8[ 16] 21:33:29     -457.299011*       0.0117
  22. BFGSLineSearch:    9[ 18] 21:33:30     -457.299016*       0.0017
  23. BFGSLineSearch:   10[ 20] 21:33:30     -457.299016*       0.0012
  24. BFGSLineSearch:   11[ 21] 21:33:31     -457.299016*       0.0005
  25. ~~~ Geometry optimization terminated... ~~~

  26. Total energy of the optimized geometry:
  27. -457.299016 eV   <==>   -16.80542900 Hartree

  28. ***  ASE program with xTB ended at 2020-11-17 21:33:31  ***
  29. >> Elapsed time:  0 days  0 hours  0 minutes 10.0 seconds <<
复制代码

ASE_xtb_test.7z (1.79 KB, 下载次数: 9)

评分

参与人数 8威望 +1 eV +33 收起 理由
thanhtam + 3 好物!
ghifi37 + 5 好物!
winnerwill + 5 牛!
tjuptz + 5
zsu007 + 5 牛!
sobereva + 1
snljty + 5 好物!
ABetaCarw + 5 精品内容

查看全部评分

Stand on the shoulders of giants

316

帖子

1

威望

1514

eV
积分
1850

Level 5 (御坂)

发表于 2020-11-18 08:50:02 | 显示全部楼层
本帖最后由 tjuptz 于 2020-11-18 10:31 编辑

之前自己尝试编译遇到python3动态库无法链接的问题,开发者让用conda安,我觉得就为了新版本xtb-python不值得,看来被冰冰老师解决了!

789

帖子

7

威望

3628

eV
积分
4557

Level 6 (一方通行)

计算化学社畜

 楼主| 发表于 2020-11-18 09:08:52 | 显示全部楼层
本帖最后由 冰释之川 于 2020-11-18 09:10 编辑
tjuptz 发表于 2020-11-18 08:50
之前自己尝试编译遇到python3动态库无法链接的问题,开发者让用cond安,我觉得就为了新版本python-xtb不值 ...

我感觉还是6.3.0.pre2自带的python接口好点,刚测试了同一个计算任务,跑的结果不太对头
Stand on the shoulders of giants

789

帖子

7

威望

3628

eV
积分
4557

Level 6 (一方通行)

计算化学社畜

 楼主| 发表于 2020-11-18 09:08:53 | 显示全部楼层
本帖最后由 冰释之川 于 2020-11-18 09:10 编辑
tjuptz 发表于 2020-11-18 08:50
之前自己尝试编译遇到python3动态库无法链接的问题,开发者让用cond安,我觉得就为了新版本python-xtb不值 ...

另外如果想要在ASE中尝试最新版xtb-6.3.3,必须得要装独立版xtb-python了
Stand on the shoulders of giants

89

帖子

0

威望

671

eV
积分
760

Level 4 (黑子)

发表于 6 天前 | 显示全部楼层
请教下大侠,我用xtb6.3.3和xtb-python20.2,按照流程安装后,在执行diamond.py时,报错:ModuleNotFoundError: No module named 'xtb'
这个报错好像没问题啊,我装的python库是xtb-python,pip list的确没有xtb,为什么还要import xtb?

789

帖子

7

威望

3628

eV
积分
4557

Level 6 (一方通行)

计算化学社畜

 楼主| 发表于 6 天前 | 显示全部楼层
本帖最后由 冰释之川 于 2020-11-22 08:49 编辑
ghifi37 发表于 2020-11-22 00:51
请教下大侠,我用xtb6.3.3和xtb-python20.2,按照流程安装后,在执行diamond.py时,报错:ModuleNotFoundEr ...

如果 pip list 之后没出现 xtb-python,说明xtb-python没有成功安装。
成功安装后,xtb库的调用命令是“from xtb.ase.calculator import XTB

另外友情提示:xtb-python20.2独立版与你之前安装的xtb-python整合版不兼容,必须要把老的xtb库用pip uninstall xtb 删掉
此外,我不知道你的diamond.py是不是从当前帖子中的附件下载的,因为老的xtb库的调用命令是“from xtb import GFN1”,与当前独立版本不一致

Stand on the shoulders of giants

316

帖子

1

威望

1514

eV
积分
1850

Level 5 (御坂)

发表于 6 天前 | 显示全部楼层
本帖最后由 tjuptz 于 2020-11-22 17:41 编辑
冰释之川 发表于 2020-11-18 09:08
我感觉还是6.3.0.pre2自带的python接口好点,刚测试了同一个计算任务,跑的结果不太对头

冰冰老师,您指的问题和GitHub里的那个问题类似吧?
https://github.com/grimme-lab/xtb-python/issues/34
https://github.com/grimme-lab/xtb/issues/257

另外,第8步应该是pip3 install -e吧?

89

帖子

0

威望

671

eV
积分
760

Level 4 (黑子)

发表于 6 天前 | 显示全部楼层
冰释之川 发表于 2020-11-22 08:41
如果 pip list 之后没出现 xtb-python,说明xtb-python没有成功安装。
成功安装后,xtb库的调用命令是“ ...

谢谢指导!只是我现在被搞得有点糊涂了,之前的xtb删了,安装20.2后pip list,显示的版本号却是20.1,不知道哪里被我搞乱了。如果source psxevars.sh的话,python的库配置也变了,找不到ASE;不source的话,在from xtb.ase.calculator import XTB时直接把python的kernel搞死了。我再找找看psxevars.sh是怎么弄的!

789

帖子

7

威望

3628

eV
积分
4557

Level 6 (一方通行)

计算化学社畜

 楼主| 发表于 5 天前 | 显示全部楼层
ghifi37 发表于 2020-11-22 23:52
谢谢指导!只是我现在被搞得有点糊涂了,之前的xtb删了,安装20.2后pip list,显示的版本号却是20.1,不 ...

安装后确实版本号是 20.1;另外source psxevars.sh之后python相关的环境变量改变,我猜你是把intel全家桶里的python板块也装了,建议利用安装包卸载intel全家桶中的python板块,免得与系统自带的python发生冲突
Stand on the shoulders of giants

789

帖子

7

威望

3628

eV
积分
4557

Level 6 (一方通行)

计算化学社畜

 楼主| 发表于 5 天前 | 显示全部楼层
本帖最后由 冰释之川 于 2020-11-23 08:25 编辑
tjuptz 发表于 2020-11-22 16:55
冰冰老师,您指的问题和GitHub里的那个问题类似吧?
https://github.com/grimme-lab/xtb-python/issues/ ...

第八步是 pip3 ,不过如果机子里pip -V指向 python3.x,那就没问题了
测试了几个PBC算例,发现与xtb-6.3.3关联的独立版xtb-python跑我手头上的体系确实有问题,所以我还是用回xtb-6.3.pre2 里的python接口了
Stand on the shoulders of giants

89

帖子

0

威望

671

eV
积分
760

Level 4 (黑子)

发表于 5 天前 | 显示全部楼层
冰释之川 发表于 2020-11-23 08:19
安装后确实版本号是 20.1;另外source psxevars.sh之后python相关的环境变量改变,我猜你是把intel全家桶 ...

非常感谢!我压根就没意识到是全家桶里的python作怪,把psxevars.sh里对intelpython的激活屏蔽了就正常了!
您需要登录后才可以回帖 登录 | 现在注册!

本版积分规则

手机版|北京科音自然科学研究中心|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949-1号 )

GMT+8, 2020-11-28 23:59 , Processed in 0.167865 second(s), 28 queries .

快速回复 返回顶部 返回列表