📄 alff_gui.m
字号:
catch
rest_misc( 'DisplayLastException');
errordlg(sprintf('Exception occured: \n\n%s' , lasterr));
end
cd(theOldDir);
set(hObject,'Enable','on', 'BackgroundColor', theOldColor);
drawnow;
rest_waitbar;
else
errordlg('No alff.m ! Please re-install');
end
function edtMaskfile_Callback(hObject, eventdata, handles)
theMaskfile =get(hObject, 'String');
if rest_misc('GetMatlabVersion')>=7.3,
theMaskfile =strtrim(theMaskfile);
end
if exist(theMaskfile, 'file')
handles.Cfg.MaskFile =theMaskfile;
guidata(hObject, handles);
else
errordlg(sprintf('The mask file "%s" does not exist!\n Please re-check it.', theMaskfile));
end
function edtMaskfile_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function btnSelectMask_Callback(hObject, eventdata, handles)
[filename, pathname] = uigetfile({'*.img;*.mat', 'All Mask files (*.img; *.mat)'; ...
'*.mat','MAT masks (*.mat)'; ...
'*.img', 'ANALYZE masks(*.img)'}, ...
'Pick a user''s mask');
if ~(filename==0)
handles.Cfg.MaskFile =[pathname filename];
guidata(hObject,handles);
elseif ~( exist(handles.Cfg.MaskFile, 'file')==2)
set(handles.rbtnDefaultMask, 'Value',[1]);
set(handles.rbtnUserMask, 'Value',[0]);
set(handles.edtMaskfile, 'Enable','off');
set(handles.btnSelectMask, 'Enable','off');
handles.Cfg.MaskFile ='Default';
guidata(hObject, handles);
end
UpdateDisplay(handles);
function rbtnDefaultMask_Callback(hObject, eventdata, handles)
set(handles.edtMaskfile, 'Enable','off', 'String','Use Default Mask');
set(handles.btnSelectMask, 'Enable','off');
drawnow;
handles.Cfg.MaskFile ='Default';
guidata(hObject, handles);
set(handles.rbtnDefaultMask,'Value',1);
set(handles.rbtnNullMask,'Value',0);
set(handles.rbtnUserMask,'Value',0);
function rbtnUserMask_Callback(hObject, eventdata, handles)
set(handles.edtMaskfile,'Enable','on', 'String',handles.Cfg.MaskFile);
set(handles.btnSelectMask, 'Enable','on');
set(handles.rbtnDefaultMask,'Value',0);
set(handles.rbtnNullMask,'Value',0);
set(handles.rbtnUserMask,'Value',1);
drawnow;
function rbtnNullMask_Callback(hObject, eventdata, handles)
set(handles.edtMaskfile, 'Enable','off', 'String','Don''t use any Mask');
set(handles.btnSelectMask, 'Enable','off');
drawnow;
handles.Cfg.MaskFile ='';
guidata(hObject, handles);
set(handles.rbtnDefaultMask,'Value',0);
set(handles.rbtnNullMask,'Value',1);
set(handles.rbtnUserMask,'Value',0);
function listDataDirs_Callback(hObject, eventdata, handles)
theIndex =get(hObject, 'Value');
if isempty(theIndex) || theIndex<1,
msgbox(sprintf('Nothing added.\n\nYou must add some diretories containing only paired {hdr/img} files first'), ...
'REST' ,'help');
return;
end
if strcmp(get(handles.figAlffMain, 'SelectionType'), 'open') %when double click
msgbox(sprintf('%s \t\nhas\t %d\t volumes\n\nTotal: %d Data Directories' , ...
handles.Cfg.DataDirs{theIndex, 1} , ...
handles.Cfg.DataDirs{theIndex, 2} , ...
size(handles.Cfg.DataDirs,1)), ...
'Volume count in selected dir' ,'help');
end
function listDataDirs_KeyPressFcn(hObject, eventdata, handles)
%Delete the selected item when 'Del' is pressed
key =get(handles.figAlffMain, 'currentkey');
if seqmatch({key},{'delete', 'backspace'})
DeleteSelectedDataDir(hObject, eventdata,handles);
end
function DeleteSelectedDataDir(hObject, eventdata, handles)
theIndex =get(handles.listDataDirs, 'Value');
if prod(size(handles.Cfg.DataDirs))==0 ...
|| size(handles.Cfg.DataDirs, 1)==0 ...
|| theIndex>size(handles.Cfg.DataDirs, 1),
return;
end
theDir =handles.Cfg.DataDirs{theIndex, 1};
theVolumnCount=handles.Cfg.DataDirs{theIndex, 2};
tmpMsg=sprintf('Delete\n\n "%s" \nVolumn Count :%d ?', theDir, theVolumnCount);
if strcmp(questdlg(tmpMsg, 'Delete confirmation'), 'Yes')
if theIndex>1,
set(handles.listDataDirs, 'Value', theIndex-1);
end
handles.Cfg.DataDirs(theIndex, :)=[];
if size(handles.Cfg.DataDirs, 1)==0
handles.Cfg.DataDirs={};
end
guidata(hObject, handles);
UpdateDisplay(handles);
end
function ClearDataDirectories(hObject, eventdata, handles)
if prod(size(handles.Cfg.DataDirs))==0 ...
|| size(handles.Cfg.DataDirs, 1)==0,
return;
end
tmpMsg=sprintf('Attention!\n\n\nDelete all data directories?');
if strcmpi(questdlg(tmpMsg, 'Clear confirmation'), 'Yes'),
handles.Cfg.DataDirs(:)=[];
if prod(size(handles.Cfg.DataDirs))==0,
handles.Cfg.DataDirs={};
end
guidata(hObject, handles);
UpdateDisplay(handles);
end
function listDataDirs_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function edtPrefix_Callback(hObject, eventdata, handles)
%nothing need to do, because I get the prefix when I need. Look at line 229 "thePrefix =get(handles.edtPrefix, 'String');"
function edtPrefix_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function edtOutputDir_Callback(hObject, eventdata, handles)
theDir =get(hObject, 'String');
SetOutputDir(hObject,handles, theDir);
function edtOutputDir_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function btnSelectOutputDir_Callback(hObject, eventdata, handles)
theDir =handles.Cfg.OutputDir;
theDir =uigetdir(theDir, 'Please select the data directory to compute alff map: ');
if ~isequal(theDir, 0)
SetOutputDir(hObject,handles, theDir);
end
function SetOutputDir(hObject, handles, ADir)
if 7==exist(ADir,'dir')
handles.Cfg.OutputDir =ADir;
guidata(hObject, handles);
UpdateDisplay(handles);
end
function Result=GetDirName(ADir)
if isempty(ADir), Result=ADir; return; end
theDir =ADir;
if strcmp(theDir(end),filesep)==1
theDir=theDir(1:end-1);
end
[tmp,Result]=fileparts(theDir);
function ckboxFilter_Callback(hObject, eventdata, handles)
if get(hObject,'Value')
handles.Filter.UseFilter ='Yes';
else
handles.Filter.UseFilter ='No';
end
guidata(hObject, handles);
UpdateDisplay(handles);
function edtBandLow_Callback(hObject, eventdata, handles)
handles.Filter.BandLow =str2double(get(hObject,'String'));
guidata(hObject, handles);
function edtBandLow_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function edtBandHigh_Callback(hObject, eventdata, handles)
handles.Filter.BandHigh =str2double(get(hObject,'String'));
guidata(hObject, handles);
function edtBandHigh_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function ckboxRetrend_Callback(hObject, eventdata, handles)
if get(hObject,'Value')
handles.Filter.Retrend ='Yes';
else
handles.Filter.Retrend ='No';
end
guidata(hObject, handles);
UpdateDisplay(handles);
function edtSamplePeriod_Callback(hObject, eventdata, handles)
handles.Filter.SamplePeriod =str2double(get(hObject,'String'));
guidata(hObject, handles);
function edtSamplePeriod_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function ckboxDivideMean_Callback(hObject, eventdata, handles)
if get(hObject,'Value')
handles.Cfg.WantMeanAlffMap ='Yes';
else
handles.Cfg.WantMeanAlffMap ='No';
end
guidata(hObject, handles);
UpdateDisplay(handles);
function btnDivideMean_Callback(hObject, eventdata, handles)
theOldColor=get(hObject,'BackgroundColor');
set(hObject,'Enable','off', 'BackgroundColor', 'red');
drawnow;
try
[filename, pathname] = uigetfile({'*.img', 'alff files (*.img)'}, ...
'Pick one alff map');
if (filename~=0)% not canceled
if strcmpi(filename(end-3:end), '.img')%revise filename to remove extension
filename = filename(1:end-4);
end
if ~strcmpi(pathname(end), filesep)%revise filename to remove extension
pathname = [pathname filesep];
end
theOrigAlffMap =[pathname filename];
theMeanAlffMap =[pathname 'm' filename];
theMaskFile =handles.Cfg.MaskFile;
rest_DivideMeanWithinMask(theOrigAlffMap, theMeanAlffMap, theMaskFile);
msgbox(sprintf('Alff brain "%s.{hdr/img}" \ndivide its mean within mask successfully.\t\n\nSave to "%s.{hdr/img}"\n' , ...
theOrigAlffMap, theMeanAlffMap), ...
'Divide mean within mask successfully' ,'help');
end
catch
rest_misc( 'DisplayLastException');
end
set(hObject,'Enable','on', 'BackgroundColor', theOldColor);
drawnow;
function btnBandPass_Callback(hObject, eventdata, handles)
theOldColor=get(hObject,'BackgroundColor');
set(hObject,'Enable','off', 'BackgroundColor', 'red');
drawnow;
try
%Band pass filter
if strcmpi(handles.Filter.UseFilter, 'Yes')
BandPass(hObject, handles);
msgbox('Ideal Band Pass filter Over.',...
'Filter successfully' ,'help');
else
errordlg(sprintf('You didn''t select option "Band Pass". \n\nPlease slect first.'));
end
UpdateDisplay(handles);
catch
rest_misc( 'DisplayLastException');
end
rest_waitbar;
set(hObject,'Enable','on', 'BackgroundColor', theOldColor);
drawnow;
function InitFrames(hObject,handles)
offsetY =83; %dawnsong, 20070504, add for the divide by the mask mean, the Y of Edit "OutPut Diectory"
% for Matlab 6.5 compatible, draw a panel
uicontrol(handles.figAlffMain, 'Style','Frame','Position',[2 offsetY+152 433 1]);
uicontrol(handles.figAlffMain, 'Style','Frame','Position',[2 offsetY+202 433 1]);
uicontrol(handles.figAlffMain, 'Style','Frame','Position',[90 offsetY+291 343 1]);
uicontrol(handles.figAlffMain, 'Style','Frame','Position',[90 offsetY+202 1 90]);
uicontrol(handles.figAlffMain, 'Style','Frame','Position',[2 offsetY+152 1 280]);
uicontrol(handles.figAlffMain, 'Style','Frame','Position',[435 offsetY+152 1 280]);
uicontrol(handles.figAlffMain, 'Style','Frame','Position',[2 offsetY+432 433 1]);
uicontrol(handles.figAlffMain,'Style','Text','Position',[152 offsetY+430 100 14],...
'String','Input Parameters');
uicontrol(handles.figAlffMain,'Style','Text','Position',[208 offsetY+288 40 14],...
'String','Mask');
uicontrol(handles.figAlffMain, 'Style','Frame','Position',[2 offsetY+94 433 1]);
uicontrol(handles.figAlffMain, 'Style','Frame','Position',[2 offsetY-8 433 1]);
uicontrol(handles.figAlffMain, 'Style','Frame','Position',[2 offsetY-8 1 102]);
uicontrol(handles.figAlffMain, 'Style','Frame','Position',[435 offsetY-8 1 102]);
uicontrol(handles.figAlffMain,'Style','Text','Position',[152 offsetY+88 160 14],...
'String','Output Parameters (ALFF map)');
uicontrol(handles.figAlffMain, 'Style','Frame','Position',[2 offsetY+450 433 1]);
uicontrol(handles.figAlffMain, 'Style','Frame','Position',[435 offsetY+450 1 50]);
uicontrol(handles.figAlffMain, 'Style','Frame','Position',[2 offsetY+450 1 50]);
uicontrol(handles.figAlffMain, 'Style','Frame','Position',[2 offsetY+500 433 1]);
uicontrol(handles.figAlffMain,'Style','Text','Position',[142 offsetY+495 180 14],...
'String','Option: Ideal Band Pass Filter');
uicontrol(handles.figAlffMain, 'Style','Frame','Position',[2 offsetY+515 433 1]);
uicontrol(handles.figAlffMain, 'Style','Frame','Position',[435 offsetY+515 1 50]);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -