0

Sun Grid Engineを使用するクラスタでMatlabを使用してイメージ処理を行っています。私の個人的なラップトップでコードは正常に動作しますが、クラスタ上で実行すると、見つからないファイルのいくつかのエラーが発生します。たとえば、存在する.nii(nifti)ファイル(シェルで対話的にmatlabを実行すると読み込める)が見つかりません。出力ログからの抜粋:Sun Grid Engine使用時にファイルが見つかりません

{^HError using load_nii_ext (line 97) 
Cannot find file 
    "/path/imageFile.nii". 

そして、私はまた、(すべては自分のラップトップ上でうまく働いた後処理ツールボックスで読めるように.mps拡張子を持っている必要があります)、XML構造ファイルからエラーが出ます。出力ログから別の抜粋:最初の行は1)ことを私はスクリプトに含めてから取得出力、

if exist(strcat(folder, fileName), 'file') == 2 disp([strcat(folder, fileName) ' exists']) end

だから、それは奇妙だで、この2番目のエラーメッセージで

/path/pointSetFile.mps exists {^HError using readpointsmps (line 24) Failed to read XML file /path/pointSetFile.mps.

私はファイルを見ることができます2)私はmatlabの関数によってMATLAB関数を手動で開くことができます、3)exist()実際には存在しますが、関数xmlread()とが突然見つからない場合。

追加情報:-nodisplay -nodesktop -nosplashというフラグを付けてスクリプトを実行していますが、現在はSGEでスクリプトを2つのタスクとして実行しています。メモリは良い、私はそれを与える5GBのと私のすべての画像を組み合わせて約1.5GBのです。

私はルート/から始まる絶対パスを使用していますが、パス文字は約200回手紙を読んでいて、何が起こっているのか分かりません。

+0

.niiファイルまたはその圧縮バージョンを使用していますか?後者の場合、別のスレッドが解凍されたバージョンを読み込もうとしている間に解凍が行われない可能性があります。 –

+0

お返事ありがとうございます!私は確かに.nii.gzを使用しています。 read関数は、イメージをgunzip()する必要があるかどうか、または圧縮解除されたバージョンが既に存在するかどうかをチェックするようになった。したがって、他のスレッドが圧縮解除されたバージョンを早期に読み込もうとしている可能性がありますか? –

+0

それは私の推測でした。ファイルが存在するかどうかを確認するだけでは、圧縮解除の間にファイルが存在するため、解凍のための良い考えではないかもしれませんが、ファイルを読むとエラーになる可能性があります。これは、ファイルが存在することを示す2番目の例の理由かもしれません。 –

答えて

0

私は今問題を解決しました。

@ Xiangrui Liは、欠落した.niiファイルは、.niiファイルと.nii.gzファイルの解凍、読み取り、削除の妨げに起因するとのコメントを指摘しました。それは確かに問題でした。ありがとう!

2番目の問題は、ファイル名にウムラウトがあることがわかりました。どうやら、システムとmatlab、さらには他のプロセスによってファイル名がどのようにエンコードされるかには違いがあったようです。ウムラウトで文字を削除すると、問題が解決しました。

関連する問題