我正在使用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次的路徑,並且不知道發生了什麼。
您使用.nii文件,或其壓縮版本?如果是後者,則有可能在另一個線程嘗試讀取解壓縮版本時解壓縮未完成。 –
感謝您的快速回復!我確實使用.nii.gz。我現在看到,read函數會檢查圖像是否需要進行gunzip()編輯或解壓縮後的版本是否已經存在。所以它可能是另一個線程試圖儘早讀取解壓縮的版本? –
這是我的猜測。簡單地檢查文件是否存在可能不是解壓縮的好主意,因爲在解壓過程中,文件存在,但如果您讀取文件,它可能會出錯。這可能是你的第二個例子顯示文件存在的原因。 –