0

我正在使用Matlab在使用Sun Grid Engine的羣集上執行某些圖像處理。在我的個人筆記本電腦上,代碼運行良好,但是當我在羣集上運行它時,出現了幾個無法找到的文件錯誤。例如,存在一個.nii(nifti)文件(我可以在shell中以交互方式運行matlab時讀取它)。從輸出日誌摘錄:使用Sun Grid Engine時未找到文件(存在)

{^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的腳本,並且我當前將腳本作爲2個任務與SGE一起運行。內存應該是好的,我給它5GB和所有我的圖像結合大約1.5GB。

我使用絕對路徑從根/開始,一直在逐字讀取大約200次的路徑,並且不知道發生了什麼。

+0

您使用.nii文件,或其壓縮版本?如果是後者,則有可能在另一個線程嘗試讀取解壓縮版本時解壓縮未完成。 –

+0

感謝您的快速回復!我確實使用.nii.gz。我現在看到,read函數會檢查圖像是否需要進行gunzip()編輯或解壓縮後的版本是否已經存在。所以它可能是另一個線程試圖儘早讀取解壓縮的版本? –

+0

這是我的猜測。簡單地檢查文件是否存在可能不是解壓縮的好主意,因爲在解壓過程中,文件存在,但如果您讀取文件,它可能會出錯。這可能是你的第二個例子顯示文件存在的原因。 –

回答

0

我已經解決了現在的問題。

@香瑞麗在評論中指出,缺失的.nii文件是由於干擾了.nii和.nii.gz文件的解壓,讀取和刪除。這確實是個問題。謝謝!

我發現第二個問題是由於文件名中的元音變音。顯然,系統和matlab甚至其他過程如何對文件名進行編碼是有區別的。用變音器刪除字符解決了這個問題。

相關問題