thanks, just checked in your change.
On 4/17/2024 9:37 PM, Tyler Slouf wrote:
External Email - Use Caution
Hello FreeSurfer Developers,
I found what I believe to be a bug. Typically I can load mgz files into my Matlab program without any trouble. But if the path containing the mgz file has a space then I get an error.
When I run this very short script in Matlab calling the MRIread function (/Applications/freesurfer/7.4.1/matlab/MRIread.m):
filepath = char("/Users/user/Documents/folder space test/data/mri.mgz"); mri = MRIread(filepath);
I get the following error:
gunzip: can't stat: /Users/user/Documents/folder (/Users/user/Documents/folder.gz): No such file or directory gunzip: can't stat: space (space.gz): No such file or directory gunzip: can't stat: test/data/mri.mgz (test/data/mri.mgz.gz): No such file or directory
ERROR: problem reading fname SWITCH expression must be a scalar or a character vector.
Error in load_mgh (line 163) switch type
Error in MRIread (line 90) [mri.vol, M, mr_parms, volsz] = load_mgh(fspec,[],[],headeronly);
Error in test_load_mgz (line 2) mri = MRIread(filepath);
I traced this down to the function *load_mgh.m (*/Applications/freesurfer/7.4.1/matlab/load_mgh.m) where a file path string (char array) is dynamically populated with randomly generated folder names to unzip into. It's about line 69 and looks like this: [status,msg] = unix(sprintf('gunzip -c %s > %s', fname, new_fname));
You may notice that potential spaces in the path names fname and new_fname are not escaped with single quotes. I edited the file to escape the parameterized strings like so: [status,msg] = unix(sprintf("gunzip -c '%s' > '%s'", fname, new_fname));
This solved the problem for me.
Computer details: OS: MacOS Sonoma (latest) Chipset: Apple M1 (aarch64) Calling Program: Matlab R2023b Freesurfer: 7.4.1
Thank you for your time.
Sincerely, Tyler Slouf
Freesurfer mailing list Freesurfer@nmr.mgh.harvard.edu https://mail.nmr.mgh.harvard.edu/mailman/listinfo/freesurfer