使用 Sun Grid Engine 时找不到(存在的)文件
Files (that exist) not found when using Sun Grid Engine
我正在使用 Matlab 在使用 Sun Grid Engine 的集群上进行一些图像处理。在我的个人笔记本电脑上,代码 运行 没问题,但是当我在集群上 运行 它时,我收到几个无法找到文件的错误。例如,找不到存在的 .nii (nifti) 文件(当我在 shell 中交互式地 运行 matlab 时,我可以读取它)。输出日志的摘录:
{^HError using load_nii_ext (line 97)
Cannot find file
"/path/imageFile.nii".
而且我还从 xml 结构化文件(需要有 .mps 扩展名才能被后处理工具箱读取,这在我自己的笔记本电脑上运行良好)中得到错误。输出日志的另一个摘录:
/path/pointSetFile.mps exists
{^HError using readpointsmps (line 24)
Failed to read XML file
/path/pointSetFile.mps.
在第二条错误消息中,第一行是我在脚本中包含的输出,
if exist(strcat(folder, fileName), 'file') == 2
disp([strcat(folder, fileName) ' exists'])
end
所以很奇怪 1) 我可以看到文件,2) 我可以用 Matlab 手动打开它们,3) 根据 matlab 函数 exist()
它们确实存在,但是当函数 xmlread()
和read_niigz()
想打开突然找不到了
作为额外信息:我 运行 带有标志 -nodisplay -nodesktop -nosplash 的脚本,我目前 运行 这些脚本作为 SGE 的 2 个任务。内存应该不错,我给它5GB,我所有的图像加起来大约1.5GB。
我使用的是从根 /
开始的绝对路径,现在已经一个字母一个字母地阅读路径大约 200 遍了,完全不知道发生了什么。
我现在已经解决了问题
@Xiangrui Li在评论中指出,.nii文件丢失是由于干扰了.nii和.nii.gz文件的解压、读取和删除。这确实是问题所在。谢谢!
我发现第二个问题是由于文件名中的元音变音引起的。显然,系统和 matlab 甚至其他涉及的进程对文件名进行编码之间存在差异。删除带有变音符号的字符解决了问题。
我正在使用 Matlab 在使用 Sun Grid Engine 的集群上进行一些图像处理。在我的个人笔记本电脑上,代码 运行 没问题,但是当我在集群上 运行 它时,我收到几个无法找到文件的错误。例如,找不到存在的 .nii (nifti) 文件(当我在 shell 中交互式地 运行 matlab 时,我可以读取它)。输出日志的摘录:
{^HError using load_nii_ext (line 97)
Cannot find file
"/path/imageFile.nii".
而且我还从 xml 结构化文件(需要有 .mps 扩展名才能被后处理工具箱读取,这在我自己的笔记本电脑上运行良好)中得到错误。输出日志的另一个摘录:
/path/pointSetFile.mps exists
{^HError using readpointsmps (line 24)
Failed to read XML file
/path/pointSetFile.mps.
在第二条错误消息中,第一行是我在脚本中包含的输出,
if exist(strcat(folder, fileName), 'file') == 2
disp([strcat(folder, fileName) ' exists'])
end
所以很奇怪 1) 我可以看到文件,2) 我可以用 Matlab 手动打开它们,3) 根据 matlab 函数 exist()
它们确实存在,但是当函数 xmlread()
和read_niigz()
想打开突然找不到了
作为额外信息:我 运行 带有标志 -nodisplay -nodesktop -nosplash 的脚本,我目前 运行 这些脚本作为 SGE 的 2 个任务。内存应该不错,我给它5GB,我所有的图像加起来大约1.5GB。
我使用的是从根 /
开始的绝对路径,现在已经一个字母一个字母地阅读路径大约 200 遍了,完全不知道发生了什么。
我现在已经解决了问题
@Xiangrui Li在评论中指出,.nii文件丢失是由于干扰了.nii和.nii.gz文件的解压、读取和删除。这确实是问题所在。谢谢!
我发现第二个问题是由于文件名中的元音变音引起的。显然,系统和 matlab 甚至其他涉及的进程对文件名进行编码之间存在差异。删除带有变音符号的字符解决了问题。