Right. Looking at the code, and an example I had on our server, that's a case of parametric modulation. In spm_get_ons, this would be the case where the type of parametric modulation is "time". Also if it's "other", where the number of parameters is one. This is referencing the code
str = ['# parameters (' Uname{1} ')'];
for q = 1:spm_input(str,7,'n1',1);
So here the length of the loop is 1 (i.e, q = 1:1).
In that case, u would have two columns, the second being for the parametric modulation. In that case, spm_orth will leave the first column alone, but will mean correct the second column. (Because the first column and second column are zero on the same rows, and the first column is constant where its not zero.)
Best,
Stephen J. Fromm, PhD
Contractor, NIMH/MAP
(301) 451--9265
________________________________________
From: Misha Koshelev [[log in to unmask]]
Sent: Friday, March 05, 2010 1:08 PM
To: Fromm, Stephen (NIH/NIMH) [C]
Cc: [log in to unmask]
Subject: Re: orthogonalization of regressors
Dr. Fromm:
Thank you so much for your detailed response. I will have to investigate further.
However, I do know for certain that for cases where I've run SPM with a single regressor for an event
length(SPM.Sess.U(i).P)==1
where SPM.Sess.U(i).P.h=1
and length(SPM.Sess.U(i).P.P)=length(SPM.Sess.U(i).ons)
we have mean detrending (subtraction of mean) from our P values before they are multiplied by the HRF.
I believe this may be occurring here as well with the call to spm_orth for a single column.
Thank you
Misha Koshelev
Fromm, Stephen (NIH/NIMH) [C] wrote:
> I could be mistaken---I just quickly read over the code---but I think what's being orthogonalized is the case of parametric modulation.
>
> That is, when you have parametric modulation for a specific trial type, then the regressors for that trial type will be orthogonalized. But there's no orthogonalization _between_ trial types.
>
> Note (at the "zero indent" level of code blocks) the enclosing loop:
> for i = 1:v
> That's a loop over trial types (equivalently, conditions).
>
> I'm pretty sure that if there's no parametric modulation, "u" will be be a single column (or perhaps row), so there's nothing to make orthogonal. If you look at the code, you'll see this line:
> u = [u P.^j];
> That's u being built up into a matrix with more than one column, but it only happens in the case of parametric modulation.
>
> Stephen J. Fromm, PhD
> Contractor, NIMH/MAP
> (301) 451--9265
> ________________________________________
> From: Misha Koshelev [[log in to unmask]]
> Sent: Friday, March 05, 2010 11:31 AM
> To: Fromm, Stephen (NIH/NIMH) [C]; [log in to unmask]
> Subject: Re: orthogonalization of regressors
>
> Stephen J. Fromm wrote:
>> On Tue, 2 Mar 2010 19:21:22 -0600, Misha Koshelev <[log in to unmask]>
>> wrote:
>>
>> Why do you think regressors are always orthogonalized?
>>
>
> I have attached the file spm_get_ons.m for SPM2.
>
> On line 224-226 it reads:
> % orthogonalize inputs
> %---------------------------------------------------------------
> u = spm_orth(u);
>
> Per my lab members advice, this is the line where orthogonalization of regressor is done. In fact, he toggles this line (or not) to determine whether or not his regressors are orthogonalized (if commented out - no orthogonalization). Is this not the case?
>
> Thank you
> Misha Koshelev
>
> --
> Misha Koshelev
> MD/PhD Student
>
> Human Neuroimaging Laboratory
> One Baylor Plaza
> S104
> Baylor College of Medicine
> Houston, TX 77030
--
Misha Koshelev
MD/PhD Student
Human Neuroimaging Laboratory
One Baylor Plaza
S104
Baylor College of Medicine
Houston, TX 77030
|