计算化学公社

标题: MDAnalyse无法读取trr文件 [打印本页]

作者
Author:
jrfjrf123    时间: 2025-2-12 09:58
标题: MDAnalyse无法读取trr文件
本帖最后由 jrfjrf123 于 2025-2-12 10:23 编辑

想请问一下,我在使用MDAnalyse读取trr文件时出现如下的报错:
(环境是在pycharm中创建的,版本为Python 3.12.7,输入的拓扑文件为Gromacs的tpr文件,轨迹文件为trr文件,Gromacs版本为2024.3)


Traceback (most recent call last):
  File "D:\pythonProject\data_analyse\PU\end_to_end_ACF.py", line 8, in <module>
    trr_data = mda.Universe("{}/{}".format(root_path, top_file_name), "{}/{}".format(root_path, traj_file_name))
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\pythonProject\test\venv\Lib\site-packages\MDAnalysis\core\universe.py", line 436, in __init__
    self.load_new(coordinates, format=format, in_memory=in_memory,
  File "D:\pythonProject\test\venv\Lib\site-packages\MDAnalysis\core\universe.py", line 665, in load_new
    self.trajectory = reader(filename, format=format, **kwargs)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\pythonProject\test\venv\Lib\site-packages\MDAnalysis\lib\util.py", line 2562, in wrapper
    return func(self, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\pythonProject\test\venv\Lib\site-packages\MDAnalysis\coordinates\XDR.py", line 148, in __init__
    self._xdr = self._file(self.filename)
                ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "MDAnalysis\\lib\\formats\\libmdaxdr.pyx", line 135, in MDAnalysis.lib.formats.libmdaxdr._XDRFile.__cinit__
  File "MDAnalysis\\lib\\formats\\libmdaxdr.pyx", line 199, in MDAnalysis.lib.formats.libmdaxdr._XDRFile.open
OSError: XDR read error = notfound
Exception ignored in: <function ReaderBase.__del__ at 0x0000020BCEEB7B00>
Traceback (most recent call last):
  File "D:\pythonProject\test\venv\Lib\site-packages\MDAnalysis\coordinates\base.py", line 1531, in __del__
    self.close()
  File "D:\pythonProject\test\venv\Lib\site-packages\MDAnalysis\coordinates\XDR.py", line 186, in close
    self._xdr.close()
    ^^^^^^^^^
AttributeError: 'TRRReader' object has no attribute '_xdr'



我查了一下这可能是由于xdrlib相关的库文件缺失导致的,但我检查了一下环境中安装的依赖,存在xdrlib,应该是安装MDAnalyse时同时安装的:
(, 下载次数 Times of downloads: 18)

想请问一下,造成这种现象的原因可能是什么,该如何解决


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





作者
Author:
lucky1999    时间: 2025-2-12 10:06
可以的话,上传一下tpr和trr文件
作者
Author:
jrfjrf123    时间: 2025-2-12 10:13
lucky1999 发表于 2025-2-12 10:06
可以的话,上传一下tpr和trr文件

已上传了trr与tpr文件,由于原trr过大,我只截取了一帧的trr,但报错是同样的
作者
Author:
lucky1999    时间: 2025-2-12 10:45
我刚刚试了一下,在我的电脑上是可以正常读取的,你可以试试更新一下MDAnalysis的版本,我的MDAnalysis版本是2.8.0。
作者
Author:
jrfjrf123    时间: 2025-2-12 11:38
本帖最后由 jrfjrf123 于 2025-2-12 11:43 编辑
lucky1999 发表于 2025-2-12 10:45
我刚刚试了一下,在我的电脑上是可以正常读取的,你可以试试更新一下MDAnalysis的版本,我的MDAnalysis版本 ...

我的版本是没问题的,但我找到原因了,应该是我的地址中存在中文,导致程序无法识别文件所在的地址

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

path1 和 path2 的路径不包含中文,path3和path4的路径包含中文
前者读取成功了,后者发生了同样的错误提示

我怀疑是因为MDAnalysis读取轨迹时会写入一个npz文件,这个路径在传递过程中出现编码问题
目前来说我使用英文路径应该就能解决这个问题

但不知道您有没有什么比较好的方法解决这个中文路径问题


补充:使用MDAnalysis读取gro文件的时候就不存在这个bug,估计是MDAnalysis中TRRReader独有的问题

          可能是因为使用了xrd这个c语言库,不像纯python脚本那样支持中文路径(但我不太懂C,所以不知道对不对)

作者
Author:
Loading0760    时间: 2025-2-12 13:31
jrfjrf123 发表于 2025-2-12 11:38
我的版本是没问题的,但我找到原因了,应该是我的地址中存在中文,导致程序无法识别文件所在的地址

解决办法就是文件夹及文件名称不要有中文和空格




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