计算化学公社

标题: ASMD中py2脚本在py3中不适用,求助 [打印本页]

作者
Author:
知黑守白    时间: 2021-5-12 10:00
标题: ASMD中py2脚本在py3中不适用,求助
在amber中做ASMD,stage1结束之后需要判断轨迹中最符合 Jarzynski Average 的那条轨迹


官方教程提供了 ASMD.py脚本用于判断


但是目测这个官方的脚本是基于python2版本做的,系统内置python3.6,运行这个脚本会报错,如图


求助,脚本如何修改能使之适配python3?


万分感谢!!!

作者
Author:
snljty    时间: 2021-5-12 14:14
本帖最后由 snljty 于 2021-5-12 14:16 编辑

108行
  1.   print >> sys.stdout, "The file closest to the Jarzynski Average is:   %s" % asmdfile
复制代码

改成
  1.   print("The file closest to the Jarzynski Average is:   %s" % asmdfile)
复制代码

然后70-72行
  1. #open standard output/error files
  2.   sys.stdout = os.fdopen(sys.stdout.fileno(),'w',0)
  3.   sys.stderr = os.fdopen(sys.stderr.fileno(),'w',0)
复制代码
删去。这两个变量除了上面改的地方,压根没用到。而且python3不需要自己打开这两个文件。
顺便,python3自带的库里应该有个叫2to3(.py/.exe/没有后缀)的程序,直接用这个就能完成很多转换。没有测试文件只能改到这里,还有什么问题的话可以把测试文件贴上来。

作者
Author:
知黑守白    时间: 2021-5-12 18:34
snljty 发表于 2021-5-12 14:14
108行

改成

哇!!  已经好用了!!!!  感谢您!!!!!
作者
Author:
amber菜鸟    时间: 2022-8-26 16:41
楼主您好,我在执行ASMD.py这个脚本的时候,出现这个问题,请问如何解决呢?

python ASMD.py -i asmd*.work.dat.1 -o jar.stage1.dat        
Traceback (most recent call last):
  File "ASMD.py", line 11, in <module>
    raise ImportError("Unable to load the necessary modules")
ImportError: Unable to load the necessary modules




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