Mercurial > hg > camir-aes2014
diff toolboxes/MIRtoolbox1.3.2/somtoolbox/sompak_rb_control.m @ 0:e9a9cd732c1e tip
first hg version after svn
author | wolffd |
---|---|
date | Tue, 10 Feb 2015 15:05:51 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/toolboxes/MIRtoolbox1.3.2/somtoolbox/sompak_rb_control.m Tue Feb 10 15:05:51 2015 +0000 @@ -0,0 +1,252 @@ +function varargout=sompak_rb_control(str) + +%SOMPAK_RB_CONTROL An auxiliary function for SOMPAK_*_GUI functions. +% +% This is an auxiliary function for SOMPAK_GUI, SOMPAK_INIT_GUI, +% SOMPAK_SAMMON_GUI and SOMPAK_TRAIN_GUI functions. It controls the +% radio buttons in the GUIs. +% +% See also SOMPAK_GUI, SOMPAK_INIT_GUI, SOMPAK_SAMMON_GUI, SOMPAK_TRAIN_GUI. + +% Contributed to SOM Toolbox vs2, February 2nd, 2000 by Juha Parhankangas +% Copyright (c) by Juha Parhankangas +% http://www.cis.hut.fi/projects/somtoolbox/ + +% Juha Parhankangas 050100 + +data=get(gcf,'UserData'); +switch str + case {'rand','linear'} + h=cat(2,findobj(get(gcf,'Children'),'Tag','RANDOM'),... + findobj(get(gcf,'Children'),'Tag','LINEAR')); + set(h,'Value',0); + set(gcbo,'Value',1); + data.inittype=str; + case {'bubble','gaussian'} + h=cat(2,findobj(get(gcf,'Children'),'Tag','BUBBLE'),... + findobj(get(gcf,'Children'),'Tag','GAUSSIAN')); + set(h,'Value',0); + set(gcbo,'Value',1); + data.neigh=str; + case {'hexa','rect'} + h=cat(2,findobj(get(gcf,'Children'),'Tag','HEXA'),... + findobj(get(gcf,'Children'),'Tag','RECT')); + set(h,'Value',0); + set(gcbo,'Value',1); + data.topol=str; + case {'out_ft'} + value=get(gcbo,'Value'); + switch value + case 1 + h=findobj(get(gcf,'Children'),'Tag','OUT_FILE'); + data.out_file_type=''; + set(h,'String',''); + case 2 + data.out_file_type='box'; + case 3 + data.out_file_type='pak'; + end + case {'input_ft'} + value=get(gcbo,'Value'); + switch value + case 1 + data.input_file_type=''; + case 2 + data.input_file_type='box'; + case 3 + data.input_file_type='pak'; + end + case {'map_ft'} + value=get(gcbo,'Value'); + switch value + case 1 + data.map_type=''; + case 2 + data.map_type='box'; + case 3 + data.map_type='pak'; + end + case {'out_file'} + if isempty(data.out_file_type) + data.out_file=''; + h=findobj(get(gcf,'Children'),'Tag','OUT_FILE'); + set(h,'String',''); + else + data.out_file=get(findobj(get(gcf,'Children'),'Tag','OUT_FILE'),'String'); + if isempty(data.out_file) + h=findobj(get(gcf,'Children'),'Tag','OUT_FILE_TYPE'); + set(h,'Value',1); + end + end + + case {'out_var'} + h=findobj(get(gcf,'Children'),'Tag','OUT_VAR'); + if ~isempty(get(h,'String')) + data.out_var=get(h,'String'); + else + data.out_var=[]; + set(h,'String','''ans'''); + end + case {'xdim'} + h=findobj(get(gcf,'Children'),'Tag','XDIM'); + data.xdim=str2num(get(h,'String')); + case {'ydim'} + h=findobj(get(gcf,'Children'),'Tag','YDIM'); + data.ydim=str2num(get(h,'String')); + case {'radius'} + h=findobj(get(gcf,'Children'),'Tag','RADIUS'); + data.radius=str2num(get(h,'String')); + case {'data'} + h=findobj(get(gcf,'Children'),'Tag','DATA'); + data.data=get(h,'String'); + case {'rlen'} + h=findobj(get(gcf,'Children'),'Tag','RLEN'); + data.rlen=str2num(get(h,'String')); + case {'alpha'} + h=findobj(get(gcf,'Children'),'Tag','ALPHA'); + data.alpha=str2num(get(h,'String')); + case {'map'} + h=findobj(get(gcf,'Children'),'Tag','MAP'); + data.map=get(h,'String'); + case 'init_ok' + if isempty(data.xdim) | ~is_positive_integer(data.xdim) + errordlg('Argument ''xdim'' must be positive integer.'); + return; + end + if isempty(data.ydim) | ~is_positive_integer(data.ydim) + errordlg('Argument ''ydim'' must be positive integer.'); + return; + end + if isempty(data.data) + errordlg('Argument ''Workspace data'' must be a string.'); + return; + end + + if isempty(data.input_file_type) + sData=evalin('base',data.data); + else + sData=data.data; + end + if isempty(data.out_file) + if ~isempty(data.out_file_type) + errordlg('Argument ''Output file'' is not defined.'); + return; + end + data.out_file=[]; + end + answer=sompak_init(sData,... + data.input_file_type,... + data.inittype,... + data.out_file,... + data.out_file_type,... + data.xdim,... + data.ydim,... + data.topol,... + data.neigh); + if any(strcmp(data.out_var,{'ans','''ans'''})) | isstr(answer) + varargout{1}=answer; + else + assignin('base',data.out_var,answer); + disp(sprintf('Map is set to workspace as ''%s''.',data.out_var)); + end + close(findobj(get(0,'Children'),'Tag','InitGUI')); + return; + case 'train_ok' + if isempty(data.rlen) | ~is_positive_integer(data.rlen) + errordlg('Argument ''Running Length'' must be positive integer.'); + return; + end + if isempty(data.alpha) | data.alpha <= 0 + errordlg('Argument ''Initial Alpha Value'' must be a positive float.'); + return; + end + if isempty(data.radius) | data.radius <= 0 + errordlg('Argument ''Neighborhood Radius'' must be a positive float.'); + return; + end + if isempty(data.data) + errordlg('Argument ''Teaching Data'' must be a string.'); + return; + end + if isempty(data.input_file_type) + sData=evalin('base',data.data); + else + sData=data.data; + end + if isempty(data.out_file); + data.outfile = []; + end + if isempty(data.map) + errordlg('Argument ''Workspace Map'' must be a string.'); + return; + end + if isempty(data.map_type) + sMap=evalin('base',data.map); + else + sMap=data.map; + end + + answer=sompak_train(sMap,... + data.map_type,... + data.out_file,... + data.out_file_type,... + data.data,... + data.input_file_type,... + data.rlen,... + data.alpha,... + data.radius); + if any(strcmp(data.out_var,{'''ans''','ans'})) | isstr(answer) + varargout{1}=answer; + else + assignin('base',data.out_var,answer); + disp(sprintf('Map is set to workspace as ''%s''.',data.out_var)); + end + close(findobj(get(0,'Children'),'Tag','TrainGUI')); + return; + case 'sammon_ok' + if isempty(data.map) + errordlg('Argument ''Workspace Map'' must be a string.'); + return; + end + if isempty(data.map_type) + sMap=evalin('base',data.map); + else + sMap=data.map; + end + if isempty(data.out_file); + data.outfile = []; + end + answer=sompak_sammon(sMap,... + data.map_type,... + data.out_file,... + data.out_file_type,... + data.rlen); + if strcmp(data.out_var,'''ans''')|strcmp(data.out_var,'ans')|isstr(answer) + varargout{1}=answer; + else + assignin('base',data.out_var,answer); + disp(sprintf('Codebook is set to workspace as ''%s''.',data.out_var)); + end + close(findobj(get(0,'Children'),'Tag','SammonGUI')); + return; +end + +set(gcf,'UserData',data); + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +function bool = is_positive_integer(x) + +bool = ~isempty(x) & isreal(x) & all(size(x) == 1) & x > 0; +if ~isempty(bool) + if bool & x~=round(x) + bool = 0; + end +else + bool = 0; +end + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +