Skip to content

Instantly share code, notes, and snippets.

@SherazKhan
Created January 25, 2018 01:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save SherazKhan/866dd62722b46a39ec6f8ce3f1806a68 to your computer and use it in GitHub Desktop.
Save SherazKhan/866dd62722b46a39ec6f8ce3f1806a68 to your computer and use it in GitHub Desktop.
function sol = apply_inverse_raw(fname_raw,fname_inv,tmin, tmax, sel, nave,dSPM,pickNormal)
if ~exist('pickNormal','var')
pickNormal=0;
end
if ~exist('dSPM','var')
dSPM=0;
end
if ~exist('nave','var')
nave=1;
end
if ~exist('sel','var')
sel=1:306;
end
FIFF=fiff_define_constants;
raw = fiff_setup_read_raw(fname_raw);
if ~exist('tmin','var')
from=raw.first_samp/raw.info.sfreq;
else
from=tmin;
end
if ~exist('tmax','var')
to=raw.last_samp/raw.info.sfreq;
else
to = tmax;
end
[data,~] = fiff_read_raw_segment_times(raw,from,to,sel);
lambda2 = 1/9;
inv = mne_read_inverse_operator(fname_inv);
inv = mne_prepare_inverse_operator(inv,nave,lambda2,dSPM);
trans = diag(sparse(inv.reginv))*inv.eigen_fields.data*inv.whitener*inv.proj*double(data);
if (isfield(inv,'eigen_leads_weighted'))
if(inv.eigen_leads_weighted)
sol = inv.eigen_leads.data*trans;
else
sol = diag(sparse(sqrt(inv.source_cov.data)))*inv.eigen_leads.data*trans;
end
else
sol = diag(sparse(sqrt(inv.source_cov.data)))*inv.eigen_leads.data*trans;
end
if inv.source_ori == FIFF.FIFFV_MNE_FREE_ORI
if pickNormal
sol=sol(3:3:end,:);
else
sol1 = zeros(size(sol,1)/3,size(sol,2));
for k = 1:size(sol,2)
sol1(:,k) = sqrt(mne_combine_xyz(sol(:,k)));
end
sol = sol1;
end
end
if(dSPM)
%fprintf(1,'Doing dSPM...');
sol = inv.noisenorm*sol;
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment