⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mfbox_tool_compare_run.m

📁 toolbox for spm 5 for data, model free analysis
💻 M
📖 第 1 页 / 共 3 页
字号:
handles = recalcinfo(handles,cur,num);handles.components = struct('timeline',[]);% --- Executes on button press in spat_auto_group.function handles=spat_auto_group(handles)l = [0 cumsum(cellfun(@(x) size(x.A,2),handles.mfbss))];os = handles.frontend.orderselect;if (os==1)    g = mfbox_findgroups(real(handles.spatial_cross_data),'icatype', ...        'none','normalize',1);elseif (os==2)    g = mfbox_findgroups(imag(handles.spatial_cross_data),'icatype', ...        'none','normalize',1);endhandles.grouping = convertgroup(g,l);% --- Executes on button press in temp_spat_auto_group_group.function handles=temp_auto_group(handles)l = [0 cumsum(cellfun(@(x) size(x.A,2),handles.mfbss))];os = handles.frontend.orderselect;if (os==1)    g = mfbox_findgroups(real(handles.temporal_cross_data),'icatype', ...        'none','normalize',1);elseif (os==2)    g = mfbox_findgroups(imag(handles.temporal_cross_data),'icatype', ...        'none','normalize',1);endhandles.grouping = convertgroup(g,l);% --- Executes on button press in run_ica.function handles=run_ica(handles)% ---function [sc,tc]=update_cross(tl,atc,btc,m,adat,bdat)[f,tcf] = mfbox_cumindependence(atc,btc);tcs = abs(mfbox_cov(atc,btc));tc = complex(tcf,tcs);m1 = m((m==1)|(m==3)); m2 = m((m==2)|(m==3));adat = adat(m1==3,:); bdat = bdat(m2==3,:);[f,scf] = mfbox_cumindependence(adat,bdat);[f,scs] = mfbox_overlap(adat,bdat);sc = complex(scf,scs);% generates String 'b' repeatedly with 'a' as suffix.function g=mknames(a,b)g = mknamespat(1:a,[b '%d']);function g=mknamespat(a,b)g = {};%'end' indicates last array-index, %s:=String of characters %d=decimal notation (signed)if (iscell(a))    for i=1:length(a), g{end+1} = sprintf(b,a{i}); endelse    for i=1:length(a), g{end+1} = sprintf(b,a(i)); endend% ---function g=fixgrouping(g,a)comp = mat2cell(zeros(1,size(g,1)),1,ones(size(g,1),1));for j=1:size(g,1)    for i=1:size(g,2)        ga = g{j,i};        if (~isempty(ga))            ga = ga((ga<=a(j))&(ga>0));            ga = ga(all(repmat(ga(:)', ...                length(comp{j}),1)~=repmat(comp{j}',1,length(ga)),1));            comp{j} = unique([comp{j},ga]);            g{j,i} = ga;        end    endendfor j=1:size(g,1)    if (a(j)>0)        ga = 1:a(j);        ga = ga(all(repmat(ga(:)', ...            length(comp{j}),1)~=repmat(comp{j}',1,a(j)),1));        for i=1:length(ga), g{j,end+1} = ga(i); end    endendif (~isempty(g)), g = g(:,any(cellfun('length',g)~=0,1)); end% ---function [mask,adat,bdat,P1,P2]=getdat(P1,G1,D1,P2,G2,D2)if (~isempty(D1))    s1 = size(D1);    D1 = reshape(D1,[],s1(end));    [a,P1] = mfbox_databackend('getic',P1,D1(:,1),G1);    m1 = ~isnan(a);    adat = zeros(sum(m1(:)),s1(end));    adat(:,1) = a(m1);    for i=2:s1(end)        [a,P1] = mfbox_databackend('getic',P1,D1(:,i),G1);        adat(:,i) = a(m1);    endelse    m1 = 0;    adat = 0;endif (~isempty(D2))    s2 = size(D2);    D2 = reshape(D2,[],s2(end));    [b,P2] = mfbox_databackend('getic',P2,D2(:,1),G2);    m2 = ~isnan(b);    bdat = zeros(sum(m2(:)),s2(end));    bdat = b(m2);    for i=2:s2(end)        [b,P2] = mfbox_databackend('getic',P2,D2(:,i),G2);        bdat(:,i) = b(m2);    endelse    m2 = 0;    bdat = 0;endmask = uint8(m1+(m2*2));% ---function [tl,atc,btc]=gettcs(A1,T1,A2,T2)if (length(T1)==length(T2))    if (sum((T1(:)-T2(:)).^2)<0.01)        tl = T1; atc = A1; btc = A2;        return    endendltc = 0;if (~isempty(A1)), ltc = max(ltc,max(T1)); endif (~isempty(A2)), ltc = max(ltc,max(T2)); end%tl = linspace(0,ltc,(2*ltc)+1);tl = linspace(0,ltc,ltc+1);atc = zeros(length(tl),size(A1,2));btc = zeros(length(tl),size(A2,2));for i=1:size(A1,2)    atc(:,i) = interp1(T1,A1(:,i),tl,'linear',0);endfor i=1:size(A2,2)    btc(:,i) = interp1(T2,A2(:,i),tl,'linear',0);end% ---function g=convertgroup(h,l)uh = unique(h);g = cell(length(l)-1,length(uh));for i=1:length(uh)    for j=2:length(l)        p = find(h==uh(i));        p = p(p>l(j-1));        p = p(p<=l(j));        if (~isempty(p)), p = p-l(j-1); end        g{j-1,i} = p(:)';    endend% --- Executes on button press in spatiotemp_plot.function handles=spatiotemp_plot(handles)d = handles.frontend.varthresh;curgroup = handles.frontend.groups;g = handles.grouping;bg = []; atlas = {};fic = []; fnames = [];ftl = []; oic = [];dmask = [];for sel=1:length(handles.mfbss)    x = g{sel,curgroup};    if (~isempty(g{sel,curgroup}))        if (isempty(bg))            [bg,handles.private{sel}] = mfbox_databackend('getbg',handles.private{sel});            atlas = mfbox_databackend('getatlas',handles.private{sel});        end        n = handles.mfbss{sel}.S.tag(x);        name = mat2cell(repmat(', ',1,2*length(n)-1),1,2*ones(1,2*length(n)-1));        name(1:2:end) = n; name = [name{:}];        fnames = [fnames;name(:)];        for s=1:length(x)            tc = handles.components(sel).tcs(:,x(s))';            tl = handles.components(sel).timeline;            ic = handles.mfbss{sel}.S.dat(:, ...                unique(handles.mfbss{sel}.S.map(:,x(s))));            [ics,handles.private{sel}] = mfbox_databackend('getic',handles.private{sel},ic, ...                handles.mfbss{sel}.grid(:,handles.mfbss{sel}.S.mask));            if (isempty(fic))                oic = ics;                ftl = tl;                osmask = ~isnan(ics);                dmask = osmask;                ic = ics(osmask)*tc(:)'; % TODO: use the right transformations                fic = ic;            else                smask = ~isnan(ics);                if (mfbox_cov(ics(smask&osmask),oic(smask&osmask))<0) % test on overlap                    ics = -ics;                    tc = -tc;                end                ic = ics(smask)*tc(:)'; % TODO: use the right transformations                if (all(smask(:)==dmask(:)))                    fic = fic+ic;                else                    nmask = dmask|smask;                    ofic = fic;                    fic = zeros(sum(nmask(:)),size(ofic,2));                    tdmask = dmask(nmask);                    tsmask = smask(nmask);                    fic(tdmask,:) = ofic;                    fic(tsmask,:) = fic(tsmask,:)+ic;                    dmask = nmask;                end            end        end    endendfic(isnan(fic)|isinf(fic)) = 0;nmask = false(size(fic));smask = any(fic~=0,2);tmask = any(fic~=0,1);nmask(smask,tmask) = true;mask = false(length(dmask(:)),size(fic,2));mask(dmask,:) = nmask;fic = reshape(fic(nmask),[sum(smask(:)),sum(tmask(:))]);[tU,D,tV] = svd(fic,'econ'); %TODO: speed this up!dD = diag(D);[dummy,s] = sort(dD,'descend');U = zeros(size(mask,1),min(2,size(D,1)));V = zeros(size(mask,2),min(2,size(D,1)));U(any(mask,2),:) = tU(:,s(1:min(2,size(D,1))));V(any(mask,1),:) = tV(:,s(1:min(2,size(D,1))));o = [1,3];if (size(U,2)>1)    mfbox_plotic({reshape(U(:,1),size(oic)),reshape(abs(U(:,2)), ...        size(oic)),abs(V(:,2))},{V(:,1),ftl},fnames(:)', ...        {o(mod(d-1,2)+1),d>2},bg,atlas);    a = questdlg(sprintf('Export?\n'), ...        'Compare','Yes','No','No');    if (strcmp(a,'Yes'))        [f,di] = uiputfile('*.svg','Select output file ...');        if (isempty(f)), return; end        tmpfile = fullfile(di,f);        f = fopen(tmpfile,'w');        dat = mfbox_plotic({reshape(U(:,1),size(oic)),reshape(abs(U(:,2)), ...            size(oic)),abs(V(:,2))},{V(:,1),ftl},fnames(:)', ...            {o(mod(d-1,2)+1),d>2},bg,atlas,1);        fwrite(f,dat,'char');        fclose(f);    endelse    mfbox_plotic(reshape(U(:,1),size(oic)),{V(:,1),ftl},fnames(:)', ...        {o(mod(d-1,2)+1),d>2},bg,atlas);    a = questdlg(sprintf('Export?\n'), ...        'Compare','Yes','No','No');    if (strcmp(a,'Yes'))        [f,di] = uiputfile('*.svg','Select output file ...');        if (isempty(f)), return; end        tmpfile = fullfile(di,f);        f = fopen(tmpfile,'w');        dat = mfbox_plotic(reshape(U(:,1),size(oic)),{V(:,1),ftl},fnames(:)', ...            {o(mod(d-1,2)+1),d>2},bg,atlas,1);        fwrite(f,dat,'char');        fclose(f);    endend% --- Executes on button press in spatial_match.function handles=spatial_match(handles)sel1 = handles.frontend.dataselect1;curgroup = handles.frontend.groups;g = handles.grouping;gr = g{sel1,curgroup};j = zeros(size(handles.components(sel1).mask),'uint16');j(handles.components(sel1).mask) = sum( ...    handles.components(sel1).dat(:,gr),2);ic = j;for i=1:size(g,1)    if (i~=sel1)        j = zeros([numel(handles.components(i).mask), ...            size(handles.components(i).dat,2)],'uint16');        j(handles.components(i).mask,:) = handles.components(i).dat;        nic = j;        c = abs(mfbox_cov(double(ic(:)),double(nic)));        [c,m] = max(c);        handles.grouping{i,curgroup} = [m];        for j=1:size(g,2)            if (j~=curgroup)                handles.grouping{i,j} = substract(handles.grouping{i,j},m);                if (numel(handles.grouping{i,j})==0)                    handles.grouping{i,j} = [];                 end            end        end    endendhandles.grouping = fixgrouping(handles.grouping, ...    cellfun(@(x) size(x.A,2),handles.mfbss));% --- Executes on button press in temporal_match.function handles=temporal_match(handles)sel1 = handles.frontend.dataselect1;curgroup = handles.frontend.groups;g = handles.grouping;gr = g{sel1,curgroup};j = handles.components(sel1).tcs(:,gr);tc = sum(j*diag(sign(diag(cov(j)))),2);tl = handles.components(sel1).timeline;for i=1:size(g,1)    if (i~=sel1)        ntl = handles.components(i).timeline;        ntc = handles.components(i).tcs;        c = abs(mfbox_cov(tc,ntc)); %TODO: use timelines        [c,m] = max(c);        handles.grouping{i,curgroup} = [m];        for j=1:size(g,2)            if (j~=curgroup)                handles.grouping{i,j} = substract(handles.grouping{i,j},m);                if (numel(handles.grouping{i,j})==0)                    handles.grouping{i,j} = [];                 end            end        end    endendhandles.grouping = fixgrouping(handles.grouping, ...    cellfun(@(x) size(x.A,2),handles.mfbss));% ---function t=substract(t,m)for i=m    t = t(t~=i);end% --- Executes on button press in load_comparedata.function handles=load_comparedata(handles)[f,d] = uigetfile('*.mfc','Select COMPARE file ...');if (ischar(f))    filename = fullfile(d,f);else    filename = '';end[handles,handles.comparefilename] = mfbox_databackend('loadcompare', ...    handles,filename,1);for i=1:length(handles.mfbss)    mfbss = handles.mfbss{i};    dat = struct();    if (isfield(mfbss,'bg')), dat = struct('bg',mfbss.bg); end    if (isfield(mfbss,'bgmat')), dat.bgmat = mfbss.bgmat; end    if (isfield(mfbss,'bmmat')), dat.bmmat = mfbss.bmmat; end    if (isfield(mfbss,'bmvolmat')), dat.bmvolmat = mfbss.bmvolmat; end    if (isfield(mfbss,'bmvoldim')), dat.bmvoldim = mfbss.bmvoldim; end    handles.private{i} = mfbox_databackend('init',struct(),dat);endnum = length(handles.mfbss);cur = 1;handles = recalcinfo(handles,cur,num);handles.frontend.position = 0;handles.frontend.orderselect = 1;handles.frontend.varthresh = 1;handles.frontend.groups = 1;handles.frontend.zoomfact = 1;handles.frontend.selectdata = 1;handles.frontend.dataselect1 = 1;handles.frontend.dataselect2 = 2;% --- Executes on button press in save_comparedata.function handles=save_comparedata(handles)[f,d] = uiputfile('*.mfc','Select COMPARE file ...');if (ischar(f))    filename = fullfile(d,f);else    filename = '';endhandles.comparefilename = mfbox_databackend('savecompare',handles,filename,1);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -