Print

Print


Dear Jamila,

> Dear Witaya,
> I read your answer in the SPM discussion list about preprocessing ROIs 
> data.
> I'd like to know if you can do the steps that your specified using 
> masbar toolbox (SPM)?
> If answer is yes, could you please be more descriptive about it?
> For example, how to apply the band-pass filter? or how to reverse the 
> gain of the filter at the middle of the band?
> Thanks in advance for your response,
> Jamila
I sorry that I did not work with Marsbar for my band-pass filtering, but 
I read the data and saved
in a 4D matrix, and then operated on the matrix.

When you design a filter, you will have the magnitude response (in dB) 
of the filter.

Gain = |H(frequency of interest)|

Since

dB = 20 log (Gain)     

Gain = 10^(dB/20).

Normally, after filtering, to correct the magnitude of the filtered 
signal, we do

Filtered Signal * (1/Gain)

but if you do zero-phase filtering, the magnitude correction will be

Filtered Signal * (1/(Gain^2)).


Below is my previous following answer:

> The voxel value means outside the brain are close to zeros while in 
> the brain are not.
> SPM will generate a mask based on that.
>
> You have to be careful about the filter if it is a zero-phase filter 
> or not!
> And what is the gain of the filter at the signal of interest or the 
> middle of the band?
> The filtered data need to be corrected!  In Matlab, the filter will be 
> applied twice
> for the zero-phase filtering, i.e., the filtered signals are filtered 
> twice, I think.
> Thus, the the gain correction must be squared!
>
> It seems that you are working in Matlab.  So why don't you do 
> everything with a Matlab 4D matrix
> and then export the 4D matrix to a series of 3D img files.
>
> Below is the quote of my answer about how to export the 3D (you can 
> modify it for 4D using sprintf)
>
>> Since you work in matlab or can use matlab imread,
>> you can write the data out as below
>>
>> ===========
>>
>> % assume you saved the 3D data matrix, anatdata, in dicom orientation 
>> (R --> L, A --> P, I --> S)  ***
>> load anatdata.mat
>> data_size = [size(anatdata,1) size(anatdata,2) size(anatdata,3)];
>>
>> % write img file
>> file_name_w = 'anatdata.img';% Analyze file name;using sprintf for 
>> the 4-D loop
>> fid_w = fopen(file_name_w,'w');
>> I = zeros(data_size(1),data_size(2));
>> for i = 1:data_size(3)
>>   I(:,:) = anatdata(:,:,i);
>>   I2 = fliplr(I);
>>   fwrite(fid_w,I2,'int16');% ? precision: 'double' , 'float32'  (you 
>> may need 'int16(round(your_data))')
>> end
>> fclose(fid_w);   
>> delete anatdata.mat
>> ==========
>>
>> and then edit/create the hdr with spm99.
>>
>> > I have found a program that will apply a band-pass filter, but the 
>> resulting values in the image files are on the order of -10 to 10, 
>> which then SPM> will not estimate the model because I believe they 
>> are below the default signal threshold of SPM.
>>
>> > Thanks again for the help,
>>

I hope this helps.

Sincerely,

Witaya Sungkarat

>
> On Sep 18, 2008, at 8:10 PM, Witaya Sungkarat wrote:
>
>> Rachel,
>>
>> You may want to:
>>
>> 1) compute the means of the time-series
>> 2) detrend the time-series
>> 3) apply the band-pass filter
>> 4) reverse the gain of the filter at the middle of the band or
>>     at the frequency of interest to the filtered time-series
>> 5) add the means back.
>>
>> Cheers,
>>
>> Witaya Sungkarat
>>
>>> We are working on analyzing our first set of resting state data and 
>>> it appears that the consensus is that the data needs to be bandpass 
>>> filtered.  We created a filter in matlab using the signal processing 
>>> toolbox.  What do we need to do to our preprocessed data before we 
>>> apply the filter?
>>>
>>> Any help is appreciated.
>>>
>>> Thanks
>>> Rachel