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

📄 mfbox_tool_compare_run.m

📁 toolbox for spm 5 for data, model free analysis
💻 M
📖 第 1 页 / 共 3 页
字号:
            handles.components(j).dat = d;            handles.components(j).timeline = timeline;            handles.components(j).tcs = tcs2;            if (i<j), dat{i} = dat1; mas{i} = bitand(mask,1); i = i+2;            else dat{j} = dat2; mas{j} = bitand(mask,2)/2; j = j+2;            end        end        clear dat        handles.grouping = cell(length(handles.mfbss),0);        handles.grouping = fixgrouping(handles.grouping, ...            cellfun(@(x) size(x.A,2),handles.mfbss));        handles.spatial_cross_data = norm_cross(handles.spatial_cross_data);        handles.temporal_cross_data = norm_cross(handles.temporal_cross_data);    end    buttons.spatiotemp_plot = 1;    buttons.plot_comb = 1;    buttons.plot_diff = 1;    buttons.plot1 = 1;    buttons.plot2 = 1;    buttons.spat_auto_group = 1;    buttons.temp_auto_group = 1;    buttons.spatial_match = 1;    buttons.temporal_match = 1;    buttons.remove_data = 1;    buttons.save_comparedata = 1;    if (length(handles.mfbss)>2)        buttons.dataselect1 = 1;        buttons.dataselect2 = 1;    end    handles.newfrontend = addfrontend(handles.newfrontend, ...        'zoomfact','Visible','on');elseif (length(handles.mfbss)==1)    varthresh_opts = {'>1 std, 0 centered','>3 std, 0 centered', ...        '>1 std, mean centered','>3 std, mean centered'};    if (isempty(cat(2,handles.components.timeline)))        handles.components_masks = struct();        handles.components = struct('timeline',[]);        [timeline,tcs1] = gettcs( ...            handles.mfbss{1}.A,handles.mfbss{1}.timeline,[],[]);        S = zeros(size(handles.mfbss{1}.S.dat,1),size(handles.mfbss{1}.A,2));        for i=1:size(S,2)            S(:,i) = sum(handles.mfbss{1}.S.dat(:,unique(handles.mfbss{1}.S.map(:,i))),2);        end        [mask,dat1,dummy,handles.private{1}] = getdat(handles.private{1}, ...            handles.mfbss{1}.grid(:,handles.mfbss{1}.S.mask), ...            S,[],[],[]);        [handles.spatial_cross_data,handles.temporal_cross_data] = ...            update_cross(timeline,tcs1,tcs1,3*mask,dat1,dat1);        handles.components(1).mask = mask==1;        m = mean(dat1); s = std(dat1);        d = zeros(size(dat1),'uint8');        for k=1:length(m)            d(:,k) = (abs(dat1(:,k))>=s(k))+2*(abs(dat1(:,k))>=3*s(k))+ ...                4*(abs(dat1(:,k)-m(k))>=s(k))+8*(abs(dat1(:,k)-m(k))>=3*s(k));        end        handles.components(1).dat = d;        handles.components(1).timeline = timeline;        handles.components(1).tcs = tcs1;        handles.spatial_cross_data = norm_cross(handles.spatial_cross_data);        handles.temporal_cross_data = norm_cross(handles.temporal_cross_data);        handles.grouping = cell(length(handles.mfbss),0);        handles.grouping = fixgrouping(handles.grouping, ...            cellfun(@(x) size(x.A,2),handles.mfbss));    end    buttons.spatiotemp_plot = 1;    buttons.plot_comb = 1;    buttons.plot_diff = 1;    buttons.plot1 = 1;    buttons.remove_data = 1;    buttons.save_comparedata = 1;    handles.newfrontend = addfrontend(handles.newfrontend, ...        'zoomfact','Visible','on');else    handles.spatial_cross_data = zeros(0);    handles.temporal_cross_data = zeros(0);    handles.components_masks = struct();    handles.components = struct('timeline',[]);    handles.grouping = {};    varthresh_opts = {' '};    handles.newfrontend = addfrontend(handles.newfrontend, ...        'zoomfact','Visible','off');    handles.newimages.allcorr = {ones(1,1,3)};endhandles.buttons = buttons;handles.newfrontend = addfrontend(handles.newfrontend, ...    'varthresh','String',varthresh_opts,'Value',1);handles = redraw_all(handles);function fe=addfrontend(fe,name,varargin)if (~isfield(fe,name))    fe.(name) = struct();endfor i=1:2:length(varargin)    fe.(name).(varargin{i}) = varargin{i+1};endfunction handles=recalcinfo(handles,cur,num)if (num>=1)    handles.newfrontend = addfrontend(handles.newfrontend, ...        'info_data','String',handles.info{cur});endnames = mknames(num,'Data');if (num==0)    handles.newfrontend = addfrontend(handles.newfrontend, ...        'selectdata','String',{''},'Value',1);elseif (num>=2)    handles.newfrontend = addfrontend(handles.newfrontend, ...        'selectdata','String',names,'Value',cur);    handles.newfrontend = addfrontend(handles.newfrontend, ...        'dataselect1','String',names(2~=(1:num)),'Value',1);    handles.newfrontend = addfrontend(handles.newfrontend, ...        'dataselect2','String',names(1~=(1:num)),'Value',1);    if (~isfield(handles.frontend,'dataselect2')||isempty(handles.frontend.dataselect2))        handles.frontend.dataselect2 = 2;    endelse    handles.newfrontend = addfrontend(handles.newfrontend, ...        'selectdata','String',names,'Value',cur);    handles.newfrontend = addfrontend(handles.newfrontend, ...        'dataselect1','String',names,'Value',1);    handles.newfrontend = addfrontend(handles.newfrontend, ...        'dataselect2','String',{});    if (~isfield(handles.frontend,'dataselect1')||isempty(handles.frontend.dataselect1))        handles.frontend.dataselect1 = 1;    endendfunction handles=add_data(handles)[f,d] = uigetfile('*.mfb','Select MFBOX files ...','MultiSelect','On');if (iscell(f))    filenames = {};    for i=1:length(f), filenames{end+1} = fullfile(d,f{i}); endelseif (ischar(f))    filenames = {fullfile(d,f)};else    filenames = {};endnum = 0;cur = 0;for i=1:length(filenames)    num = 1+length(handles.mfbss);    cur = num;    [mfbss,filename,private,info] = load_data(struct(),filenames{i},struct(), ...        handles.interactive);    if (isempty(info))        break    end    handles.mfbss{num} = mfbss;    handles.filename{num} = filename;    handles.private{num} = private;    handles.info{num} = info;endhandles = recalcinfo(handles,cur,num);handles.components = struct('timeline',[]);% ---function [mfbss,filename,private,info]=load_data(mfbss,filename,private,interactive)if (~isfield(mfbss,'S'))    [mfbss,filename,dat] = mfbox_databackend('load',mfbss,filename,interactive);else    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; endendprivate = mfbox_databackend('init',private,dat);if (isempty(fieldnames(dat)))    info = '';    returnendif (~isfield(mfbss,'ppS'))    mfbss.S.tag = mknames(size(mfbss.S.map,2),'comp');elseif (isempty(fieldnames(mfbss.ppS)))    mfbss.S.tag = mknames(size(mfbss.S.map,2),'comp');else    mfbss.S = mfbss.ppS;    mfbss.A = mfbss.ppA;    mfbss.W = mfbss.ppW;    mfbss = rmfield(mfbss,'ppS');    mfbss = rmfield(mfbss,'ppA');    mfbss = rmfield(mfbss,'ppW');    if (~isfield(mfbss.S,'tag'))        mfbss.S.tag = mknames(size(mfbss.S.map,2),'comp');    endendv = {}; n = 1;c = size(mfbss.A,2);pl = length(mfbss.pre_name);prn = mat2cell(repmat(', ',1,2*pl-1),1,2*ones(1,2*pl-1));prn(1:2:(2*pl-1)) = mfbss.pre_name;prn = [prn{:}];nb = mfbss.name;ren = mfbss.rel_name;pl = length(mfbss.pos_name);pon = mat2cell(repmat(', ',1,2*pl-1),1,2*ones(1,2*pl-1));pon(1:2:(2*pl-1)) = mfbss.pos_name;pon = [pon{:}];fn = filename;if(~isempty(fn)), v{n} = sprintf('Data source: %s',fn); n = n+1; endif (~isempty(prn)), v{n} = sprintf('Preprocessing: %s',prn); n = n+1; endif (c~=0)    v{n} = sprintf('Extracted components %d',c); n = n+1;    if (~isempty(nb)), v{n} = sprintf('Algorithm: %s',nb); n = n+1; end    if (~isempty(ren)), v{n} = sprintf('Component: %s',ren); n = n+1; end    if (~isempty(pon)), v{n} = sprintf('Post-processing: %s',pon); n = n+1; endendinfo = char(v);mfbss.X = []; %discard Xfunction handles=plot_comb(handles)vt = 2^(handles.frontend.varthresh-1);curgroup = handles.frontend.groups;g = handles.grouping(:,curgroup);[bg,handles.private{1}] = mfbox_databackend('getbg',handles.private{1});atlas = mfbox_databackend('getatlas',handles.private{1});if (~isempty([g{:}]))    tc = {}; tl = {}; ic = {};    for i=1:length(g)        c = g{i};        if (~isempty(c))            tc{end+1} = sum(handles.components(i).tcs(:,c),2);            tl{end+1} = handles.components(i).timeline(:);            j = zeros(size(handles.components(i).mask),'uint16');            j(handles.components(i).mask) = sum(bitand( ...                handles.components(i).dat(:,c),vt)>0,2);            ic{end+1} = j;        end    end    le = cellfun('length',tl);    if (all(le(:)==le(1)))        l = cat(2,tl{:});        if (all(all(l-repmat(l(:,1),1,size(l,2))==0,2),1))            tl = tl{1};            tc = cat(2,tc{:});            tc = [tc,sum(tc,2)];        end    end    if (iscell(tc))        minl = min(reshape(cat(2,tl{:}),[],1));        maxl = max(reshape(cat(2,tl{:}),[],1));        otl = tl; tl = linspace(minl,maxl,max(l(:))*2);        otc = tc; tc = zeros(length(tl),length(otc));        for i=1:length(otc), tc(:,i) = interp1(otl{i},otc{i},tl); end        tc = [tc,sum(tc,2)];    end    ic = sum(cat(4,ic{:}),4);    mfbox_plotic(ic,{tc,tl},sprintf('Combined area of group %d',curgroup), ...        {0,false},bg,atlas);endfunction handles=plot_diff(handles)vt = 2^(handles.frontend.varthresh-1);curgroup = handles.frontend.groups;g = handles.grouping(:,curgroup);[bg,handles.private{1}] = mfbox_databackend('getbg',handles.private{1});atlas = mfbox_databackend('getatlas',handles.private{1});if (~isempty([g{:}]))    tc = {}; tl = {}; ic = {};    for i=1:length(g)        c = g{i};        if (~isempty(c))            tc{end+1} = sum(handles.components(i).tcs(:,c),2);            tl{end+1} = handles.components(i).timeline(:);            j = zeros(size(handles.components(i).mask),'uint16');            j(handles.components(i).mask) = sum(bitand( ...                handles.components(i).dat(:,c),vt)>0,2);            ic{end+1} = j;        end    end    l = cellfun('length',tl);    if (all(l(:)==l(1)))        l = cat(2,tl{:});        if (all(all(l-repmat(l(:,1),1,size(l,2))==0,2),1))            tl = tl{1};            tc = sum(cat(2,tc{:}),2);        end    end    if (iscell(tc))        minl = min(reshape(cat(2,tl{:}),[],1));        maxl = max(reshape(cat(2,tl{:}),[],1));        otl = tl; tl = linspace(minl,maxl,max(l(:))*2);        otc = tc; tc = zeros(length(tl),length(otc));        for i=1:length(otc), tc(:,i) = interp1(otl{i},otc{i},tl); end        tc = [tc,sum(tc,2)];    end    ic = sum(cat(4,ic{:}),4);    n = sum(cellfun('length',g));    ic = -n+ic;    ic(ic==0) = n;    ic(ic==-n) = 0;    mfbox_plotic(ic,{tc,tl},sprintf('Differential area of group %d',curgroup), ...        0,bg,atlas);endfunction c=norm_cross(c)cr = real(c); ci = imag(c);c = complex(abs(cr)/max(abs(cr(:))),abs(ci)/max(abs(ci(:))));% --- Executes on button press in plot1.function handles=plot1(handles)d = handles.frontend.varthresh;if (length(handles.mfbss)<=2), sel1 = 1;else sel1 = handles.frontend.dataselect1;endcurgroup = handles.frontend.groups;g = handles.grouping;[bg,handles.private{sel1}] = mfbox_databackend('getbg',handles.private{sel1});atlas = mfbox_databackend('getatlas',handles.private{sel1});if (~isempty(g{sel1,curgroup}))    n = handles.mfbss{sel1}.S.tag(g{sel1,curgroup});    name = mat2cell(repmat(', ',1,2*length(n)-1),1,2*ones(1,2*length(n)-1));    name(1:2:end) = n; name = [name{:}];    tc = sum(handles.components(sel1).tcs(:,g{sel1,curgroup}),2)';    tl = handles.components(sel1).timeline;    ic = sum(handles.mfbss{sel1}.S.dat(:, ...        unique(handles.mfbss{sel1}.S.map(:,g{sel1,curgroup}))),2);    [ic,handles.private{sel1}] = mfbox_databackend('getic',handles.private{sel1},ic, ...        handles.mfbss{sel1}.grid(:,handles.mfbss{sel1}.S.mask));    o = [1,3];    mfbox_plotic(ic,{tc,tl},name,{o(mod(d-1,2)+1),d>2},bg,atlas);end% --- Executes on button press in plot2.function handles=plot2(handles)d = handles.frontend.varthresh;if (length(handles.mfbss)<=2), sel2 = 2;else sel2 = handles.frontend.dataselect2;endcurgroup = handles.frontend.groups;g = handles.grouping;[bg,handles.private{sel2}] = mfbox_databackend('getbg',handles.private{sel2});atlas = mfbox_databackend('getatlas',handles.private{sel2});if (~isempty(g{sel2,curgroup}))    n = handles.mfbss{sel2}.S.tag(g{sel2,curgroup});    name = mat2cell(repmat(', ',1,2*length(n)-1),1,2*ones(1,2*length(n)-1));    name(1:2:end) = n; name = [name{:}];    tc = sum(handles.components(sel2).tcs(:,g{sel2,curgroup}),2)';    tl = handles.components(sel2).timeline;    ic = sum(handles.mfbss{sel2}.S.dat(:, ...        unique(handles.mfbss{sel2}.S.map(:,g{sel2,curgroup}))),2);    [ic,handles.private{sel2}] = mfbox_databackend('getic',handles.private{sel2},ic, ...        handles.mfbss{sel2}.grid(:,handles.mfbss{sel2}.S.mask));    o = [1,3];    mfbox_plotic(ic,{tc,tl},name,{o(mod(d-1,2)+1),d>2},bg,atlas);end% --- Executes on button press in reset_groups.function handles=reset_groups(handles)handles.grouping = cell(length(handles.mfbss),0);handles.grouping = fixgrouping(handles.grouping, ...    cellfun(@(x) size(x.A,2),handles.mfbss));% --- Executes on button press in remove_data.function handles=remove_data(handles)cur = handles.frontend.selectdata;num = length(handles.mfbss);sel = find((1:num)~=cur);num = num-1;cur = 1;handles.mfbss = handles.mfbss(sel);handles.filename = handles.filename(sel);handles.private = handles.private(sel);handles.info = handles.info(sel);

⌨️ 快捷键说明

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