计算化学公社

标题: Fedora/Debian Linux 安装 GIMIC 2.0 时踩过的坑以及解决办法 [打印本页]

作者
Author:
kimariyb    时间: 2023-5-23 00:35
标题: Fedora/Debian Linux 安装 GIMIC 2.0 时踩过的坑以及解决办法
本帖最后由 kimariyb 于 2023-6-8 22:56 编辑

最近在浏览卢老师新文章《不寻常的环[18]碳前驱体C18Br6的电子结构和芳香性》(http://sobereva.com/664)时,发现文章配图里的感应环电流强度(J^ind)非常具有艺术感,便想复刻一下。卢老师也在博文中说明了是使用 GIMIC 2.0 以及 ParaView 进行绘制的。于是我便参考了卢老师在《考察分子磁感生电流的程序 GIMIC 2.0 的使用 》(http://sobereva.com/491)一文中的操作,准备安装 GIMIC。由于笔者的笔记本是 Fedora + Win10 的双系统,并且 Win10 下还有一个 Debian 的 WSL。所以我在两个环境下都照卢老师的博文教程尝试安装过,但是在安装过程中遇到了几个 Error,这些 Error 在公社中都有人提到过。比如以下几个贴子的问题,我都遇到过:




首先解释一下为什么不按照原文使用 CentOS 或者 卢老师推荐的 Rocky Linux。这是因为双系统是笔者还没接触过量化就装好了的,WSL 是因为微软直接提供的 Linux 版本就那么几个,最近也是本科毕业,所以笔者没有心思研究怎么在 WSL 上安装其他 Linux 发行版。下面介绍一下笔者的安装环境,笔者先是在 WSL Debian 11 的 root 用户下安装卢老师博文中附带的 GIMIC,全部依照卢老师博文中的操作安装,但是遇到了以下的问题:



为了解决这个问题,我在查询了公社论坛后,去 GIMIC GitHub 主页下载了最新的 GIMIC,按照官网的 Installation 页面重新安装了一边,这次可以正常生成 XDENS 和 MOL 文件,但是在执行 gimic 命令生成 vti 文件时,则会报出现 ImportError ....(和上述三个帖子中其中之一遇到的错误相同),于是我便暂时放弃了在 Debian 下安装 GIMIC 2.0。

之后我换成了我的 Fedora Linux 重复上面的操作,还是报相同的错误。这时我仔细想了一下,用卢老师附带的 GIMIC 报的错是找不到 Python 路径,那肯定是 Python 版本对不上,或者是多个 Python 版本兼容性的问题。于是我彻查了一下整个系统,发现只有在 anaconda 里安装了最新的 Python 3.11.3,这是调用 conda install cython numpy pyparsing 命令后,conda 自动安装的 Python 环境。我便怀疑是 Python 版本的问题,于是执行了 conda install python=2.7,将环境的 Python 改为 2.7 的版本,再重复 ./setup --omp,成功执行,继续按照卢老师的操作便可成功安装 GIMIC,之后调用 gimic 命令生成 vti 文件时也不会出现 ImportError。同样我在我的 WSL Debian 11 下按照上述的操作重新安装,同样省略了 install epel-release,成功的执行了 gimic 命令生成 vti 文件,至此 GIMIC 程序的安装的坑就完美解决了。

但是问题还没完,我又发现了一个新问题,卢老师博文中提到要让 ParaView 正确显示分子结构,还需要安装 Openbabel 生成 cml 文件。直接运行 dnf install openbabel,安装的是最新的 3.1.1,如果直接使用卢老师博文提到的 xyz2cml.sh 脚本文件,则会报错。因为新版本的 Openbabel 的命令不是 babel,并且格式也和老版本的不同,因此需要更改卢老师的 xyz2cml.sh 脚本文件,我在 GitHub 上找到了适合新版 openbabel 的 xyz2cml.sh 脚本(地址为:https://github.com/Usu171/GIMIC/blob/main/xyz2cml.sh):

  1. obabel -ixyz mol.xyz -ocml -O mol.cml
  2. awk '{ {FS="""}; {OFS="""};
  3.      if ($1 ~ "<atom id") {
  4.          if ($5 ~ "hydrogenCount")
  5.              { print $1, $2, $3, $4, $5, $6, $7, $8/0.529177, $9, $10/0.529177, $11, $12/0.529177, $13 }
  6.          else  { print $1, $2, $3, $4, $5, $6/0.529177, $7, $8/0.529177, $9, $10/0.529177, $11 }
  7.          }
  8.      else print $0; }' mol.cml > mol-bohr.cml
复制代码

最后执行 ./xyz2cml.sh 就可以生成 mol-bohr.cml 文件了。之后按照卢老师博文带的视频里提到的操作,绘制磁感生电流。下面是我通过 GIMIC 2.0 和 ParaView 绘制的全空间动态流线场图(截图,之所以展示这个是因为操作简单,在 ParaView 里点两下就可以了)。最后感谢卢老师的博文教程和视频教程,让我这个刚入门一个月的量化小白也能掌握大量的量化程序。

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




作者
Author:
dahai7719    时间: 2023-12-4 12:34
卢老师和博主好,我在Centos7.6下安装遇到了同样的问题,安照帖子的方法是安装成功了,也生成了 cml 文件,但是生成的 cml 文件文件有问题,而且和vi文件的坐标也对不上,如附件中的图,不知道是哪里的问题,请解惑!
作者
Author:
kimariyb    时间: 2023-12-4 14:29
dahai7719 发表于 2023-12-4 12:34
卢老师和博主好,我在Centos7.6下安装遇到了同样的问题,安照帖子的方法是安装成功了,也生成了 cml 文件, ...

大概率是 openbabel 的问题,检查 openbabel 的版本和脚本命令
作者
Author:
dahai7719    时间: 2023-12-4 15:24
本帖最后由 dahai7719 于 2023-12-4 15:49 编辑
kimariyb 发表于 2023-12-4 14:29
大概率是 openbabel 的问题,检查 openbabel 的版本和脚本命令

其他的vi 文件都正常,就是cml文件不对,openbabel我是自动安装,脚本是拷贝的你的脚本,检查也没有什么问题,应该是awk没有把坐标变成bohr, 我看了xyz文件,mol.cml文件和mol-bohr.cml的坐标完全一致, 没有变, 附件中我贴上了mol.cml文件:下面是脚本
obabel -ixyz mol.xyz -ocml -O mol.cml
awk '{ {FS="""}; {OFS="""};
     if ($1 ~ "<atom id") {
         if ($5 ~ "hydrogenCount")
             { print $1, $2, $3, $4, $5, $6, $7, $8/0.529177, $9, $10/0.529177, $11, $12/0.529177, $13 }
         else  { print $1, $2, $3, $4, $5, $6/0.529177, $7, $8/0.529177, $9, $10/0.529177, $11 }
         }
     else print $0; }' mol.cml > mol-bohr.cml

