But nevertheless there can be big differences between the two methods of
reading the data.
Example with 2800 time points (350 MB):
>> tic, N=nifti('testdata4D.nii'); toc
Elapsed time is 0.006311 seconds.
>> tic , X=N.dat(:,:,:,:); toc
Elapsed time is 1.323778 seconds.
>> tic, V=spm_vol('testdata4D.nii'); toc
Elapsed time is 22.235127 seconds.
>> tic , Y=spm_read_vols(V); toc
Elapsed time is 39.643382 seconds.
Am 28.07.2011 19:31, schrieb Dennis Thompson:
> I suspect this issue has much more to do with the OS, the local file
> system, and the network file system and how the 3 interact. It can get
> very complicated.
>
> I have written several scrips that use spm_read_vols (including time
> series analysis) over network file systems. Work great on a 64bit
> linux server reading files using NFSv4 and with the server using XFS
> for the local file system.
>
> On Wed, Jul 27, 2011 at 5:08 PM, John Ashburner<[log in to unmask]> wrote:
>> I never use spm_read_vols myself. Are the nifti routines any faster?
>>
>> N=nift('file.nii');
>> tic = X=N.dat(:,:,:,:); toc
>>
>> It's unlikely that we're going to re-code this stuff to make it work
>> faster on the kind of device we don't have access too.
>>
>> Best regards,
>> -John
>>
>>
>> On 27 July 2011 22:00, Welsh, Robert<[log in to unmask]> wrote:
>>> Hi authors of SPM8,
>>>
>>> I've noticed a horrendous performance hit when accessing time-series data
>>> when that data sits on a NAS device.
>>>
>>> Let's call it an SPM8 x NAS interaction.
>>>
>>> If I read the 4D dataset with spm_read_vols from our 48TB NAS it takes
>>> about 250 seconds, however if I read that 4D dataset with some homegrown
>>> matlab code to just open the file, skip over the header and read the data
>>> in, then it only takes about 2.5 seconds, or 100 times shorter! This is on
>>> the exact same file on the exact same NAS device. When I run spm_read_vols
>>> through the system profiler of course the time is pretty much evenly split
>>> between spm_matrix and spm_slice_vol. The impact on our throughput is
>>> high, that is processes are being IO limited when indeed they should not
>>> be. In fact for some custom functional connectivity processing I forego
>>> the use of the spm_read_vols to get my time-series data.
>>>
>>> Can I ask the authors to examine writing a different piece of code for
>>> reading time-series data that could jump around the spm_slice_vol and
>>> spm_matrix given that the data has to already be resliced on disk and thus
>>> the application of spm_matrix maybe is redundant, if having statistics
>>> performed? Given that NAS devices are becoming more popular it seems that
>>> this will be having an impact for others eventually.
>>>
>>> I've seen this on both linux and mac os x systems running both matlab 2007
>>> and matlab 2009.
>>>
>>> Have others noticed this issue?
>>>
>>> -Robert Welsh
>>>
>>> **********************************************************
>>> Electronic Mail is not secure, may not be read every day, and should not be used for urgent or sensitive issues
>>>
>>
>
--
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Dr. Michael Erb
Dep. Neuroimaging and MR-Physics
University Hospital Tübingen
Hoppe-Seyler-Str. 3
72076 Tübingen, Germany
Tel.: +49(0)7071/2987753 priv. +49(0)7071/61559
Fax.: +49(0)7071/294371
e-mail: <[log in to unmask]>
www: http://www.medizin.uni-tuebingen.de/nrad/sektion/
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
|