计算化学公社

标题: 求助:使用vmd插件topotools读取xyz文件时报错 [打印本页]

作者
Author:
BesterS    时间: 2024-12-4 16:13
标题: 求助:使用vmd插件topotools读取xyz文件时报错
各位老师好,我在使用topotools中readvarxyz指令读取xyz文件时出现错误,能读到一些数据但帧数为0,具体报错类容是:can't  read  "a" :no such variable,请问是什么原因?
作者
Author:
Uus/pMeC6H4-/キ    时间: 2024-12-4 16:48
本帖最后由 Uus/pMeC6H4-/キ 于 2024-12-4 17:03 编辑

检查下dumpcp.xyz有没有多余空行、单独拆出的每一帧是否都是正规的.xyz格式(一行原子数+一行注释+与原子数相符数量的若干行坐标,其中坐标行由空格分隔原子名称、x坐标、y坐标、z坐标)。另外坐标行用原子序数开始的话有可能topotools不能转化为对应的元素和种类信息,最好先用sed之类的命令批量换成元素名。

编辑:有个小小的请求,如果像上帖这样提问得到回答,可否提供个反馈呢?回个帖或者评个分都行,无论回答是很有帮助还是完全不对,提问者的回应可以给回答者一个确认,也可以帮助有相同问题的后来者解惑……

作者
Author:
BesterS    时间: 2024-12-4 17:05
Uus/pMeC6H4-/キ 发表于 2024-12-4 16:48
检查下dumpcp.xyz有没有多余空行、单独拆出的每一帧是否都是正规的.xyz格式(一行原子数+一行注释+与原子数 ...

老师您好,我把格式改为下图形式,只测试两帧还是出现类似问题
作者
Author:
BesterS    时间: 2024-12-4 17:05
图片
作者
Author:
Uus/pMeC6H4-/キ    时间: 2024-12-4 17:42
本帖最后由 Uus/pMeC6H4-/キ 于 2024-12-4 17:52 编辑

奇怪,会不会.xyz文件里有非ASCII字符,比如有的空格不是普通的space (U+0020)而是non-breaking space (U+00A0),所以tcl没解析对坐标行格式呢……我想找一个能复现报错的文件也试一试。

topotools的代码仓库在https://github.com/akohlmey/topotools,可以下载最新的1.9版替换VMD目录下plugins/noarch/tcl/自带的旧版topotools再看看有没有这个问题。如果还是有的话,由于topovarxyz.tcl中变量a定义于lassign $line a x y z这一行,在其后添加puts "$a"之类的语句并重启VMD,可以在执行topo readvarxyz指令时把脚本检测到的变量a输出到命令行,或许有点提示。
作者
Author:
BesterS    时间: 2024-12-4 22:00
Uus/pMeC6H4-/キ 发表于 2024-12-4 17:42
奇怪,会不会.xyz文件里有非ASCII字符,比如有的空格不是普通的space (U+0020)而是non-breaking space (U+0 ...

谢谢您的提醒,我在代码中几处添加了puts函数后,发现问题出现在下图的guessatomdata函数处,我不清楚这些函数的具体作用,但我把这三行直接删了发现可以正常运行了
作者
Author:
BesterS    时间: 2024-12-4 22:01
就是这三行
作者
Author:
Uus/pMeC6H4-/キ    时间: 2024-12-4 22:30
BesterS 发表于 2024-12-4 22:01
就是这三行

guessatomdata是在topoatoms.tcl里面定义的,主要是借助topotools.tcl中储存的元素周期表从原子的已知信息推断未知信息。这三行是用输入的.xyz中每行开头的名称(也就是上面lassign的变量a)推断元素,再从元素推断半径和质量,预计删掉会导致加载到VMD的原子只剩名称和种类信息。

如果希望原子的元素、半径、质量属性符合实际,可以自己用原子选择语句补一补,参考社长博文http://sobereva.com/504和VMD目录下doc文件夹中手册的9.3.2节。




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