作者
Author:
dahai7719    时间: 2023-12-4 16:27
请问老师我的这个mol.cml 文件是不是有问题,原子坐标中间怎么冒出来两个spinMultiplicity 这个很奇怪,是openbabel程序的问题么?而且这里如果是spinMultiplicity的话,脚本中hydrogenCount好像也对不上,但是改成spinMultiplicity后,用 ParaView打开mol-bohr.cml后直接报错:以下是报错信息:
ERROR: In C:\bbd\ecd3383f\build\superbuild\paraview\src\VTK\IO\XMLParser\vtkXMLParser.cxx, line 399
vtkCMLParser (00000160F50D8800): Error parsing XML in stream at line 5, column 2, byte index 185: not well-formed (invalid token)

Warning: In C:\bbd\ecd3383f\build\superbuild\paraview\src\VTK\Domains\Chemistry\vtkCMLMoleculeReader.cxx, line 112
vtkCMLMoleculeReader (00000160A6885950): Cannot parse file E:\Ginput\GIMIC\TKX-50\II\mol-bohr.cml as CML.

Warning: In C:\bbd\ecd3383f\build\superbuild\paraview\src\ParaViewCore\ServerManager\Rendering\vtkSMPVRepresentationProxy.cxx, line 277
vtkSMPVRepresentationProxy (000001608CCB7720): Could not determine array range.
作者
Author:
zhaixiaoyi001    时间: 2024-3-24 22:33
这个xyz2cml.sh是错的,里面分隔符少了转义字符,程序识别不了双引号,修改后的我放到评论附件里了。@dahai7719




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