计算化学公社

标题: 分子二聚体刚性扫描的python脚本 [打印本页]

作者
Author:
Novice    时间: 2025-1-10 19:04
标题: 分子二聚体刚性扫描的python脚本
本帖最后由 Novice 于 2025-1-10 20:00 编辑

用社长dimerscan小程序产生分子二聚体刚性扫描scan.xyz文件时,惊奇的发现分子的平移向量方向并不是严格沿着指定的两点连线的向量方向。
如下图所示,我的两个分子为平面型分子,我本来想将其沿pi平面的法线方向垂直的移动(如上图虚线方向所示),但是发现实际移动的结果却是如下图实线所示的方向:两个分子不只在垂直方向上距离发生了变化,水平方向上也发生了少量滑移。
(, 下载次数 Times of downloads: 7)

这一结果显然不是我想要的,于是我借助AI自行折腾实现了一个能进行刚性扫描的python脚本scan_xyz.py,功能略比社长的dimerscan小程序强大,现分享出来。

此脚本有两个功能:
功能1. 严格沿着指定的两点连线的向量方向进行刚性扫描,此功能与dimerscan相似。
功能2. 根据输入文件中的部分坐标确定一个平面,然后沿着平面法线进行刚性扫描指定点与该平面的距离,此功能可以实现诸如pi-pi面间距扫描,平面上的分子与平面距离调节的扫描等。

脚本采用交互式界面,依次要求用户输入:
1.标准xyz格式的文件(含路径)名称,文件里的坐标可根据需要添加虚原子,辅助进行扫描定义;
2. 第1部分包含的原子序数,可不连续,格式为如1-5,8,9;
3. 第2部分包含的原子序数,可不连续,格式为如1-5,8,9;
4. 选择移动算法类型 : 点距离平移(对应功能1), 2: 点到面距离平移(对应功能2)
5. 点距离平移需要用户指出两个相应的点序号(空格分隔,分别位于两部分);点到面距离平移需要用户指出确定平面的原子序数(数量≥3,尽可能在一个平面,格式如1-5,8,9)以及确定点到面距离的原子的序号(单一整数)
6. 需要依次分别输入单位为埃的扫描起始距离、扫描结束距离、扫描步长。
程序运行完就会自动在工作目录产生包含每帧结构的scan.xyz文件,该文件每帧第二行对应扫描的距离。


--------------------------------
使用示例:
此脚本也算填了我自己之前挖下的一个坑,见:
Gaussian做刚性扫的输入文件如何定义两个方向的扫描变量?(http://bbs.keinsci.com/thread-12535-1-1.html)。 (, 下载次数 Times of downloads: 7)
实现方式说明:
1. 使用功能2(
点到面距离平移)可以很容易实现pi-pi法向距离的调节,具体为,定义下面的分子(假定序号为1-24)为第1部分,并用下面蒽中的原子(全部或一部分)来确定平面将上面的蒽分子(25-48)指定为第二部分,在上面的蒽分子上任选一个原子确定点到面距离,然后就可以刚性扫描pi-pi距离。
2. 水平方向的相对滑移: 使用GV添加两个虚原子点(图中青色1和2,假定序号为49,50),然后将下面的分子和49指定为第1部分,将上面的蒽分子和50指定为第二部分,然后将49和50作为兴趣点,使用功能1(点距离平移)进行扫描。


---------------------------
P.S.
1. 文中提到的dimerscan可以从《考察SAPT能量分解的能量项随分子二聚体间距变化的简单方法》(http://sobereva.com/469)页面的链接里下载;
2. xyz2QC是社长molclus程序包中带的工具,可将方便地将含有多帧的xyz文件转换为Gaussian等程序的计算文件,具体使用和下载见molclus主页:http://www.keinsci.com/research/molclus.html
3. 代码产生时所用的AI为通义千问。

python程序源代码链接:

https://github.com/lizhiq16/py_color_draw/blob/main/scan_xyz.py








作者
Author:
sobereva    时间: 2025-1-11 00:20
没有你的dimerscan的输入文件,我没法判断是什么情况。dimerscan没有已知的bug
作者
Author:
Novice    时间: 2025-1-13 08:29
sobereva 发表于 2025-1-11 00:20
没有你的dimerscan的输入文件,我没法判断是什么情况。dimerscan没有已知的bug

附件为dimerscan输入文件,扫描的原子序号是40(X虚原子)和44(虚原子法线上方对应的原子)。

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



作者
Author:
sobereva    时间: 2025-1-14 03:48
Novice 发表于 2025-1-13 08:29
附件为dimerscan输入文件,扫描的原子序号是40(X虚原子)和44(虚原子法线上方对应的原子)。

我测试了dimerscan,没遇到你说的问题。下图是dimerscan产生的scan.xyz,对第二个片段每一帧叠加显示,肉色和青色圆球分别是40和44号原子,可以看到第二个片段就是相对于第一个片段顺着40-44连线方向刚性地移动的。

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


PS:为了避免视觉误差,我用了正交视角显示,而非默认的透视视角

作者
Author:
Novice    时间: 2025-1-14 08:36
sobereva 发表于 2025-1-14 03:48
我测试了dimerscan,没遇到你说的问题。下图是dimerscan产生的scan.xyz,对第二个片段每一帧叠加显示,肉 ...

我又试了一下,的确是没问题的。但是我之前不知道怎么搞的却有问题(如原帖左侧两图所示)




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