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

📄 spm_mf_box.m

📁 toolbox for spm 5 for data, model free analysis
💻 M
📖 第 1 页 / 共 5 页
字号:
    'SliderStep',min(ones(1,2)/max(time_max-1,1),1));if (time_max==1.001), set(handles.time_pos,'Enable','off');else set(handles.time_pos,'Enable','on');endset(handles.comp_pos,'Min',1,'Max',comp_max,'Value',1, ...    'SliderStep',min(ones(1,2)/max(comp_max-1,1),1));if (comp_max==1.001), set(handles.comp_pos,'Enable','off');else set(handles.comp_pos,'Enable','on');endbut = fieldnames(buttons);for i=1:length(but)    if (buttons.(but{i})==1), set(handles.(but{i}),'Enable','on');    else set(handles.(but{i}),'Enable','off');    endendset(handles.keeppre,'Value',keeppre);if (keeppre==1)     set(handles.algo_preprocess,'Enable','off');    set(handles.run_pre,'Enable','off');else    set(handles.algo_preprocess,'Enable','on');    set(handles.run_pre,'Enable','on');endif (isstruct(handles.mfbss.X))    v = getinfo([handles.sequence.timesteps,handles.sequence.dim], ...        size(handles.mfbss.design),sum(handles.mfbss.reference(:)), ...        prod(handles.mfbss.X.dim)*handles.mfbss.X.timesteps, ...        size(handles.mfbss.A,2),handles.mfbss.pre_name, ...        handles.mfbss.name,handles.mfbss.rel_name,handles.mfbss.pos_name, ...        handles.mfbox_filename);else    v = getinfo([handles.sequence.timesteps,handles.sequence.dim], ...        size(handles.mfbss.design),sum(handles.mfbss.reference(:)), ...        length(handles.mfbss.X),size(handles.mfbss.A,2), ...        handles.mfbss.pre_name,handles.mfbss.name,handles.mfbss.rel_name, ...        handles.mfbss.pos_name, handles.mfbox_filename);endset(handles.info,'String',char(v));if (isfield(handles,'lastplotstate'))    handles = rmfield(handles,'lastplotstate');endhandles = redraw_all(handles);% ---function datawin_handler(src,eventdata,h,vt,vc)set(h.time_pos,'Value',vt);set(h.comp_pos,'Value',vc);redraw_all(h);% --- Executes just before spm_mf_box is made visible.function spm_mf_box_OpeningFcn(hObject,eventdata,handles,varargin)% This function has no output args, see OutputFcn.% hObject    handle to figure% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)% varargin   command line arguments to spm_mf_box (see VARARGIN)handles.output = hObject;handles.filenames = '';handles.design_filename = '';handles.reference_filename = '';handles.mfbox_filename = '';handles.params_filename = '';handles.private = mfbox_databackend('init',struct());handles.sequence = struct('num',0,'dim',[0,0],'timesteps',0);handles.permutation = 1;handles.mfbss = mfbox_init();mfbox_path = fileparts(which('spm_mf_box'));addpath(mfbox_path);algos = dir([mfbox_path filesep 'mfbox_*_run.m']);v_algo = {}; v_pre = {}; v_rel = {}; v_pos = {}; v_tool = {};for i=1:length(algos)    n = algos(i).name(7:end-6);    switch n(1:3)        case 'rel', v_rel{end+1} = n(5:end);        case 'pre', v_pre{end+1} = n(5:end);        case 'pos', v_pos{end+1} = n(5:end);        case 'too',v_tool{end+1} = n(6:end);        otherwise, v_algo{end+1} = n;    endendset(handles.mf_algo,'String',v_algo);v = find(strcmp(v_algo,'pearsonica'));if (~isempty(v)), set(handles.mf_algo,'Value',v(1)); endset(handles.algo_reliability,'String',v_rel);v = find(strcmp(v_rel,'none'));if (~isempty(v)), set(handles.algo_reliability,'Value',v(1)); endset(handles.algo_preprocess,'String',v_pre);set(handles.algo_preprocess,'Value',[]);set(handles.algo_postprocess,'String',v_pos);v = find(strcmp(v_pos,'selectcomp'));if (~isempty(v)), set(handles.algo_postprocess,'Value',v(1)); endfor i=1:length(v_pre)    cmd_func = str2func(sprintf('mfbox_pre_%s_run',v_pre{i}));    [a,b,c,d,handles.mfbss.pre_params.(v_pre{i})] = cmd_func( ...        handles.mfbss.X,handles.mfbss.mask,handles.mfbss.grid, ...        handles.mfbss.timeline,[],-1);endfor i=1:length(v_algo)    cmd_func = str2func(sprintf('mfbox_%s_run',v_algo{i}));    [handles.mfbss.params.(v_algo{i})] = cmd_func(handles.mfbss.X, ...        handles.mfbss.mask,[],-1);endfor i=1:length(v_rel)    cmd_func = str2func(sprintf('mfbox_rel_%s_run',v_rel{i}));    [a,handles.mfbss.rel_params.(v_rel{i})] = cmd_func( ...        handles.mfbss,[],-1);endhandles = reset_views(handles);if (nargin>3)    if (isstruct(varargin{1}))        f = fieldnames(varargin{1});        for i=1:length(f)            handles.mfbss.(f{i}) = varargin{1}.(f{i});        end    end    uiwait(handles.Toolbox);endguidata(hObject,handles);% --- Outputs from this function are returned to the command line.function varargout=spm_mf_box_OutputFcn(hObject,eventdata,handles)% varargout  cell array for returning output args (see VARARGOUT);if (nargout>0), varargout{1} = handles.output; end% --- Executes on button press in import_data.function import_data_Callback(hObject,eventdata,handles)[handles.sequence,handles.filenames] = mfbox_databackend('import', ...    handles.filenames);ts = handles.sequence.timesteps;handles.mfbss = mfbox_init(handles.mfbss);if (ts>0)    handles.mfbss.bg = zeros(handles.sequence.dim,'single');    for i=1:ts        handles.mfbss.bg = handles.mfbss.bg+reshape( ...            mfbox_databackend('getdata',handles.sequence,i),handles.sequence.dim);    end    handles.mfbss.bg = handles.mfbss.bg/ts;else    handles.mfbss.bg = [];endif (ts>0)    handles.private = mfbox_databackend('init',handles.private, ...        struct('seq',handles.sequence,'bg',handles.mfbss.bg));endhandles = reset_views(handles);guidata(hObject,handles);% --- Executes on button press in save_res.function save_res_Callback(hObject,eventdata,handles)if (isstruct(handles.mfbss.X)) % get real data + reduce size    if (all(handles.mfbss.mask(:)))        handles.mfbss.X = single(mfbox_databackend('getdata',handles.mfbss.X));    else        X = handles.mfbss.X;        m = sum(handles.mfbss.mask(:));        handles.mfbss.X = zeros(m,X.timesteps,'single');        for i=1:X.timesteps            v = reshape(mfbox_databackend('getdata',X,i),[],1);            handles.mfbss.X(:,i) = v(handles.mfbss.mask);        end    end    handles.mfbss.grid = handles.mfbss.grid(:,handles.mfbss.mask);else    sgr = size(handles.mfbss.grid);    sm = size(handles.mfbss.mask);    g = mat2cell(min(repmat(sm',1,sgr(2)),max(ones(sgr), ...        round(handles.mfbss.grid))),ones(1,sgr(1)),sgr(2));    mask = handles.mfbss.mask(sub2ind(sm,g{:}));    handles.mfbss.grid = handles.mfbss.grid(:,mask);    if ((length(size(handles.mfbss.X))>2)||(~isa(handles.mfbss.X,'single')))        handles.mfbss.X = reshape(single(handles.mfbss.X),[],length(handles.mfbss.timeline));    end    if (any(mask(:)==0)), handles.mfbss.X = handles.mfbss.X(mask,:); endendhandles.mfbox_filename = mfbox_databackend('save',handles.mfbss, ...    handles.private,handles.mfbox_filename);guidata(hObject,handles);% --- Executes on button press in load_res.function load_res_Callback(hObject,eventdata,handles)[handles.mfbss,handles.mfbox_filename,dat] = mfbox_databackend('load', ...    handles.mfbss,handles.mfbox_filename);dim = size(handles.mfbss.bg);ts = ceil(max(handles.mfbss.timeline))+1;if (isempty(ts))    ts = 0;endif ((length(handles.sequence.dim)~=length(dim))|| ...        any(handles.sequence.dim~=dim)|| ...        (handles.sequence.timesteps~=ts))    if (handles.sequence.timesteps>0)        questdlg('Results are from different sequence data','Info','Ok','Ok');    end    handles.sequence = struct('dim',[0,0],'timesteps',0);endif (ts>0)    handles.private = mfbox_databackend('init',handles.private,dat);endhandles = reset_views(handles);c = get(handles.mf_algo,'String'); v = find(strcmp(c,handles.mfbss.name));if (length(v)==1), set(handles.mf_algo,'Value',v); endc = get(handles.algo_reliability,'String'); v = find(strcmp(c,handles.mfbss.rel_name));if (length(v)==1), set(handles.algo_reliability,'Value',v); endc = get(handles.algo_preprocess,'String');p = false(length(c),1);for i=1:length(handles.mfbss.pre_name)    p = p | strcmp(c,handles.mfbss.pre_name{i});endset(handles.algo_preprocess,'Value',find(p));if (~isempty(handles.mfbss.pos_name))    c = get(handles.algo_postprocess,'String'); v = find(strcmp(c,handles.mfbss.pos_name{end}));    if (length(v)==1), set(handles.algo_postprocess,'Value',v); endendguidata(hObject,handles);% --- Executes on selection change in plot_type.function plot_type_Callback(hObject,eventdata,handles)t = get(hObject,'Value');handles = reset_views(handles,'plot_type',t);guidata(hObject,handles);% --- Executes during object creation, after setting all properties.function plot_type_CreateFcn(hObject,eventdata,handles)if (ispc&&(isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))))    set(hObject,'BackgroundColor','white');end% --- Executes on slider movement.function time_pos_Callback(hObject,eventdata,handles)v = floor(get(hObject,'Value'));set(hObject,'Value',v);handles = redraw_all(handles);guidata(hObject,handles);% --- Executes on slider movement.function comp_pos_Callback(hObject,eventdata,handles)v = floor(get(hObject,'Value'));set(hObject,'Value',v);handles = redraw_all(handles);guidata(hObject,handles);% --- Executes during object creation, after setting all properties.function comp_pos_CreateFcn(hObject,eventdata,handles)if (isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor')))    set(hObject,'BackgroundColor',[.9,.9,.9]);end% --- Executes during object creation, after setting all properties.function time_pos_CreateFcn(hObject,eventdata,handles)if (isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor')))    set(hObject,'BackgroundColor',[.9,.9,.9]);end% --- Executes on selection change in mf_algo.function mf_algo_Callback(hObject,eventdata,handles)% --- Executes during object creation, after setting all properties.function mf_algo_CreateFcn(hObject,eventdata,handles)if (ispc&&(isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))))    set(hObject,'BackgroundColor','white');end% --- Executes on button press in run.function run_Callback(hObject,eventdata,handles)contents = get(handles.mf_algo,'String');cmd_algo = contents{get(handles.mf_algo,'Value')};contents = get(handles.algo_preprocess,'String');cmd_pre = {contents{get(handles.algo_preprocess,'Value')}};contents = get(handles.algo_reliability,'String');cmd_rel = contents{get(handles.algo_reliability,'Value')};if (get(handles.keeppre,'Value')==0)    handles.mfbss.X = handles.sequence;    dim = handles.sequence.dim;    handles.mfbss.mask = true(dim);    handles.mfbss.grid = mfbox_mkgrid(dim)';    handles.mfbss.timeline = 0:(handles.sequence.timesteps-1);    guidata(hObject,handles);    handles = reset_views(handles,'plot_type',2);    for i=1:length(cmd_pre)        cmd = cmd_pre{i};        p = {};        if (isfield(handles.mfbss.pre_params,cmd))            p = handles.mfbss.pre_params.(cmd);        end        cmd_func = str2func(sprintf('mfbox_pre_%s_run',cmd));        [d,m,g,t,p,handles.private] = ...            cmd_func(handles.mfbss.X,handles.mfbss.mask,handles.mfbss.grid, ...            handles.mfbss.timeline,p,0,handles.private);        if (isstruct(p)), handles.mfbss.pre_params.(cmd) = p;        else, return;        end    end    handles.mfbss.pre_name = cmd_pre;    t = [];    for i=1:length(cmd_pre), t(i) = handles.mfbss.pre_params.(cmd_pre{i}).priority; end    [d,s] = sort(t);    for i=1:length(cmd_pre)        cmd = cmd_pre{s(i)};        cmd_func = str2func(sprintf('mfbox_pre_%s_run',cmd));        [handles.mfbss.X,handles.mfbss.mask,handles.mfbss.grid, ...            handles.mfbss.timeline,handles.mfbss.pre_params.(cmd)] = ...            cmd_func(handles.mfbss.X,handles.mfbss.mask,handles.mfbss.grid, ...            handles.mfbss.timeline,handles.mfbss.pre_params.(cmd),2,handles.private);    endendhandles.mfbss.A = []; handles.mfbss.W = []; handles.mfbss.S = struct();handles.mfbss.ppA = []; handles.mfbss.ppW = []; handles.mfbss.ppS = struct();if (isfield(handles.mfbss,'extraplot')), handles.mfbss = rmfield(handles.mfbss,'extraplot'); endhandles = reset_views(handles,'plot_type',3);p = {};if (isfield(handles.mfbss.params,cmd_algo))    p = handles.mfbss.params.(cmd_algo);endcmd_func = str2func(sprintf('mfbox_%s_run',cmd_algo));if (isstruct(handles.mfbss.X)), s = [handles.mfbss.X.dim,handles.mfbss.X.timesteps];else, s = size(handles.mfbss.X);endtm = false(size(handles.mfbss.mask)); tm(1) = true;p = cmd_func(ones([1,s(end)]),tm,p,0); % bad hackif (isstruct(p)), handles.mfbss.params.(cmd_algo) = p;

⌨️ 快捷键说明

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