📄 mfbox_pre_roiselect_run.m
字号:
function [X,mask,grid,timeline,params,private]=mfbox_pre_roiselect_run(X,mask,grid,timeline,params,runflag,private)% select voxels using a brainmaskfile%% Usage:% [X,mask,grid,timeline,params,private]=mfbox_pre_roiselect_run(X,mask,grid,timeline,params,runflag,private)%% X - (NxT) data% or struct for mfbox_databackend('getdata',X,i),[],1);% mask - data mask (XxYxZ) with sum(mask(:))==N% grid - 3d positions (3xN) of the data values% timeline - timeline (1xT)% params - struct with% priority - evaluation priority% mask - explicit mask% threshold - threshold% brainmask - brainmask% bmfile - bmfile% manualmask - manualmask% runflag - -1 get default parameter% 0 interactive ask parameters% 1 interactive ask parameters and run% 2 run% private - private data to enable plot updates while selecting (see also mfbox_databackend)%% Copyright by Peter Gruber, Fabian J. Theis, Ingo R. Keck% Signal Processing & Information Theory group% Institute of Biophysics, University of Regensburg, Germany% Homepage: http://research.fabian.theis.name% http://www-aglang.uni-regensburg.de%% This file is free software, subject to the % GNU GENERAL PUBLIC LICENSE, see gpl.txterror(nargchk(1,7,nargin));error(nargchk(1,6,nargout));if (isstruct(X)), s = [X.dim,X.timesteps];else, s = size(X);enddim = s(1:(end-1));if (length(dim)<2), dim = [1,dim]; endn = s(end);if (nargin<2), mask = true(dim); enddim = size(mask);if (length(dim)==length(s)), n = 1; endif (nargin<3), grid = mfbox_mkgrid(dim)'; endif (nargin<4), timeline = 0:(n-1); endif (nargin<5), params = []; endif (nargin<6), runflag = 1; endif (nargin<7), private = []; endparams = mfbox_checkparam(params,'pre','roiselect', ... struct('mask',true(dim),'threshold',0.75, ... 'priority',10,'brainmask',1,'bmfile','','manualmask',[]));if (abs(runflag-0.5)<1) if (exist('OCTAVE_HOME')~=5)% matlab [params,private] = mfbox_pre_roiselectg(X,mask,grid,timeline,params,runflag,private); elseif (exist('OCTAVE_HOME')==5) %octave [params,runflag] = mfbox_getparam(params,runflag,'mfbox_pre_roiselectg.py'); endendif (runflag>0 && isstruct(params)) if (runflag<3) prgs = mfbox_progress([],'title','ROI','string','Registering brainmask...','progress',[1,4]); end nmask = true(dim); if (isfield(params,'manualmask')) if (~isempty(params.manualmask)), nmask = nmask & (params.manualmask>0); end end try if (params.brainmask==2) %if (isfield(handles,'private')) if (~isempty(private)) [m,private] = mfbox_databackend('getbrainmask',private); m = reshape(m,dim); % the databackend will give us the mask as row vector else m = mfbox_databackend('getbrainmask'); g = 1+(diag((size(m)-1)./(dim-1))*(mfbox_mkgrid(dim)'-1)); g = mat2cell(g,ones(1,size(g,1)),size(g,2)); m = reshape(interpn(m,g{:}),dim); end nmask = nmask&(m>params.threshold); elseif (params.brainmask==3) if (~isempty(private)) [m,f,private] = mfbox_databackend('import_mask',params.bmfile,private); m=reshape(m,dim); % the databackend will give us the mask as row vector else m = mfbox_databackend('import_mask',params.bmfile); g = 1+(diag((size(m)-1)./(dim-1))*(mfbox_mkgrid(dim)'-1)); g = mat2cell(g,ones(1,size(g,1)),size(g,2)); m = reshape(interpn(m,g{:}),dim); end nmask = nmask&(m>params.threshold); end catch v = lasterror; warning(['Something bad happened while roiselect' v.message]); end mask = mask & nmask; if (~isstruct(X)) sgr = size(grid); sm = size(mask); g = mat2cell(min(repmat(sm',1,sgr(2)),max(ones(sgr), ... round(grid))),ones(1,sgr(1)),sgr(2)); nmask = mask(sub2ind(sm,g{:})); grid = grid(:,nmask); X = reshape(X,[],n); X = X(nmask,:); end if (runflag<3), mfbox_progress(prgs,'close',[]); endend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -