计算化学公社

标题: xtb-python独立版编译指南及在ASE中调用实例 [打印本页]

作者
Author:
冰释之川    时间: 2020-11-17 21:38
标题: xtb-python独立版编译指南及在ASE中调用实例
本帖最后由 冰释之川 于 2021-1-12 14:21 编辑

截止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
复制代码
  1. $ export PKG_CONFIG_PATH=/mnt/d/xtb_Linux/xtb-6.3.3/lib64/pkgconfig
复制代码
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 <<
复制代码

(, 下载次数 Times of downloads: 119)



附录:ASE下调用xtb-python进行计算的py脚本包(实例)

(, 下载次数 Times of downloads: 122)


















作者
Author:
tjuptz    时间: 2020-11-18 08:50
本帖最后由 tjuptz 于 2020-11-18 10:31 编辑

之前自己尝试编译遇到python3动态库无法链接的问题,开发者让用conda安,我觉得就为了新版本xtb-python不值得,看来被冰冰老师解决了!
作者
Author:
冰释之川    时间: 2020-11-18 09:08
本帖最后由 冰释之川 于 2020-11-18 09:10 编辑
tjuptz 发表于 2020-11-18 08:50
之前自己尝试编译遇到python3动态库无法链接的问题,开发者让用cond安,我觉得就为了新版本python-xtb不值 ...

我感觉还是6.3.0.pre2自带的python接口好点,刚测试了同一个计算任务,跑的结果不太对头
作者
Author:
冰释之川    时间: 2020-11-18 09:08
本帖最后由 冰释之川 于 2020-11-18 09:10 编辑
tjuptz 发表于 2020-11-18 08:50
之前自己尝试编译遇到python3动态库无法链接的问题,开发者让用cond安,我觉得就为了新版本python-xtb不值 ...

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

作者
Author:
ghifi37    时间: 2020-11-22 00:51
请教下大侠,我用xtb6.3.3和xtb-python20.2,按照流程安装后,在执行diamond.py时,报错:ModuleNotFoundError: No module named 'xtb'
这个报错好像没问题啊,我装的python库是xtb-python,pip list的确没有xtb,为什么还要import xtb?
作者
Author:
冰释之川    时间: 2020-11-22 08:41
本帖最后由 冰释之川 于 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”,与当前独立版本不一致


作者
Author:
tjuptz    时间: 2020-11-22 16:55
本帖最后由 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吧?

作者
Author:
ghifi37    时间: 2020-11-22 23:52
冰释之川 发表于 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是怎么弄的!
作者
Author:
冰释之川    时间: 2020-11-23 08:19
ghifi37 发表于 2020-11-22 23:52
谢谢指导!只是我现在被搞得有点糊涂了,之前的xtb删了,安装20.2后pip list,显示的版本号却是20.1,不 ...

安装后确实版本号是 20.1;另外source psxevars.sh之后python相关的环境变量改变,我猜你是把intel全家桶里的python板块也装了,建议利用安装包卸载intel全家桶中的python板块,免得与系统自带的python发生冲突
作者
Author:
冰释之川    时间: 2020-11-23 08:20
本帖最后由 冰释之川 于 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接口了

作者
Author:
ghifi37    时间: 2020-11-23 12:33
冰释之川 发表于 2020-11-23 08:19
安装后确实版本号是 20.1;另外source psxevars.sh之后python相关的环境变量改变,我猜你是把intel全家桶 ...

非常感谢!我压根就没意识到是全家桶里的python作怪,把psxevars.sh里对intelpython的激活屏蔽了就正常了!
作者
Author:
CYQ@    时间: 2020-11-29 19:51
冰冰老师,我想请教一下,现在xtb-6.3.3版本可以支持GFN1-xtb跑周期性体系的MD吗?还是说只能对周期性体系进行优化

作者
Author:
冰释之川    时间: 2020-11-30 08:19
CYQ@ 发表于 2020-11-29 19:51
冰冰老师,我想请教一下,现在xtb-6.3.3版本可以支持GFN1-xtb跑周期性体系的MD吗?还是说只能对周期性体系 ...

支不支持周期性体系的MD可以去https://xtb-docs.readthedocs.io/en/latest/contents.html 查看,不过总感觉xtb-6.3.3跑周期性体系还是不太稳健
作者
Author:
ghifi37    时间: 2020-12-4 10:38
本帖最后由 ghifi37 于 2020-12-4 11:20 编辑
冰释之川 发表于 2020-11-30 08:19
支不支持周期性体系的MD可以去https://xtb-docs.readthedocs.io/en/latest/contents.html 查看,不过总感 ...

感觉GFN1跑PBC甚至还不如just for fun的EMT。我跑过渡金属氧化物slab对小分子的吸附,如果slab有几层不固定的话,晶格完全乱了;全固定晶格,吸附分子的过渡态和DFT算的差很远。完全不知道怎么回事!请教下有没啥跑表面稍微靠谱点的ASE支持的半经验或力场的计算器?想先优化下再跑DFT,用XTB优化的话,没法节省DFT的时间,甚至还更坏事。
作者
Author:
冰释之川    时间: 2020-12-4 13:28
ghifi37 发表于 2020-12-4 10:38
感觉GFN1跑PBC甚至还不如just for fun的EMT。我跑过渡金属氧化物slab对小分子的吸附,如果slab有几层不固 ...

我这边还是用回了xtb-6.3.0.pre2版对应的python接口了,xtb-6.3.3版跑PBC体系有问题。

你这边其实可以直接用DFT跑,没必要用xtb预优化
作者
Author:
ghifi37    时间: 2020-12-4 13:38
冰释之川 发表于 2020-12-4 13:28
我这边还是用回了xtb-6.3.0.pre2版对应的python接口了,xtb-6.3.3版跑PBC体系有问题。

你这边其实可以 ...

主要是想初始结构好一点,省点DFT的计算量。
那我再试试6.3.0吧,之前弄过下,好像结果也不太理想,我再确认下。
作者
Author:
tjuptz    时间: 2020-12-5 10:32
ghifi37 发表于 2020-12-4 13:38
主要是想初始结构好一点,省点DFT的计算量。
那我再试试6.3.0吧,之前弄过下,好像结果也不太理想,我再 ...

可以试试DFTB
作者
Author:
get-it    时间: 2020-12-22 23:19
ghifi37 发表于 2020-12-4 13:38
主要是想初始结构好一点,省点DFT的计算量。
那我再试试6.3.0吧,之前弄过下,好像结果也不太理想,我再 ...

xtb的精度和体系有很大关系,我试过用xtb搜索固体二氧化钛,和dft完全不一样
作者
Author:
adong    时间: 2021-3-9 14:44
冰释之川 发表于 2020-11-18 09:08
另外如果想要在ASE中尝试最新版xtb-6.3.3,必须得要装独立版xtb-python了

老师,这个脚本在运行的时候是用几个cpu核啊?是单核运行吗?
作者
Author:
冰释之川    时间: 2021-3-9 14:49
adong 发表于 2021-3-9 14:44
老师,这个脚本在运行的时候是用几个cpu核啊?是单核运行吗?
export OMP_NUM_THREADS=32     # CPU cores
export MKL_NUM_THREADS=32     # CPU cores


PBS作业提交脚本里设置
作者
Author:
adong    时间: 2021-3-9 15:10
冰释之川 发表于 2021-3-9 14:49
PBS作业提交脚本里设置

好的,谢谢老师
作者
Author:
zzp    时间: 2021-7-23 00:33
请问下大神,我按照你的方法装了可还是出这个问题Traceback (most recent call last):
  File "diamond.py", line 29, in <module>
    mol = read(name+".xyz", format='xyz')
  File "/root/.local/lib/python3.6/site-packages/ase/io/formats.py", line 737, in read
    parallel=parallel, **kwargs))
  File "/root/.local/lib/python3.6/site-packages/ase/parallel.py", line 275, in new_generator
    for result in generator(*args, **kwargs):
  File "/root/.local/lib/python3.6/site-packages/ase/io/formats.py", line 803, in _iread
    for dct in io.read(fd, *args, **kwargs):
  File "/root/.local/lib/python3.6/site-packages/ase/io/xyz.py", line 21, in read_xyz
    natoms = int(lines.pop(0))
ValueError: invalid literal for int() with base 10: '
作者
Author:
冰释之川    时间: 2021-7-23 08:18
本帖最后由 冰释之川 于 2021-7-23 08:20 编辑
zzp 发表于 2021-7-23 00:33
请问下大神,我按照你的方法装了可还是出这个问题Traceback (most recent call last):
  File "diamond.py ...

我不知道你用的xtb-python是什么版本的?我这边正常运行,注意装xtb-6.3.3版本,因为xtb-python只是一个壳程序(P.s.最新的xtb版本不一定能够支持,具体的得要去xtb官网看python接口的说明书了)
作者
Author:
lcdamoy    时间: 2021-10-27 17:07
zzp 发表于 2021-7-23 00:33
请问下大神,我按照你的方法装了可还是出这个问题Traceback (most recent call last):
  File "diamond.py ...

作者提供的diamond.xyz文件末尾多了一行空行
作者
Author:
喵星大佬    时间: 2021-10-27 20:15
话说gfnff支持周期性嘛
作者
Author:
zzp    时间: 2021-11-30 21:06
请问下ase-xtb联用可以实现输出波函数文件吗
作者
Author:
冰释之川    时间: 2021-12-1 08:20
zzp 发表于 2021-11-30 21:06
请问下ase-xtb联用可以实现输出波函数文件吗

