[Mne_analysis] sLORETA
Alexandre Gramfort
gramfort at nmr.mgh.harvard.edu
Thu Sep 1 12:56:35 EDT 2011
FYI we did the sLORETA matlab code with Matti last week.
it's there
https://github.com/mne-tools/mne-matlab
and the related commit:
https://github.com/mne-tools/mne-matlab/commit/a7328324e5f56bbf4caa7582db4aa2fe4c5697e9
Alex
On Thu, Sep 1, 2011 at 12:34 PM, Pavan Ramkumar <pavan at neuro.hut.fi> wrote:
> Dear all,
>
> As has been pointed out, both the Pascual-Marqui estimate (sLORETA) and
> Dale's estimate (dSPM) normalize the MNE source estimate by the noise
> estimate at each source point.
>
> Slightly related issue. I have recently been trying to implement the
> sLORETA noisenorm in Matlab. Sharing some lines of code to illustrate the
> difference between dSPM and sLORETA estimates (I may be wrong):
>
> %----------------------------------
> %The common steps work as follows:
> %----------------------------------
> inv_op = mne_prepare_inverse_operator(inv_op, 1, 1/snr, 1);
> inv_op.operator =
> diag(sparse(sqrt(inv_op.source_cov.data)))*inv_op.eigen_leads.data*diag(sparse(inv_op.reginv))*inv_op.eigen_fields.data*inv_op.whitener*inv_op.proj;
>
> % Extract the source covariance
> R = diag(sparse(inv_op.source_cov.data));
> % Whiten the forward solution
> G = inv_op.whitener*fwd_op.sol.data;
> % Whiten the noise covariance
> % C is not necessarily an identity because of the projections and SSS
> % (some entries are zero)
> C = inv_op.whitener*inv_op.noise_cov.data*inv_op.whitener';
>
> % Compute the inverse operator
> inv_op.operator = R*G'*pinv(G*R*G' + 1/snr*C)*inv_op.whitener;
> % Apply the inverse retaining only surface normal components
> source = inv_op.operator(:,3:3:end)' * signal;
>
> %---------------------
> %dSPM works as follows:
> %---------------------
> % Apply the Dale noisenorm which has been precomputed in your inverse
> operator structure inv_op
> dSPMsource = inv_op.noisenorm * source;
>
> %------------------------
> %sLORETA works as follows:
> %------------------------
> % Compute the sloreta operator
> for k=1:2*Ng
> inv_op.sloretanoisenorm{k}.data =
> pinv(inv_op.operator2(3*k-2:3*k,:)*G(:,3*k-2:3*k));
> end
>
> % Apply the sLORETA noisenorm
> for k=1:2*Ng
> sLORETAsource(k,:) =
> source(3*k-2:3*k,:)'*inv_op.sloretanoisenorm{k}.data*source(3*k-2:3*k,:);
>
> Kind regards,
> Pavan
>
>>> Yes.. the sLORETA solution scales the MNE by a factor that depends on
>>> SNR
>>> at each vertex. Thus it supresses noisy vertices a little. The MNE is
>>> the
>>> unscaled version which is in current units (say nano Amps) and hence you
>>> can compare the left and right directly in a physiological sense.
>>
>> that can be problematic as MNE amplitudes are biased by the number of
>> dipoles with the same forward field. Comparing MNE in one location between
>> conditions is ok but comparing raw MNE between 2 brain regions is a
>> problem.
>>
>> I would really do a z-score if it's any better than raw dSPM or sLORETA.
>>
>> Alex
>> _______________________________________________
>> Mne_analysis mailing list
>> Mne_analysis at nmr.mgh.harvard.edu
>> https://mail.nmr.mgh.harvard.edu/mailman/listinfo/mne_analysis
>>
>>
>> The information in this e-mail is intended only for the person to whom it
>> is
>> addressed. If you believe this e-mail was sent to you in error and the
>> e-mail
>> contains patient information, please contact the Partners Compliance
>> HelpLine at
>> http://www.partners.org/complianceline . If the e-mail was sent to you in
>> error
>> but does not contain patient information, please contact the sender and
>> properly
>> dispose of the e-mail.
>>
>
>
> Pavan Ramkumar
> Brain Research Unit
> MEG Core
> Low Temperature Laboratory
> Aalto University School of Science
> Espoo, Finland
>
More information about the Mne_analysis
mailing list