这你得查阅xtb官网里的说明书了,应该有的
作者
Author:
JiangZiya    时间: 2021-12-21 21:40
请教老师,根据帖子安装完后,pip list显示xtb-python 20.1,应该是安装完成了,但是从帖子里下载的测试文件运行报错,不清楚原因在哪里,应该怎么处理
ModuleNotFoundError: No module named 'xtb._libxtb'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "diamond.py", line 23, in <module>
    from xtb.ase.calculator import XTB     ##from xtb import GFN1
  File "/SoftwareInstall/xtb-python-20.2/xtb/ase/calculator.py", line 60, in <module>
    from ..utils import get_method, get_solvent
  File "/SoftwareInstall/xtb-python-20.2/xtb/utils.py", line 20, in <module>
    from .interface import Solvent, Param
  File "/SoftwareInstall/xtb-python-20.2/xtb/interface.py", line 24, in <module>
    from .libxtb import (
  File "/SoftwareInstall/xtb-python-20.2/xtb/libxtb.py", line 34, in <module>
    raise ImportError("xtb C extension unimportable, cannot use C-API")
ImportError: xtb C extension unimportable, cannot use C-API
作者
Author:
冰释之川    时间: 2021-12-22 08:27
JiangZiya 发表于 2021-12-21 21:40
请教老师,根据帖子安装完后,pip list显示xtb-python 20.1,应该是安装完成了,但是从帖子里下载的测试文 ...

看报错似乎是xtb动态库没有设置正确:/mnt/d/xtb_Linux/xtb-6.3.3/lib64
请检查xtb本体的动态库有没有在编译xtb-python前事先设置好

作者
Author:
JiangZiya    时间: 2021-12-22 10:54
冰释之川 发表于 2021-12-22 08:27
看报错似乎是xtb动态库没有设置正确:/mnt/d/xtb_Linux/xtb-6.3.3/lib64
请检查xtb本体的动态库有没有在 ...

我这边 xtb 动态库的路径和帖子里不一样,我是按照我这边实际路径来设置的,应该没错。另外,我这边之前因为要装vasp,就装了intel oneAPI,不知道这个有没有冲突
作者
Author:
冰释之川    时间: 2021-12-22 13:34
JiangZiya 发表于 2021-12-22 10:54
我这边 xtb 动态库的路径和帖子里不一样,我是按照我这边实际路径来设置的,应该没错。另外,我这边之前 ...

那你得把intel全家桶中和python相关的环境变量设置屏蔽掉
作者
Author:
JiangZiya    时间: 2021-12-30 19:31
冰释之川 发表于 2021-12-22 13:34
那你得把intel全家桶中和python相关的环境变量设置屏蔽掉

老师您好,我尝试了好几次,目前动态库设置好了,intel全家桶的冲突也解决了,全部重新装的,但是运行测试还是报错,在网上google没有找到解决办法,想请教老师这个问题还可能出在哪里 (, 下载次数 Times of downloads: 46)

作者
Author:
冰释之川    时间: 2021-12-30 20:26
本帖最后由 冰释之川 于 2021-12-30 20:33 编辑
JiangZiya 发表于 2021-12-30 19:31
老师您好,我尝试了好几次,目前动态库设置好了,intel全家桶的冲突也解决了,全部重新装的,但是运行测 ...

你直接python3回车进入python3环境,然后导入xtb库看看:
  1. from xtb.ase.calculator import XTB
复制代码

是否正常,如果还是出现上面的报错,那肯定是python-xtb没装好了。
实在不行,你装老版的:《在ASE中使用xtb-6.3.0(pre.2)的py脚本》(http://bbs.keinsci.com/thread-17104-1-1.html)

作者
Author:
JiangZiya    时间: 2021-12-30 21:01
冰释之川 发表于 2021-12-30 20:26
你直接python3回车进入python3环境,然后导入xtb库看看:

是否正常,如果还是出现上面的报错,那肯定 ...

按老师的说法试了一下,还是一样的问题,但是安装完用 pip3 list 看了下,都安装好了,实在是很迷惑,之前其实也试过老版的,也是有莫名其妙的问题,我再尝试一下 (, 下载次数 Times of downloads: 42) (, 下载次数 Times of downloads: 59)

作者
Author:
xyzzz9861    时间: 2023-6-7 07:03
请教一下,我有个400多个原子的周期性结构,想优化一下,结果启动不了,直接core dump了,我跑测试是没问题的。请问大家遇到过吗?
作者
Author:
ShangChien    时间: 2023-12-8 20:17
GitHub Warning ⚠️ : xtb-python is no longer in active development. We recommend using tblite instead.
该换tblite了
作者
Author:
zhouchen    时间: 2024-6-7 17:12
ShangChien 发表于 2023-12-8 20:17
GitHub Warning ⚠️ : xtb-python is no longer in active development. We recommend using t ...

你好,请问你怎么编译的tblite?





欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3