diff toolboxes/MIRtoolbox1.3.2/somtoolbox/som_gui.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/som_gui.m	Tue Feb 10 15:05:51 2015 +0000
@@ -0,0 +1,3130 @@
+function som_gui(varargin)
+
+%SOM_GUI A GUI for initialization and training of SOM.
+%
+% som_gui([sD]) 
+% 
+%   som_gui
+%   som_gui(sD)
+%
+%  Input and output arguments ([]'s are optional) 
+%   [sD]     (struct) SOM data struct
+%            (matrix) a data matrix, size dlen x dim
+%
+%   Actually, there are more arguments the function takes, but 
+%   they are for internal action of the function only. DO NOT use
+%   them.
+%
+% For a more throughout description, see the online documentation.
+% See also PREPROCESS.
+
+%%%%%%%%%%%% DETAILED DESCRIPTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% IN FILES: som_gui.html,browsewin.jpg,wspace.jpg,loadgui.jpg,initgui.jpg,questdlg.jpg,paragui.jpg,mwindow.jpg,visgui.gif,reload.gif,savemap.gif,browse.gif
+%
+
+% Contributed to SOM Toolbox vs2, February 2nd, 2000 by Mika Pollari
+% Copyright (c) by Mika Pollari and SOM Toolbox Team
+% http://www.cis.hut.fi/projects/somtoolbox/
+
+% Mika Pollari 31.1.2000 vs 1.1
+
+global NEWMAP NEWST MAPSAVED MAP DATA  LOAD_NAME LOAD_DATA;
+global SAVEMAP ALGORITHM HANDLE2 STOPOLINIT INIT_TYPE;
+global STRAIN1 STRAIN2 SOTHERS;
+
+if nargin == 0
+  main_gui;
+  action = 'dummy';	
+elseif nargin == 1
+  temp = varargin{1};
+  if isstruct(temp),
+    DATA = temp;
+    main_gui;
+    action = 'input_data';
+  elseif isnumeric(temp), 
+    DATA = som_data_struct(temp);
+    main_gui;
+    action = 'input_data';
+  else
+    action = temp;			
+  end
+end 
+
+
+switch(action)
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LOAD %%%%%%%%%%%%%%%%%%%%%%%%%%
+  case 'load_data'
+     loadgui3;		%%% Activates load GUI
+  case 'workspace'
+       workspace;	%%% Workspace selected
+  case 'file'
+        file;  		%%% File Selected
+  case 'file_select'
+	file_select; 
+  case 'missing'	
+       Handle = findobj(gcf,'Tag','Checkbox1');
+       set(Handle,'Value',1);	
+  case 'load_ok'	%%% <Load OK> pushed
+     	load_ok;	
+  case 'input_data'	%%% GUI activated with data as arg1
+     	input_data;     %%% eg. som_gui(data)
+
+  case 'browse'		%%% Activates Browse GUI		
+	browse;		%%% Browse files or workspace variables
+
+  case 'works_ok'	%%% <OK> pushed in (workspace) browse GUI
+	works_ok;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+%%%%%%%%%%%%%%%%%%%%%%%% Initialization %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+  case 'def_initialization'	%%% Finds default initialization ...
+	def_initialization;     %%% parameters
+
+  case 'change_initialization'	%%% Activates change (init) parameters GUI    
+	change_initialization;
+
+  case 'change_initialization_ok'%%% Set new init. parameters 	
+	change_initialization_ok;
+
+  case 'change_initialization_cancel'
+	close(gcf);
+	return;
+
+  case 'map_size' %%% Checks that 'map_size' is given in correct form
+	map_size;
+
+  case 'munits'   %%% Checks that 'munits' is given in correct form
+	munits;
+  
+  case 'init'	%%% Initialize Map
+	init;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%% Train %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+  case 'def_values_others'
+	def_values_others;
+
+  case 'def_values_train'
+ 	STRAIN1 = som_train_struct('algorithm',ALGORITHM,'phase','rough','data',DATA);
+	STRAIN2 = som_train_struct('previous',STRAIN1);
+
+  case 'fill_fields'	%%% Fill text fields in GUI
+	fill_fields;
+
+  case 'def_train'	%%% Train Map
+     	def_train;
+
+  case 'change_def'	%%% Change default training parameters 
+	change_def;	%%% Activate GUI
+
+  case 'fill_new_defaults' 
+	fill_new_defaults;
+
+  case 'set_batch_mask'
+	set_batch_mask;
+
+  case 'set_new_parameters'
+	set_new_parameters;
+
+  case 'only_finetune' 	%%% Train only once with finetune parameters
+	only_finetune;
+
+%%%%%%% Next function check correctnes of new training parameters.
+
+  case 'check_rough_radini'
+	check_rough_radini;
+  case 'check_fine_radini'
+	check_fine_radini;
+  case 'check_rough_radfin'
+	check_rough_radfin;
+  case 'check_fine_radfin'
+	check_fine_radfin;
+  case 'check_rough_alphaini'
+	check_rough_alphaini;
+  case 'check_fine_alphaini'
+	check_fine_alphaini;
+  case 'check_rough_trainlen'
+	check_rough_trainlen;
+  case 'check_fine_trainlen'
+	check_fine_trainlen;
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%% Save Map %%%%%%%%%%%%%%%%%%%%%%
+
+  case 'savemap'	%%% Save as <.cod> file
+	savemap;
+  case 'save_workspace'	%%% Save in workspace
+	save_workspace;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+%%%%%%%%%%%%%%%%%%%%%%% Help & Info %%%%%%%%%%%%%%%%%%%%%%%
+  case 'help'
+    web file:///share/somtoolbox/vs2/html/som_GUI.html;
+  case 'helpwin'
+    helpwin1;
+  case 'helpwin2'
+    helpwin som_gui;	
+  case 'data_info'
+	data_info;   %%% Info about data
+  case 'map_info'    %%% Info about map
+	map_info;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%% Other Functions %%%%%%%%%%%%%%%%%%%%%%%
+
+  case 'preprocess'
+	preprocess_gui;		%%%%% Call preprocess GUI
+  case 'visualize'
+	visualize;		%%%%% Call visualization GUI
+
+  case 'clear_all'		%%%%% Clear all filds
+	clear_all;		
+
+  case 'close'
+	close_fig;		%%%%% Close active GUI 	
+
+end 
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%				%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%   END OF SWITCH-STATEMENT  %%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%				%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%% (SUB) FUNCTIONS
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%				%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%     LOAD SECTION STARTS	%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%				%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%	
+
+function [] = workspace()
+Handle = findobj(gcbf,'Tag','Radiobutton2');
+Value = get(Handle,'Value');
+HandleTemp = findobj(gcbf,'Tag','Radiobutton1');
+if Value == 1	
+  set(HandleTemp,'Value',0);
+  HandleBar = findobj(gcbf,'Tag','PopupMenu1');
+  set(HandleBar,'Enable','off');
+  set(HandleBar,'Visible','off');
+  Handle3 = findobj(gcbf,'Tag','StaticText3');
+  set(Handle3,'Visible','off');
+  Handle3 = findobj(gcbf,'Tag','Checkbox1');
+  set(Handle3,'Visible','off');
+  Handle3 = findobj(gcbf,'Tag','EditText3');
+  set(Handle3,'Visible','off');
+  Handle = findobj(gcbf,'Tag','EditText2');
+  set(Handle,'String','');
+end
+
+
+
+function [] = file()
+Handle = findobj(gcbf,'Tag','Radiobutton1');
+Value = get(Handle,'Value');
+HandleTemp = findobj(gcbf,'Tag','Radiobutton2');
+if Value == 1
+  set(HandleTemp,'Value',0);
+  HandleBar = findobj(gcbf,'Tag','PopupMenu1');
+  set(HandleBar,'Enable','on');
+  set(HandleBar,'Visible','on');
+  Handle3 = findobj(gcbf,'Tag','StaticText3');
+  set(Handle3,'Visible','on');
+  Handle3 = findobj(gcbf,'Tag','Checkbox1');
+  set(Handle3,'Visible','on');
+  Handle3 = findobj(gcbf,'Tag','EditText3');
+  set(Handle3,'Visible','on'); 
+  Handle = findobj(gcbf,'Tag','EditText1');
+  set(Handle,'String','');
+end
+
+function [] = file_select() 
+Handle = findobj(gcbf,'Tag','PopupMenu1');
+temp = get(Handle,'String');
+val = get(Handle,'Value');
+Handle1 = findobj(gcbf,'Tag','Checkbox1');
+Handle2 = findobj(gcbf,'Tag','EditText3');
+if strcmp(temp{val},'dat file')
+   set(Handle2,'String','x');
+   set(Handle1,'Enable','on');
+   set(Handle2,'Enable','on');
+   set(Handle1,'Visible','on');
+   set(Handle2,'Visible','on');
+  else 
+   set(Handle1,'Value',0);
+   set(Handle1,'Enable','off');
+   set(Handle2,'Enable','off');
+   set(Handle1,'Visible','off');
+   set(Handle2,'Visible','off');
+end
+
+function [] = load_ok()
+global MAP DATA LOAD_DATA LOAD_NAME;
+Handle1 = findobj(gcbf,'Tag','EditText1');
+Handle2 = findobj(gcbf,'Tag','EditText2');
+Name1 = get(Handle1,'String');
+Name2 = get(Handle2,'String');
+if isempty(Name1) & not(isempty(Name2))
+  Handle = findobj(gcbf,'Tag','PopupMenu1')
+  type = get(Handle,'String');
+  val = get(Handle,'Value');
+  type = type{val};
+  if strcmp(type,'mat file')
+      ltemp = 'load:::';
+      ltemp = strcat(ltemp,Name2);
+      ltemp = strrep(ltemp,':::',' ');
+      evalin('base',ltemp);
+      DATA = evalin('base','sD');
+      LOAD_DATA = evalin('base','sD.data');
+      LOAD_NAME = evalin('base','sD.name');
+      LOAD_NAME = strrep(LOAD_NAME,'.','_');
+      load_labels = evalin('base','sD.labels');
+      load_comp_names = evalin('base','sD.comp_names');
+      DATA = som_data_struct(LOAD_DATA);
+      DATA.name = LOAD_NAME;
+      DATA.comp_names = load_comp_names;
+      DATA.labels = load_labels;
+   else
+      Handle = findobj(gcbf,'Tag','Checkbox1');
+      value = get(Handle,'Value');
+      if value == 0	
+         temp = 'som_read_data(''';
+         temp = strcat(temp,Name2,''');');
+      else 
+          Handle = findobj(gcbf,'Tag','EditText3');
+          missing = get(Handle,'String');
+          if not(isempty(missing))
+              temp = 'som_read_data(''';
+              temp = strcat(temp,Name2,'''',',','''',missing,''');');
+          else
+	      temp = 'som_read_data(''';
+              temp = strcat(temp,Name2,''');');
+          end   
+      end
+     evalin('base',temp);
+     DATA = evalin('base','ans');
+     name = DATA.name;
+     temp = findstr('/',name);
+     if not(isempty(temp))	
+         name = name(temp(end)+1:end);
+     end
+     name = strrep(name,'.','_');		
+     LOAD_NAME = name;
+     DATA.name = name;	
+   end
+elseif isempty(Name2) & not(isempty(Name1))
+   LOAD_DATA = evalin('base',Name1);
+   if not(isstruct(LOAD_DATA))
+      DATA = som_data_struct(LOAD_DATA);
+      LOAD_NAME = Name1;
+      DATA.name = Name1;
+   else
+      DATA = LOAD_DATA;
+      name = DATA.name;
+      temp = findstr('/',name);
+      if not(isempty(temp))	
+	 name = name(temp(end)+1:end);
+      end
+      name = strrep(name,'.','_');		
+      LOAD_NAME = name;
+      DATA.name = name;
+   end
+else 
+   errmsg = {'Give name of data before loading'};
+   errordlg(errmsg,'Empty data name!');
+   return;
+end
+close(gcbf);			     			
+if not(isempty(MAP))
+   clear MAP;
+   global MAP;
+   str1 = 'Map:  <empty>';
+   str2 = 'Train';
+   Handle = findobj(gcf,'Tag','StaticText3');
+   set(Handle,'String',str1);
+   Handle = findobj(gcf,'Tag','StaticText8');
+   set(Handle,'String',str2);
+end	
+temp =  'Data:';
+temp = strcat(temp,' <',LOAD_NAME,'>');	
+Handle = findobj(gcf,'Tag','StaticText4');
+set(Handle,'String',temp);
+som_gui('def_initialization');
+Handle = findobj(gcf,'Tag','Pushbutton2');
+set(Handle,'Enable','off');
+Handle = findobj(gcf,'Tag','Pushbutton4');
+set(Handle,'Enable','on');
+Handle = findobj(gcf,'Tag','Pushbutton9');
+set(Handle,'Enable','on');
+Handle = findobj(gcf,'Tag','Subuimenu2');
+set(Handle,'Enable','on');
+Handle = findobj(gcf,'Tag','&Help/InfoHelp windowuimenu1');
+set(Handle,'Enable','on');
+Handle = findobj(gcf,'Tag','&Init&Trainuimenu1');
+set(Handle,'Enable','on');
+Handle = findobj(gcf,'Tag','&Init&TrainInitialize1');
+set(Handle,'Enable','on');
+Handle = findobj(gcf,'Tag','Subuimenu1');
+set(Handle,'Enable','off'); %%%%%%????????	
+Handle = findobj(gcf,'Tag','StaticText10');
+set(Handle,'String','Status <data loaded>');	
+ 
+
+
+function [] = input_data()
+global DATA; 
+name = DATA.name;
+newname = strrep(name,'.','_');
+DATA.name = newname;
+temp = strcat('Data:  <',newname,'>');	
+Handle = findobj(gcf,'Tag','StaticText4');
+set(Handle,'String',temp);
+som_gui('def_initialization');
+Handle = findobj(gcf,'Tag','Pushbutton2');
+set(Handle,'Enable','off');
+Handle = findobj(gcf,'Tag','Pushbutton4');
+set(Handle,'Enable','on');
+Handle = findobj(gcf,'Tag','Pushbutton9');
+set(Handle,'Enable','on');
+Handle = findobj(gcf,'Tag','Subuimenu2');
+set(Handle,'Enable','on');
+Handle = findobj(gcf,'Tag','&Help/InfoHelp windowuimenu1');
+set(Handle,'Enable','on');
+Handle = findobj(gcf,'Tag','&Init&Trainuimenu1');
+set(Handle,'Enable','on');
+Handle = findobj(gcf,'Tag','&Init&TrainInitialize1');
+set(Handle,'Enable','on');
+Handle = findobj(gcf,'Tag','Subuimenu1');
+set(Handle,'Enable','off'); %%%%%%????????	
+Handle = findobj(gcf,'Tag','StaticText10');
+set(Handle,'String','Status <data loaded>');	
+
+
+function [] = browse()
+global HANDLE2;
+HandleWorkspace = findobj(gcbf,'Tag','Radiobutton2');
+HandleFile = findobj(gcbf,'Tag','Radiobutton1');
+WorkspaceVal = get(HandleWorkspace,'Value');
+FileVal = get(HandleFile,'Value');
+if FileVal == 1
+   Handle = findobj(gcbf,'Tag','PopupMenu1');
+   str = get(Handle,'String');
+   value = get(Handle,'Value');
+   str = str{value};
+   if strcmp(str,'mat file')
+      filtter = '*.mat';
+   else
+      filtter = '*.dat*';
+   end 
+   [filename pathname] = uigetfile(filtter,'Load file.');
+   temp = strcat(pathname,filename);
+   Handle = findobj(gcbf,'Tag','EditText2');
+   set(Handle,'String',temp);
+elseif WorkspaceVal == 1
+   HANDLE2 = gcf;
+   works;
+   temp = evalin('base','who');
+   index2 = 1;
+   names = '';
+   for index = 1:length(temp)
+      if isnumeric(evalin('base',temp{index}))
+	test = size(evalin('base',temp{index}));
+	if test(1) ~= 1 & test(2) ~= 1
+   	   names{index2} = temp{index};	
+	   index2 = index2 + 1;
+	end
+      end
+   end
+   for index = 1:length(temp)
+	variable = evalin('base',temp{index});
+	if isstruct(variable)
+	   fnames = fieldnames(variable);
+	   if size(fnames,1) == 6 & strcmp(fnames(1),'type') & strcmp(variable.type,'som_data')
+	     names{index2} = temp{index};	
+	     index2 = index2 + 1;
+	   end
+	end 
+   end	
+   Handle = findobj(gcf,'Tag','Listbox1');
+   %%%%%% if is empty string#%%%
+   set(Handle,'String',names);
+else
+   errmsg = 'Select browse type: Workspace or file.';
+   errordlg(errmsg,'Browse error!');
+   return;
+end
+
+
+function [] = works_ok()
+global HANDLE2;
+Handle = findobj(gcbf,'Tag','Listbox1');
+temp = get(Handle,'String');
+val = get(Handle,'Value');
+data = temp{val};
+Handle = findobj(HANDLE2,'Tag','EditText1');
+set(Handle,'String',data);
+close;
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%				%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%     END OF LOAD SECTION	%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%				%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%	
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%				%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%     START OF INITIALIZATION	%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%				%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%	
+
+function [] = def_initialization()
+global DATA STOPOLINIT INIT_TYPE;
+sTopol = som_topol_struct('data',DATA);
+Handle = findobj(gcf,'Tag','StaticText5');
+temp = num2str(sTopol.msize);
+temp = strcat('map size:',' [',temp,']');
+set(Handle,'String',temp);
+Handle = findobj(gcf,'Tag','StaticText6');
+set(Handle,'String','type: linear');
+Handle = findobj(gcf,'Tag','StaticText20');
+temp = strcat('lattice:',sTopol.lattice);
+set(Handle,'String',temp);
+Handle = findobj(gcf,'Tag','StaticText21');
+temp = strcat('shape:',sTopol.shape);
+set(Handle,'String',temp);
+STOPOLINIT = sTopol;
+INIT_TYPE = 'linear';
+
+function [] = change_initialization()
+global INIT_TYPE STOPOLINIT; 
+initialization2;
+Handle = findobj(gcf,'Tag','PopupMenu1');
+temp = get(Handle,'String');
+val = loop(temp,INIT_TYPE);
+set(Handle,'Value',val);
+Handle = findobj(gcf,'Tag','PopupMenu2');
+temp = get(Handle,'String');
+val = loop(temp,STOPOLINIT.lattice);
+set(Handle,'Value',val);
+Handle = findobj(gcf,'Tag','PopupMenu3');
+temp = get(Handle,'String');
+val = loop(temp,STOPOLINIT.shape);
+set(Handle,'Value',val);
+Handle = findobj(gcf,'Tag','EditText1');
+temp = num2str(STOPOLINIT.msize);
+msize = strcat('[',temp,']');
+set(Handle,'String',msize);
+
+function [] = change_initialization_ok()
+Handle = findobj(gcbf,'Tag','PopupMenu1');
+temp = get(Handle,'String');
+val = get(Handle,'Value');
+INIT_TYPE = temp{val};
+Handle = findobj(gcbf,'Tag','PopupMenu2');
+temp = get(Handle,'String');
+val = get(Handle,'Value');
+lattice = temp{val};
+Handle = findobj(gcbf,'Tag','PopupMenu3');
+temp = get(Handle,'String');
+val = get(Handle,'Value');
+shape = temp{val};
+Handle = findobj(gcbf,'Tag','EditText1');
+temp = get(Handle,'String');
+msize = str2num(temp);
+STOPOLINIT = som_set('som_topol','msize',msize,'lattice',lattice,'shape',shape);
+close(gcf);
+Handle = findobj(gcf,'Tag','StaticText5');
+temp = num2str(STOPOLINIT.msize);
+temp = strcat('map size:',' [',temp,']');
+set(Handle,'String',temp);
+Handle = findobj(gcf,'Tag','StaticText6');
+temp = strcat('type:',INIT_TYPE);
+set(Handle,'String',temp);
+Handle = findobj(gcf,'Tag','StaticText20');
+temp = strcat('lattice:',STOPOLINIT.lattice);
+set(Handle,'String',temp);
+Handle = findobj(gcf,'Tag','StaticText21');
+temp = strcat('shape:',STOPOLINIT.shape);
+set(Handle,'String',temp);
+
+
+function [] = def_values_others()
+global SOTHERS;
+Handle = findobj(gcf,'Tag','StaticText19');
+temp = strcat('tracking:',SOTHERS.tracking);
+set(Handle,'String',temp);
+Handle = findobj(gcf,'Tag','StaticText12');
+temp = strcat('order:',SOTHERS.oder);
+set(Handle,'String',temp); 
+Handle = findobj(gcf,'Tag','StaticText14');
+temp = strcat('length_type:',SOTHERS.length_type);
+set(Handle,'String',temp);
+
+
+
+function [] = fill_fields()
+global STRAIN1 STRAIN2 ALGORITHM
+
+neigh = STRAIN1.neigh;
+mask = STRAIN1.mask;
+rad_ini1 = STRAIN1.radius_ini;
+rad_ini2 = STRAIN2.radius_ini;
+rad_fin1 = STRAIN1.radius_fin;
+rad_fin2 = STRAIN2.radius_fin;
+trainlen1 = num2str(STRAIN1.trainlen);
+trainlen2 = num2str(STRAIN2.trainlen);
+alpha_ini1 = num2str(STRAIN1.alpha_ini);
+alpha_ini2 = num2str(STRAIN2.alpha_ini);
+if strcmp(ALGORITHM,'seq')
+        alpha_type = STRAIN1.alpha_type; %%% only in sequential
+        Handle = findobj(gcf,'Tag','StaticText28');
+        temp = strcat('alpha type:',alpha_type);
+        set(Handle,'String',temp);
+end
+Handle = findobj(gcf,'Tag','StaticText11');
+temp = strcat('neigh: ',neigh);
+set(Handle,'String',temp);
+Handle = findobj(gcf,'Tag','StaticText22');
+temp = num2str(rad_fin1);
+temp = strcat('radius final:',temp);
+set(Handle,'String',temp);
+Handle = findobj(gcf,'Tag','StaticText25');
+temp = num2str(rad_fin2);
+temp = strcat('radius final:',temp);
+set(Handle,'String',temp);
+Handle = findobj(gcf,'Tag','StaticText11');
+temp = strcat('neigh: ',neigh);
+set(Handle,'String',temp);
+Handle = findobj(gcf,'Tag','StaticText17');
+temp = num2str(rad_ini1);
+temp = strcat('radius initial:',temp);
+set(Handle,'String',temp);
+Handle = findobj(gcf,'Tag','StaticText24');
+temp = num2str(rad_ini2);
+temp = strcat('radius initial:',temp);
+set(Handle,'String',temp);
+Handle = findobj(gcf,'Tag','StaticText16');
+temp = num2str(trainlen1);
+temp = strcat('training length:',temp);
+set(Handle,'String',temp);
+Handle = findobj(gcf,'Tag','StaticText23');
+temp = num2str(trainlen2);
+temp = strcat('training length:',temp);
+set(Handle,'String',temp);
+Handle = findobj(gcf,'Tag','StaticText26');
+temp = strcat('alpha initial:',alpha_ini1);
+set(Handle,'String',temp);
+Handle = findobj(gcf,'Tag','StaticText27');
+temp = strcat('alpha initial:',alpha_ini2);
+set(Handle,'String',temp);
+
+
+function [] = init();
+global INIT_TYPE MAP NEWMAP ALGORITHM SOTHERS DATA STOPOLINIT;
+if strcmp(INIT_TYPE,'random')
+   MAP = som_randinit(DATA,STOPOLINIT);
+else 
+   MAP = som_lininit(DATA,STOPOLINIT);
+end
+NEWMAP = MAP;	
+temp = 'Map:';
+temp = strcat(temp,' <',MAP.name,'>');
+Handle = findobj(gcbf,'Tag','StaticText3');
+set(Handle,'String',temp);
+Handle = findobj(gcbf,'Tag','StaticText10');
+set(Handle,'String','Status <map initialized>');
+ALGORITHM = 'batch';
+Handle = findobj(gcbf,'Tag','Pushbutton4');
+set(Handle,'Enable','off');
+Handle = findobj(gcbf,'Tag','Pushbutton6');
+set(Handle,'Enable','on');
+Handle = findobj(gcbf,'Tag','Pushbutton5');
+set(Handle,'Enable','on');		
+SOTHERS.tracking = '1';
+SOTHERS.length_type = 'epochs';
+SOTHERS.oder = 'random';			
+som_gui('def_values_topol');
+som_gui('def_values_train');
+som_gui('def_values_others');
+som_gui('fill_fields');
+Handle = findobj(gcbf,'Tag','Pushbutton4');
+set(Handle,'Enable','off');
+Handle = findobj(gcbf,'Tag','Pushbutton9');
+set(Handle,'Enable','off');
+Handle = findobj(gcbf,'Tag','Radiobutton1');
+set(Handle,'Enable','on');
+Handle = findobj(gcbf,'Tag','&Init&TrainChange initialization valuesuimenu1');
+set(Handle,'Enable','on');
+Handle = findobj(gcbf,'Tag','&Init&TrainTrain1');
+set(Handle,'Enable','on');
+Handle = findobj(gcbf,'Tag','&Help/InfoData infouimenu1');
+set(Handle,'Enable','on');	
+Handle = findobj(gcbf,'Tag','Subuimenu2');
+set(Handle,'Enable','off');
+Handle = findobj(gcbf,'Tag','&Init&Trainuimenu1');
+set(Handle,'Enable','off');
+Handle = findobj(gcbf,'Tag','&Init&TrainInitialize1');
+set(Handle,'Enable','off');  %%%%%%%%%%%??????????			
+Handle = findobj(gcbf,'Tag','StaticText9');
+set(Handle,'String','training type: batch');	
+
+
+
+function [] = set_batch_mask()
+Handle = findobj(gcbf,'Tag','Listbox2');
+temp = get(Handle,'String');
+mask = str2num(temp);
+Handle = findobj(gcbf,'Tag','Listbox1');
+replace = get(Handle,'Value');
+Handle = findobj(gcbf,'Tag','EditText2');
+temp = get(Handle,'String');
+value = str2num(temp);
+if not(isempty(value))
+  mask(replace) = value;
+  Handle = findobj(gcbf,'Tag','Listbox2');
+  temp = num2str(mask);
+  set(Handle,'String',temp);
+end
+
+function [] = munits()
+global DATA STOPOLINIT;
+msgs = {'Correct map units is number';'Correct map units is number'};
+[msgs_nro, value] = check_ok('EditText2');
+if msgs_nro > 0
+   errordlg({msgs{msgs_nro}},'Incorrect map units!')
+   return;
+end
+STOPOLINIT = som_topol_struct('munits',value,'data',DATA);
+Handle = findobj(gcbf,'Tag','EditText1');
+temp = num2str(STOPOLINIT.msize);
+msize = strcat('[',temp,']');
+set(Handle,'String',msize);
+
+function [] = map_size()
+ global STOPOLINIT;
+ msgs = {'Map size must be in form [x y]';...
+		'Map size must be in form [x y]'};
+ [msgs_nro, value, Handle] = msize_ok('EditText1');
+ if msgs_nro > 0
+   errordlg({msgs{msgs_nro}},'Incorrect map size!');
+   temp = num2str(STOPOLINIT.msize);
+   temp = strcat('[',temp,']');
+   set(Handle,'String',temp);	
+   return;
+ end
+ STOPOLINIT.msize = value;
+ Handle = findobj(gcbf,'Tag','EditText2');
+ set(Handle,'String','');
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%				%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%     END OF INITIALIZATION	%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%				%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%	
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%				%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%     START OF TRAINING		%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%				%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%	
+
+
+function  [] = def_train()
+global SOTHERS ALGORITHM MAP NEWST DATA STRAIN1 STRAIN2 MAPSAVED;
+tlen_type = SOTHERS.length_type;
+sample_order = SOTHERS.oder;	
+tracking = SOTHERS.tracking;
+test = str2num(tracking);
+Handle = findobj(gcbf,'Tag','Radiobutton1');
+tempval = get(Handle,'Value');
+if strcmp(ALGORITHM,'seq')
+    if tempval ~= 1
+       [MAP NEWST] = som_seqtrain(MAP,DATA,'train',STRAIN1,tlen_type,sample_order);
+    end
+    if test > 1
+	figure;
+	set(gcf,'Name',MAP.name);
+	 set(gcf,'NumberTitle','off');
+    end
+    [NEWMAP NEWST] = som_seqtrain(MAP,DATA,'train',STRAIN2,'tracking',test,tlen_type,sample_order); 
+else
+    if tempval ~= 1
+       [MAP NEWST] = som_batchtrain(MAP,DATA,'train',STRAIN1);
+    end
+    if test > 1
+       figure;
+       set(gcf,'Name',MAP.name);
+       set(gcf,'NumberTitle','off');
+    end
+        [NEWMAP NEWST] = som_batchtrain(MAP,DATA,'train',STRAIN2,'tracking',test);
+end
+MAP = NEWMAP;
+clear MAPSAVED;	
+Handle = findobj(gcbf,'Tag','StaticText10');
+set(Handle,'String','Status <map trained>');
+Handle = findobj(gcbf,'Tag','Load/SaveSubuimenu1');
+set(Handle,'Enable','on');		
+Handle = findobj(gcbf,'Tag','Load/SaveSave mapuimenu1');
+set(Handle,'Enable','on');	 
+Handle = findobj(gcbf,'Tag','&Load/SaveSave mapSave in workspaceuimenu1');
+set(Handle,'Enable','on');
+Handle = findobj(gcbf,'Tag','&ToolsSubuimenu1');
+set(Handle,'Enable','on');
+Handle = findobj(gcbf,'Tag','&Init&TrainChange initialization valuesuimenu1');
+set(Handle,'Enable','off');
+Handle = findobj(gcbf,'Tag','&Init&TrainTrain1');
+set(Handle,'Enable','off');		
+
+
+function [] = change_def()
+global ALGORITHM STRAIN1 DATA; 
+
+ButtonName = questdlg('Select training type!',...
+	'Change values.',...
+	'Batch','Sequential','Cancel',...
+        'Batch');	
+if strcmp(ButtonName,'Sequential')
+   Handle = findobj(gcbf,'Visible','off');
+   set(Handle,'Visible','on');
+   ALGORITHM = 'seq';
+   Handle = findobj(gcf,'Tag','StaticText9');
+   set(Handle,'String','training type: sequential');
+   new_para2_2;
+   Handle = findobj(gcf,'Tag','StaticText1');
+   set(Handle,'String','Change parameters for sequential training');
+   Handle = findobj(gcf,'Enable','off');
+   set(Handle,'Enable','on');
+   Handle = findobj(gcf,'Visible','off');
+   set(Handle,'Visible','on');
+elseif strcmp(ButtonName,'Batch')
+   ALGORITHM = 'batch';
+   Handle = findobj(gcbf,'Tag','StaticText26');
+   set(Handle,'Visible','off');
+   Handle = findobj(gcbf,'Tag','StaticText27');
+   set(Handle,'Visible','off');
+   Handle = findobj(gcf,'Tag','StaticText9');
+   set(Handle,'String','training type: batch');
+   Handle = findobj(gcf,'Tag','StaticText12');
+   set(Handle,'Visible','off');
+   Handle = findobj(gcf,'Tag','StaticText28');
+   set(Handle,'Visible','off');
+   Handle = findobj(gcf,'Tag','StaticText14');
+   set(Handle,'Visible','off');
+   new_para2_2;	
+   Handle = findobj(gcf,'Tag','StaticText1');
+   set(Handle,'String','Change parameters for batch training');
+   Handle = findobj(gcf,'Tag','PopupMenu3');
+   set(Handle,'Enable','off');
+   set(Handle,'Visible','off');
+   Handle = findobj(gcf,'Tag','PopupMenu4');
+   set(Handle,'Enable','off');
+   set(Handle,'Visible','off');
+   Handle = findobj(gcf,'Tag','PopupMenu5');
+   set(Handle,'Enable','off');
+   set(Handle,'Visible','off');
+   Handle = findobj(gcf,'Tag','StaticText17');
+   set(Handle,'Visible','off');
+   Handle = findobj(gcf,'Tag','StaticText18');
+   set(Handle,'Visible','off');
+   Handle = findobj(gcf,'Tag','StaticText19');
+   set(Handle,'Visible','off');
+   Handle = findobj(gcf,'Tag','StaticText13');
+   set(Handle,'Visible','off'); 
+   Handle = findobj(gcf,'Tag','StaticText14');
+   set(Handle,'Visible','off');
+   Handle = findobj(gcf,'Tag','EditText6');
+   set(Handle,'Visible','off');
+   set(Handle,'Enable','off');
+   Handle = findobj(gcf,'Tag','EditText10');
+   set(Handle,'Visible','off');
+   set(Handle,'Enable','off');    
+else 
+   return;	
+end
+som_gui('def_values_train');	
+mask = STRAIN1.mask;
+Handle = findobj(gcf,'Tag','Listbox1');
+set(Handle,'String',DATA.comp_names);
+som_gui('fill_new_defaults');
+
+
+function [] = fill_new_defaults()
+global STRAIN1 STRAIN2 SOTHERS ALGORITHM;
+
+Handle = findobj(gcf,'Tag','EditText4');
+temp = num2str(STRAIN1.radius_ini);
+set(Handle,'String',temp);
+Handle = findobj(gcf,'Tag','EditText8');
+temp = num2str(STRAIN2.radius_ini);
+set(Handle,'String',temp);
+Handle = findobj(gcf,'Tag','EditText5');
+temp = num2str(STRAIN1.radius_fin);
+set(Handle,'String',temp);
+Handle = findobj(gcf,'Tag','EditText9');
+temp = num2str(STRAIN2.radius_fin);
+set(Handle,'String',temp);	
+Handle = findobj(gcf,'Tag','EditText6');
+temp = num2str(STRAIN1.alpha_ini);
+set(Handle,'String',temp);
+Handle = findobj(gcf,'Tag','EditText10');
+temp = num2str(STRAIN2.alpha_ini);
+set(Handle,'String',temp);
+Handle = findobj(gcf,'Tag','EditText7');
+temp = num2str(STRAIN1.trainlen);
+set(Handle,'String',temp);
+Handle = findobj(gcf,'Tag','EditText11');
+temp = num2str(STRAIN2.trainlen);
+set(Handle,'String',temp);
+Handle = findobj(gcf,'Tag','Listbox2');
+temp = num2str(STRAIN1.mask');
+set(Handle,'String',temp);
+Handle = findobj(gcf,'Tag','PopupMenu2');
+string = get(Handle,'String');
+val = loop(string,SOTHERS.tracking);
+set(Handle,'Value',val);
+Handle = findobj(gcf,'Tag','PopupMenu1');
+string = get(Handle,'String');
+val = loop(string,STRAIN1.neigh);
+set(Handle,'Value',val);
+if strcmp(ALGORITHM,'seq')
+   Handle = findobj(gcf,'Tag','PopupMenu3');
+   string = get(Handle,'String');
+   val = loop(string,SOTHERS.length_type);
+   set(Handle,'Value',val);
+   Handle = findobj(gcf,'Tag','PopupMenu4');
+   string = get(Handle,'String');
+   val = loop(string,SOTHERS.oder);
+   set(Handle,'Value',val);
+   Handle = findobj(gcf,'Tag','PopupMenu5');
+   string = get(Handle,'String');
+   val = loop(string,STRAIN1.alpha_type);
+   set(Handle,'Value',val);
+end			
+
+
+
+function [] = set_new_parameters()
+global STRAIN1 STRAIN2 ALGORITHM SOTHERS; 
+
+Handle = findobj(gcbf,'Tag','Listbox2');
+temp = get(Handle,'String');
+mask = str2num(temp); %%%%%%%%%%%%% Do somthing
+mask = mask';
+Handle = findobj(gcbf,'Tag','PopupMenu1');
+temp = get(Handle,'String');
+val = get(Handle,'Value');
+neigh = temp{val};
+Handle = findobj(gcbf,'Tag','PopupMenu2');
+temp = get(Handle,'String');
+val = get(Handle,'Value');
+SOTHERS.tracking = temp{val};  %%%%% finetune phase!
+Handle = findobj(gcbf,'Tag','EditText4');
+temp = get(Handle,'String');
+rad_ini1 = str2num(temp);
+Handle = findobj(gcbf,'Tag','EditText8');
+temp = get(Handle,'String');
+rad_ini2 = str2num(temp);
+Handle = findobj(gcbf,'Tag','EditText5');
+temp = get(Handle,'String');
+rad_fin1 = str2num(temp);
+Handle = findobj(gcbf,'Tag','EditText9');
+temp = get(Handle,'String');
+rad_fin2 = str2num(temp);
+Handle = findobj(gcbf,'Tag','EditText6');
+temp = get(Handle,'String');
+alpha_ini1 = str2num(temp);
+Handle = findobj(gcbf,'Tag','EditText10');
+temp = get(Handle,'String');
+alpha_ini2 = str2num(temp);
+Handle = findobj(gcbf,'Tag','EditText7');
+temp = get(Handle,'String');
+train_length1 = str2num(temp);
+Handle = findobj(gcbf,'Tag','EditText11');
+temp = get(Handle,'String');
+train_length2 = str2num(temp);
+if strcmp(ALGORITHM,'seq')
+   Handle = findobj(gcbf,'Tag','PopupMenu3');
+   temp = get(Handle,'String');
+   val = get(Handle,'Value');
+   SOTHERS.length_type = temp{val};
+   Handle = findobj(gcbf,'Tag','PopupMenu4');
+   temp = get(Handle,'String');
+   val = get(Handle,'Value');
+   SOTHERS.oder= temp{val};
+   Handle = findobj(gcbf,'Tag','PopupMenu5');
+   temp = get(Handle,'String');
+   val = get(Handle,'Value');
+   alpha_type = temp{val};
+else 
+   alpha_type = 'inv';
+end
+STRAIN1.neigh = neigh;
+STRAIN2.neigh = neigh;
+STRAIN1.mask = mask;
+STRAIN2.mask = mask;
+STRAIN1.radius_ini = rad_ini1;
+STRAIN2.radius_ini = rad_ini2;
+STRAIN1.radius_fin = rad_fin1;
+STRAIN2.radius_fin = rad_fin2;
+STRAIN1.alpha_ini = alpha_ini1;
+STRAIN2.alpha_ini = alpha_ini2;
+STRAIN1.alpha_type = alpha_type;
+STRAIN2.alpha_type = alpha_type;
+STRAIN1.trainlen = train_length1;
+STRAIN2.trainlen = train_length2;
+close(gcbf);
+som_gui('fill_fields');
+som_gui('def_values_others');
+
+function [] = only_finetune()
+
+Handle = findobj(gcbf,'Tag','Radiobutton1');
+test = get(Handle,'Value');
+if test == 1
+   Handle = findobj(gcbf,'Tag','StaticText16');
+   set(Handle,'Enable','off');
+   Handle = findobj(gcbf,'Tag','StaticText17');
+   set(Handle,'Enable','off');
+   Handle = findobj(gcbf,'Tag','StaticText22');
+   set(Handle,'Enable','off');
+   Handle = findobj(gcbf,'Tag','StaticText26');
+   set(Handle,'Enable','off');
+else 
+   Handle = findobj(gcbf,'Tag','StaticText16');
+   set(Handle,'Enable','on');
+   Handle = findobj(gcbf,'Tag','StaticText17');
+   set(Handle,'Enable','on');
+   Handle = findobj(gcbf,'Tag','StaticText22');
+   set(Handle,'Enable','on');
+   Handle = findobj(gcbf,'Tag','StaticText26');
+   set(Handle,'Enable','on');
+end
+
+
+function [] = check_rough_radini()
+global STRAIN1;
+msgs = {'Initial radius must be number!';...
+        'Initial radius must be single valued number!'};
+[msgs_nro, value, Handle] = check_ok('EditText4');
+if msgs_nro > 0
+   errordlg({msgs{msgs_nro}},'Incorrect initial radius!')
+   temp = num2str(STRAIN1.radius_ini);
+   set(Handle,'String',temp);
+   return;
+end
+
+
+function [] = check_fine_radini()
+global STRAIN2;
+msgs = {'Initial radius must be number!';...
+        'Initial radius must be single valued number!'};
+[msgs_nro, value, Handle] = check_ok('EditText8');
+if msgs_nro > 0
+   errordlg({msgs{msgs_nro}},'Incorrect initial radius!')
+   temp = num2str(STRAIN2.radius_ini);
+   set(Handle,'String',temp);
+   return;
+end
+
+function [] = check_rough_radfin()
+global STRAIN1;
+msgs = {'Final radius must be number!';...
+	'Final radius must be single valued number!'};
+[msgs_nro, value, Handle] = check_ok('EditText5');
+if msgs_nro > 0
+   errordlg({msgs{msgs_nro}},'Incorrect final radius!')
+   temp = num2str(STRAIN1.radius_fin);
+   set(Handle,'String',temp);
+   return;
+end
+
+function [] = check_fine_radfin()
+global STRAIN2;
+msgs = {'Final radius must be number!';...
+	'Final radius must be single valued number!'};
+[msgs_nro, value, Handle] = check_ok('EditText9');
+if msgs_nro > 0
+   errordlg({msgs{msgs_nro}},'Incorrect final radius!')
+   temp = num2str(STRAIN2.radius_fin);
+   set(Handle,'String',temp);
+   return;
+end
+
+function [] = check_rough_alphaini()
+global STRAIN1;	
+msgs = {'Alpha initial must be number!';...
+	'Alpha initial must be single valued number!'};
+[msgs_nro, value, Handle] = check_ok('EditText6');
+if msgs_nro > 0
+   errordlg({msgs{msgs_nro}},'Incorrect initial alpha!')
+   temp = num2str(STRAIN1.alpha_ini);
+   set(Handle,'String',temp);
+   return;
+end
+
+function [] = check_fine_alphaini()
+global STRAIN2;
+msgs = {'Alpha initial must be number!';...
+	'Alpha initial must be single valued number!'};
+[msgs_nro, value, Handle] = check_ok('EditText10');
+if msgs_nro > 0
+   errordlg({msgs{msgs_nro}},'Incorrect initial alpha!')
+   temp = num2str(STRAIN2.alpha_ini);
+   set(Handle,'String',temp);
+   return;
+end
+
+function [] = check_rough_trainlen()
+global STRAIN1;
+msgs = {'Training length must be number!';...
+	'Training length must be single valued number!'};
+[msgs_nro, value, Handle] = check_ok('EditText7');
+if msgs_nro > 0
+   errordlg({msgs{msgs_nro}},'Incorrect training length!')
+   temp = num2str(STRAIN1.trainlen);
+   set(Handle,'String',temp);
+   return;
+end
+
+function [] = check_fine_trainlen()
+global STRAIN2;
+
+msgs = {'Training length must be number!';...
+	'Training length must be single valued number!'};
+[msgs_nro, value, Handle] = check_ok('EditText11');
+if msgs_nro > 0
+   errordlg({msgs{msgs_nro}},'Incorrect training length!')
+   temp = num2str(STRAIN2.trainlen);
+   set(Handle,'String',temp);
+   return;
+end	
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%				%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%     END OF TRAINING		%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%				%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%	
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%				%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%     START OF SAVING		%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%				%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%	
+
+
+function [] = savemap()
+global MAP MAPSAVED;
+if isempty(MAP)
+  str = {'There is no map to be saved! Train map before saving.'};
+  helpdlg(str,'Empty map!');	
+  return;
+end
+[FileName Path] = uiputfile('*.cod','Save file!');
+if FileName ~= 0
+   temp = strcat(Path,FileName);
+   som_write_cod(MAP,temp);
+   MAPSAVED = 'SAVED';
+end
+Handle = findobj(gcf,'Tag','StaticText10');
+set(Handle,'String','Status <map saved>');	 
+
+function [] = save_workspace()
+global MAP MAPSAVED;
+if isempty(MAP)
+   str = {'There is no map to be saved! Train map before saving.'};
+   helpdlg(str,'Empty map!');
+   return;
+else
+   prompt = {'Save map as?'};
+   title = 'Save map!';
+   lineNo = 1;
+   answer = inputdlg(prompt,title,lineNo);
+   if isempty(answer)
+      return;
+   end
+   if not(isempty(answer{1}))
+      ws_variable = evalin('base','who');
+      max_length = 0;
+      for index = 1:size(ws_variable,1)
+         if max_length < size(ws_variable{index},2)
+	    max_length = size(ws_variable{index},2);
+         end
+      end
+      length = max_length + 1;
+      tempfoo(1:1:length) = 'A'; 
+      assignin('base',tempfoo,answer{1});
+      str = ['exist(' tempfoo ')'];	
+      temp = evalin('base',str); %%%%%%%%%%@@@@@@@@@
+      evalin('base',['clear ' tempfoo ]) 
+      if temp == 0
+         assignin('base',answer{1},MAP);
+         MAPSAVED = 'SAVED';
+      elseif temp ~= 0
+         Questmsg = strcat('Variable',' ''',answer{1},'''',...
+         ' exist. Overwrite?');
+         ButtonName = questdlg(Questmsg);
+         switch(ButtonName)
+         case 'Yes'
+            assignin('base',answer{1},MAP);
+            MAPSAVED = 'SAVED';
+         case 'No' 
+             som_gui('save_workspace');		
+         end
+     end	
+   else
+      helpmsg = {'There cannot be any empty field in ''save'''};
+      helpdlg(helpmsg,'Help Save!');
+      som_gui('save'); 
+   end
+end
+Handle = findobj(gcf,'Tag','StaticText10');
+set(Handle,'String','Status <map saved>');
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%				%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%     END OF SAVING		%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%				%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%	
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%				%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%     START OF HELP & INFO	%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%				%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%	
+
+%HEREXX
+
+function [] = data_info()
+global DATA;
+if isempty(DATA)
+   helpmsg = 'Load data first!';
+   helpdlg(helpmsg,'Empty data!');
+   return;
+end
+file_name = tempname;
+file_name = strcat(file_name,'.m');
+fid = fopen(file_name,'w');
+fprintf(fid,'%% %+35s\n','DATA INFO');
+fprintf(fid,'%%\n');
+print_info(DATA,2,fid);
+directory = tempdir;
+addpath (directory);
+helpwin (file_name);
+fclose(fid);
+delete(file_name);
+rmpath (directory);
+
+
+function [] = map_info()
+global MAP;
+if isempty(MAP)
+   helpmsg = 'There is no map!';
+   helpdlg(helpmsg,'Empty map!');
+   return;
+end
+file_name = tempname;
+file_name = strcat(file_name,'.m');
+fid = fopen(file_name,'w');
+fprintf(fid,'%% %+35s\n','MAP INFO');
+fprintf(fid,'%%\n');
+print_info(MAP,2,fid);
+directory = tempdir;
+addpath (directory);
+helpwin (file_name);
+fclose(fid);
+delete(file_name);
+rmpath (directory); 
+
+
+function [] = helpwin1()
+file1 = tempname;
+file1 = strcat(file1,'.m');
+directory = tempdir;	
+html2tex('file:///share/somtoolbox/vs2/html/som_GUI.html',file1);
+addpath (directory);
+helpwin (file1);
+rmpath (directory);
+delete (file1);		
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%				%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%     END OF HELP & INFO	%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%				%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%	
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%				%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%     START OF OTHER FUNC	%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%				%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%	
+
+
+
+function [msgs_nro, value, Handle] = check_ok(Tag)
+Handle = findobj(gcbf,'Tag',Tag);
+temp = get(Handle,'String');
+value = str2num(temp);
+if isempty(value)
+   msgs_nro = 1;
+   return;
+end
+[test1 test2] = size(value);
+if test1 ~= 1 | test2 ~= 1
+   msgs_nro = 2;	  
+   return; 
+end
+msgs_nro = 0;	
+
+
+function [msgs_nro, value, Handle] = msize_ok(Tag)
+Handle = findobj(gcbf,'Tag',Tag);
+temp = get(Handle,'String');
+value = str2num(temp);
+if isempty(value)
+   msgs_nro = 1;
+   return;
+end
+[test1 test2] = size(value);
+if test1 ~= 1 | test2 ~= 2
+   msgs_nro = 2;	  
+   return; 
+end
+msgs_nro = 0;
+
+
+%%% Changed 1.2.2000
+
+function [] = visualize()
+global MAP;
+if isempty(MAP)
+   helpmsg = {'Train map before tryinig to visualize it!'};
+   helpdlg(helpmsg,'Empty Map!');
+   return;
+end
+
+dim = size(MAP.codebook,2);
+odim = 2;
+[P,V] = pcaproj(MAP.codebook,odim);
+ccode = som_colorcode(MAP, 'rgb1');
+
+figure; 
+som_show(MAP,'umat','all','comp',1:dim,'norm','d');  
+figure;
+subplot(1,2,1) 
+som_grid(MAP,'Coord',P,'MarkerColor',ccode,'Markersize',5, ...
+	 'Linewidth',1,'Linecolor','k');
+xlabel('PC1'), ylabel('PC2')
+title('PCA-projection (on the left), color coding (on the right)')
+axis tight, axis equal
+subplot(1,2,2) 
+som_cplane(MAP.topol.lattice,MAP.topol.msize,ccode);
+
+%msgbox('Save map in workspace. Load it from there.');
+%som_gui('save_workspace');  
+%som_comp_vis;
+
+%%%%%%%%%%%%%%%%
+
+
+function [] = clear_all()
+
+Handle = findobj(gcbf,'Enable','off');
+set(Handle,'Enable','on');
+Handle = findobj(gcbf,'Tag','Radiobutton1');
+set(Handle,'Value',0);
+Handle = findobj(gcbf,'Tag','StaticText10');
+set(Handle,'String','Status <no action>');
+Handle = findobj(gcbf,'Tag','StaticText3');
+set(Handle,'String','Map: <empty>');
+Handle = findobj(gcbf,'Tag','StaticText4');
+set(Handle,'String','Data: <empty>');
+Handle = findobj(gcbf,'Tag','StaticText20');
+set(Handle,'String','lattice:');
+Handle = findobj(gcbf,'Tag','StaticText11');
+set(Handle,'String','neigh:');
+Handle = findobj(gcbf,'Tag','StaticText16');
+set(Handle,'String','training length:');
+Handle = findobj(gcbf,'Tag','StaticText23');
+set(Handle,'String','training length:');
+Handle = findobj(gcbf,'Tag','StaticText17');
+set(Handle,'String','radius initial:');
+Handle = findobj(gcbf,'Tag','StaticText24');
+set(Handle,'String','radius initial:');
+Handle = findobj(gcbf,'Tag','StaticText5');
+set(Handle,'String','map size:');
+Handle = findobj(gcbf,'Tag','StaticText21');
+set(Handle,'String','shape:');
+Handle = findobj(gcbf,'Tag','StaticText12');
+set(Handle,'String','order:');
+set(Handle,'Visible','off');
+Handle = findobj(gcbf,'Tag','StaticText14');
+set(Handle,'String','length type:');
+set(Handle,'Visible','off');
+Handle = findobj(gcbf,'Tag','StaticText22');
+set(Handle,'String','radius final:');
+Handle = findobj(gcbf,'Tag','StaticText25');
+set(Handle,'String','radius final:');
+Handle = findobj(gcbf,'Tag','StaticText19');
+set(Handle,'String','tracking:');
+Handle = findobj(gcbf,'Tag','StaticText7');
+set(Handle,'String','Initialization');
+Handle = findobj(gcbf,'Tag','StaticText28');
+set(Handle,'String','alpha type:');
+set(Handle,'Visible','off');
+Handle = findobj(gcbf,'Tag','StaticText26');
+set(Handle,'String','alpha initial:');
+Handle = findobj(gcbf,'Tag','StaticText27');
+set(Handle,'String','alpha initial:');
+Handle = findobj(gcbf,'Tag','StaticText6');
+set(Handle,'String','type:');
+Handle = findobj(gcbf,'Tag','StaticText9');
+set(Handle,'String','training type:');
+Handle = findobj(gcbf,'Tag','Pushbutton9');
+set(Handle,'Enable','off');
+Handle = findobj(gcbf,'Tag','Pushbutton6');
+set(Handle,'Enable','off');
+Handle = findobj(gcbf,'Tag','Pushbutton4');
+set(Handle,'Enable','off');
+Handle = findobj(gcbf,'Tag','Pushbutton5');
+set(Handle,'Enable','off');
+Handle = findobj(gcbf,'Tag','Pushbutton2');
+set(Handle,'Enable','on');
+Handle = findobj(gcbf,'Tag','Radiobutton1');
+set(Handle,'Enable','off');
+Handle = findobj(gcbf,'Tag','Load/SaveSave mapuimenu1');
+set(Handle,'Enable','off');
+Handle = findobj(gcbf,'Tag','&Load/SaveSave mapSave in workspaceuimenu1');
+set(Handle,'Enable','off');
+Handle = findobj(gcbf,'Tag','Subuimenu2');
+set(Handle,'Enable','off');
+Handle = findobj(gcbf,'Tag','&ToolsSubuimenu1');
+set(Handle,'Enable','off');
+Handle = findobj(gcbf,'Tag','&Help/InfoHelp windowuimenu1');
+set(Handle,'Enable','off');
+Handle = findobj(gcbf,'Tag','&Help/InfoData infouimenu1');
+set(Handle,'Enable','off');
+Handle = findobj(gcbf,'Tag','&Init&Trainuimenu1');
+set(Handle,'Enable','off');
+Handle = findobj(gcbf,'Tag','&Init&TrainInitialize1');
+set(Handle,'Enable','off');
+Handle = findobj(gcbf,'Tag','&Init&TrainChange initialization valuesuimenu1');
+set(Handle,'Enable','off');
+Handle = findobj(gcbf,'Tag','&Init&TrainTrain1');
+set(Handle,'Enable','off');
+Handle = findobj(gcbf,'Tag','Load/SaveSubuimenu1');
+set(Handle,'Enable','off');
+Handle = findobj(gcbf,'String','alpha initial:');
+set(Handle,'Visible','off');
+clear;
+clear global;
+
+
+function [] = close_fig()
+global MAPSAVED NEWMAP;
+if isempty(MAPSAVED)
+  if not(isempty(NEWMAP))
+     quest = 'Save map before closing?';
+     ButtonName = questdlg(quest);
+     switch ButtonName
+        case 'Yes'
+	  som_gui('savemap');		
+	  som_gui('clear');
+	  clear global;
+	  close(gcbf);
+	 case 'No'
+	   som_gui('clear');	
+	   clear global;
+	   close(gcbf);
+	 case 'Cancel'
+      end
+  else
+     som_gui('clear');
+     clear global;
+     close(gcbf);	
+  end	
+else
+  som_gui('clear');
+  clear global;
+  close(gcbf);
+end
+
+
+function [] = preprocess_gui()
+global DATA; 
+if isempty(DATA)
+   helpmsg = {'Load data before tryinig to preprocess!'};
+   helpdlg(helpmsg,'Empty Data!');
+   return;
+end
+preprocess(DATA);
+waitfor(gcf);
+prompt = {'Name of preprocessed data in workspace?'};
+tittle = 'Reload preprocessed data!';
+lineNo = 1;
+def = {DATA.name};
+answer = inputdlg(prompt,tittle,lineNo,def);
+if isempty(answer)
+  return;
+end
+data = answer{1};
+new_name = retname;
+assignin('base',new_name,data);
+str = ['exist(' new_name ')'];	
+temp = evalin('base',str); 
+if temp ~= 1
+ temp = strcat('Variable ''',data,''' doesn''t exist in workspace.',...
+	'Old Data which is not preprocessed will be used.');
+  errordlg(temp,'Unknown variable!');
+  return;
+end
+evalin('base',['clear ' new_name ]) 
+Handle = findobj(gcf,'Tag','StaticText4');
+temp = strcat('Data: <',data,'>');
+set(Handle,'String',temp);
+Handle = findobj(gcf,'Tag','StaticText10');
+set(Handle,'String','Status <data preprocessed>');
+temp = evalin('base',data);
+DATA.data = temp;
+som_gui('def_initialization');
+
+
+function [val] = loop(cell_data, search_data)
+for val = 1: length(cell_data) 
+  if strcmp(cell_data{val},search_data)
+    break;
+  end
+end
+if not(strcmp(cell_data{val},search_data))
+  val = -1;
+end
+
+
+function [] = comp_names(names,fid)
+last = size(names);
+for index=1:last
+	fprintf(fid,'%% %s\n',names{index})
+end	
+
+function [] = fill_field(names,mask,fid)
+last = size(mask);
+for index=1:last
+	num = num2str(mask(index))
+	fprintf(fid,'%% %-15s %-2s\n',names{index},num)
+end	
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%				%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%     END OF OTHER FUNC		%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%				%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%	
+
+
+      
+
+function fig = main_gui()
+
+v = version;
+ver_53_or_newer = (str2num(v(1:3)) >= 5.3);
+
+h0 = figure('Units','normalized', ...
+	'Color',[0.85 0.85 0.85], ...
+	'Name','SOM Toolbox -- Initialization & Training', ...
+	'NumberTitle','off', ...
+	'PaperPosition',[18 180 576 432], ...
+	'PaperUnits','points', ...
+	'Position',[0.3296875 0.28125 0.3828125 0.576171875], ...
+	'Tag','Fig1'); 
+if ver_53_or_newer, set(h0,'ToolBar','none'); end
+
+h1 = uimenu('Parent',h0, ...
+	'Label','&Load/Save', ...
+	'Tag','uimenu1');
+h2 = uimenu('Parent',h1, ...
+	'Callback','som_gui(''load_data'');',...
+	'Label','Load Data', ...
+	'Tag','Subuimenu1');
+h2 = uimenu('Parent',h1, ...
+	'Label','Save map', ...
+	'Enable','off',...
+	'Tag','Load/SaveSubuimenu1');
+h3 = uimenu('Parent',h2, ...
+	'Callback','som_gui(''save_workspace'');', ...
+	'Enable','off', ...
+	'Label','Save in workspace', ...
+	'Tag','Load/SaveSave mapuimenu1');
+h3 = uimenu('Parent',h2, ...
+	'Callback','som_gui(''savemap'');', ...
+	'Enable','off', ...
+	'Label','Write cod-file', ...
+	'Tag','&Load/SaveSave mapSave in workspaceuimenu1');
+h1 = uimenu('Parent',h0, ...
+	'Label','&Utilities', ...
+	'Tag','uimenu2');
+h2 = uimenu('Parent',h1, ...
+	'Callback','som_gui(''preprocess'');', ...
+	'Enable','off', ...
+	'Label','Preprocess Data', ...
+	'Tag','Subuimenu2');
+h2 = uimenu('Parent',h1, ...
+	'Callback','som_gui(''visualize'');', ...
+	'Enable','off', ...
+	'Label','Visualize Map', ...
+	'Tag','&ToolsSubuimenu1');
+h2 = uimenu('Parent',h1, ...
+	'Callback','som_gui(''clear_all'');', ...
+	'Label','Clear all', ...
+	'Tag','&ToolsSubuimenu2');
+h2 = uimenu('Parent',h1, ...
+	'Callback','som_gui(''close'');', ...
+	'Label','Close Figure', ...
+	'Tag','&ToolsClear alluimenu1');
+h1 = uimenu('Parent',h0, ...
+	'Label','&Info', ...
+	'Tag','&ToolsClose Figureuimenu1');
+h2 = uimenu('Parent',h1, ...
+	'Callback','som_gui(''help'');', ...
+	'Label','WWW Help', ...
+	'Tag','Helpuimenu1');
+h2 = uimenu('Parent',h1, ...
+	'Callback','som_gui(''helpwin'');', ...
+	'Label','Help window', ...
+	'Tag','Helpuimenu2');
+h2 = uimenu('Parent',h1, ...
+	'Callback','som_gui(''helpwin2'');', ...
+	'Label','About GUI', ...
+	'Tag','&Help/InfoHelp windowuimenu2');
+h2 = uimenu('Parent',h1, ...
+	'Callback','som_gui(''data_info'');', ...
+	'Enable','off', ...
+	'Label','Data info', ...
+	'Tag','&Help/InfoHelp windowuimenu1');
+h2 = uimenu('Parent',h1, ...
+	'Callback','som_gui(''map_info'');', ...
+	'Enable','off', ...
+	'Label','Map info', ...
+	'Tag','&Help/InfoData infouimenu1');
+h1 = uimenu('Parent',h0, ...
+	'Label','&Init/Train', ...
+	'Tag','&Init/Train1');
+h2 = uimenu('Parent',h1, ...
+	'Callback','som_gui(''change_initialization'');', ...
+	'Enable','off', ...
+	'Label','Change initialization values', ...
+	'Tag','&Init&Trainuimenu1');
+h2 = uimenu('Parent',h1, ...
+	'Callback','som_gui(''init'');', ...
+	'Enable','off', ...
+	'Label','Initialize', ...
+	'Tag','&Init&TrainInitialize1');
+h2 = uimenu('Parent',h1, ...
+	'Callback','som_gui(''change_def'');', ...
+	'Enable','off', ...
+	'Label','Change training values', ...
+	'Tag','&Init&TrainChange initialization valuesuimenu1');
+h2 = uimenu('Parent',h1, ...
+	'Callback','som_gui(''def_train'');', ...
+	'Enable','off', ...
+	'Label','Train', ...
+	'Tag','&Init&TrainTrain1');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'ListboxTop',0, ...
+	'Position',[0.04081632653061224 0.01129943502824859 0.7619047619047619 0.9717514124293786], ...
+	'Style','frame', ...
+	'Tag','Frame1');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'ListboxTop',0, ...
+	'Position',[0.06802721088435373 0.7909604519774012 0.7074829931972788 0.1807909604519774], ...
+	'Style','frame', ...
+	'Tag','Frame2');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.9 0.9 0.9], ...
+	'HorizontalAlignment','left', ...
+	'ListboxTop',0, ...
+	'Position',[0.09523809523809523 0.8527570621468927 0.6530612244897959 0.03389830508474576], ...
+        'FontUnits','normalized',...
+	'String','Map <empty>', ...
+	'Style','text', ...
+	'Tag','StaticText3');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.9 0.9 0.9], ...
+	'HorizontalAlignment','left', ...
+	'ListboxTop',0, ...
+	'Position',[0.09523809523809523 0.8075593220338984 0.6530612244897959 0.03389830508474576], ...
+	'String','Data <empty>', ...
+        'FontUnits','normalized',...	       
+	'Style','text', ...
+	'Tag','StaticText4');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'ListboxTop',0, ...
+	'Position',[0.06802721088435373 0.5988700564971752 0.7074829931972788 0.1694915254237288], ...
+	'Style','frame', ...
+	'Tag','Frame3');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'ListboxTop',0, ...
+	'Position',[0.1041 0.7356 0.6286 0.0271], ...
+	'String','Initialization', ...
+        'FontUnits','normalized',...	       
+	'Style','text', ...
+	'FontWeight','bold', ...
+	'Tag','StaticText7');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.9 0.9 0.9], ...
+	'HorizontalAlignment','left', ...
+	'ListboxTop',0, ...
+	'Position',[0.4489795918367346 0.7005649717514124 0.2993197278911565 0.03389830508474576], ...
+	'String','map size:', ...
+        'FontUnits','normalized',...	       
+	'Style','text', ...
+	'Tag','StaticText5');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.9 0.9 0.9], ...
+	'HorizontalAlignment','left', ...
+	'ListboxTop',0, ...
+	'Position',[0.09523809523809523 0.6553672316384182 0.2993197278911565 0.03389830508474576], ...
+	'String','lattice:', ...
+        'FontUnits','normalized',...	       
+	'Style','text', ...
+	'Tag','StaticText20');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.9 0.9 0.9], ...
+	'HorizontalAlignment','left', ...
+	'ListboxTop',0, ...
+	'Position',[0.09523809523809523 0.7000000000000001 0.2993197278911565 0.03389830508474576], ...
+	'String','type:', ...
+   'FontUnits','normalized',...	       
+	'Style','text', ...
+	'Tag','StaticText6');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.9 0.9 0.9], ...
+	'HorizontalAlignment','left', ...
+	'ListboxTop',0, ...
+	'Position',[0.4489795918367346 0.6553672316384182 0.2993197278911565 0.03389830508474576], ...
+	'String','shape:', ...
+        'FontUnits','normalized',...	       
+	'Style','text', ...
+	'Tag','StaticText21');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ...
+	'ListboxTop',0, ...
+	'Position',[0.3129251700680272 0.6101694915254238 0.217687074829932 0.03389830508474576], ...
+	'String','Change values', ...
+        'FontUnits','normalized',...	       
+	'Callback','som_gui(''change_initialization'');', ...
+	'Enable','off', ...
+	'Tag','Pushbutton9');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'ListboxTop',0, ...
+	'Position',[0.06802721088435373 0.02259887005649718 0.7074829931972788 0.5536723163841808], ...
+	'Style','frame', ...
+	'Tag','Frame4');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'ListboxTop',0, ...
+	'Position',[0.1041 0.5316 0.6429 0.0339], ...
+	'String','Training', ...
+   'FontUnits','normalized',...	       
+	'Style','text', ...
+	'FontWeight','bold', ...
+	'Tag','StaticText8');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.9 0.9 0.9], ...
+	'ListboxTop',0, ...
+	'Position',[0.09523809523809523 0.4971751412429379 0.6530612244897959 0.03389830508474576], ...
+	'String','training type', ...
+        'FontUnits','normalized',...	       
+	'Style','text', ...
+	'Tag','StaticText9');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.9 0.9 0.9], ...
+	'HorizontalAlignment','left', ...
+	'ListboxTop',0, ...
+	'Position',[0.4489795918367346 0.4519774011299435 0.2993197278911565 0.03389830508474576], ...
+	'String','tracking:', ...
+        'FontUnits','normalized',...	       
+	'Style','text', ...
+	'Tag','StaticText19');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.9 0.9 0.9], ...
+	'HorizontalAlignment','left', ...
+	'ListboxTop',0, ...
+	'Position',[0.09523809523809523 0.4519774011299435 0.2993197278911565 0.03389830508474576], ...
+	'String','neigh:', ...
+        'FontUnits','normalized',...	       
+	'Style','text', ...
+	'Tag','StaticText11');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'HorizontalAlignment','left', ...	       
+	'BackgroundColor',[0.9 0.9 0.9], ...
+	'ListboxTop',0, ...
+	'Position',[0.09523809523809523 0.36519774011299435 0.2993197278911565 0.03389830508474576], ...	       
+	'String','alpha type:', ...
+        'FontUnits','normalized',...	       
+	'Style','text', ...
+	'Visible','off',...
+	'Tag','StaticText28');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.9 0.9 0.9], ...
+	'ListboxTop',0, ...
+	'HorizontalAlignment','left', ...	       
+	'Position',[0.09523809523809523 0.4067796610169492 0.2993197278911565 0.03389830508474576], ...	       
+	'String','length type:', ...
+        'FontUnits','normalized',...	       
+	'Style','text', ...
+	'Visible','off',...
+	'Tag','StaticText14');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.9 0.9 0.9], ...
+	'HorizontalAlignment','left', ...
+	'ListboxTop',0, ...
+	'Position',[0.4489795918367346 0.4067796610169492 0.2993197278911565 0.03389830508474576], ...
+	'String','order:', ...
+        'FontUnits','normalized',...	       
+	'Style','text', ...
+	'Visible','off',...
+	'Tag','StaticText12');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'ListboxTop',0, ...
+	'Position',[0.09523809523809523 0.07909604519774012 0.2993197278911565 0.2711864406779661], ...
+	'Style','frame', ...
+	'Tag','Frame5');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'ListboxTop',0, ...
+	'Position',[0.4353741496598639 0.07909604519774012 0.2993197278911565 0.2711864406779661], ...
+	'Style','frame', ...
+	'Tag','Frame6');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'ListboxTop',0, ...
+	'Position',[0.108843537414966 0.3050847457627119 0.2721088435374149 0.03389830508474576], ...
+	'String','Rough', ...
+        'FontUnits','normalized',...	       
+	'Style','text', ...
+	'Tag','StaticText13');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'ListboxTop',0, ...
+	'Position',[0.4489795918367346 0.3050847457627119 0.2721088435374149 0.03389830508474576], ...
+	'String','Finetune', ...
+        'FontUnits','normalized',...	       
+	'Style','text', ...
+	'Tag','StaticText15');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.9 0.9 0.9], ...
+	'HorizontalAlignment','left', ...
+	'ListboxTop',0, ...
+	'Position',[0.108843537414966 0.1807909604519774 0.2721088435374149 0.03389830508474576], ...
+	'String','training length:', ...
+        'FontUnits','normalized',...	       
+	'Style','text', ...
+	'Tag','StaticText16');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.9 0.9 0.9], ...
+	'HorizontalAlignment','left', ...
+	'ListboxTop',0, ...
+	'Position',[0.108843537414966 0.2694915254237288 0.2714285714285714 0.03389830508474576], ...
+	'String','radius initial:', ...
+        'FontUnits','normalized',...	       
+	'Style','text', ...
+	'Tag','StaticText17');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.9 0.9 0.9], ...
+	'HorizontalAlignment','left', ...
+	'ListboxTop',0, ...
+	'Position',[0.1088 0.2260 0.2721 0.0339], ...
+	'String','radius final:', ...
+        'FontUnits','normalized',...	       
+	'Style','text', ...
+	'Tag','StaticText22');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.9 0.9 0.9], ...
+	'ListboxTop',0, ...
+	'Position',[0.108843537414966 0.13694915254237288 0.2714285714285714 0.03389830508474576], ...	       
+	'String','alpha initial:', ...
+        'FontUnits','normalized',...	       
+	'HorizontalAlignment','left', ...	       
+	'Style','text', ...
+	'Visible','off',...
+	'Tag','StaticText26');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.9 0.9 0.9], ...
+	'HorizontalAlignment','left', ...
+	'ListboxTop',0, ...
+	'Position',[0.4489795918367346 0.1807909604519774 0.2721088435374149 0.03389830508474576], ...
+	'String','training length:', ...
+        'FontUnits','normalized',...	       
+	'Style','text', ...
+	'Tag','StaticText23');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.9 0.9 0.9], ...
+	'HorizontalAlignment','left', ...
+	'ListboxTop',0, ...
+	'Position',[0.4489795918367346 0.2711864406779661 0.2721088435374149 0.03389830508474576], ...
+	'String','radius initial:', ...
+        'FontUnits','normalized',...	       
+	'Style','text', ...
+	'Tag','StaticText24');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.9 0.9 0.9], ...
+	'HorizontalAlignment','left', ...
+	'ListboxTop',0, ...
+	'Position',[0.4490 0.2260 0.2721 0.0339], ...
+	'String','radius final:', ...
+        'FontUnits','normalized',...	       
+	'Style','text', ...
+	'Tag','StaticText25');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.9 0.9 0.9], ...
+	'ListboxTop',0, ...
+	'Position',[0.4489795918367346  0.13694915254237288 0.2721088435374149 0.03389830508474576], ...	       
+	'String','alpha initial:', ...
+        'FontUnits','normalized',...	       
+	'HorizontalAlignment','left', ...	       
+	'Style','text', ...
+	'Visible','off',...
+	'Tag','StaticText27');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ...
+	'ListboxTop',0, ...
+	'Position',[0.3129251700680272 0.03389830508474576 0.217687074829932 0.03389830508474576], ...
+	'String','Change values', ...
+        'FontUnits','normalized',...	       
+	'Callback','som_gui(''change_def'');', ...
+	'Enable','off', ...
+	'Tag','Pushbutton6');
+if ver_53_or_newer, set(h1,'TooltipString','Change default values in training.'); end
+
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ...
+	'ListboxTop',0, ...
+	'Position',[0.8163265306122448 0.8152542372881356 0.163265306122449 0.05593220338983051], ...
+	'String','LOAD', ...
+        'FontUnits','normalized',...	       
+	'Callback','som_gui(''load_data'');', ...
+	'Tag','Pushbutton2');
+if ver_53_or_newer, set(h1,'TooltipString','Load data file.'); end
+
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ...
+	'ListboxTop',0, ...
+	'Position',[0.8163265306122448 0.6457627118644068 0.163265306122449 0.05593220338983051], ...
+	'String','INITIALIZE', ...
+        'FontUnits','normalized',...	       
+	'Callback','som_gui(''init'');', ...
+	'Enable','off', ...
+	'Tag','Pushbutton4');
+if ver_53_or_newer, set(h1,'TooltipString','Initialize map.'); end
+
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ...
+	'ListboxTop',0, ...
+	'Position',[0.8163265306122448 0.384180790960452 0.163265306122449 0.05649717514124294], ...
+	'String','TRAIN', ...
+        'FontUnits','normalized',...	       
+	'Callback','som_gui(''def_train'');', ...
+	'Enable','off', ...
+	'Tag','Pushbutton5');
+if ver_53_or_newer, set(h1,'TooltipString','Train map whit default values.'); end
+
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ...
+	'ListboxTop',0, ...
+	'Position',[0.8163265306122448 0.06779661016949153 0.163265306122449 0.05649717514124294], ...
+	'Callback','som_gui(''close'');', ...
+	'String','CLOSE', ...
+        'FontUnits','normalized',...	       
+	'Tag','Pushbutton8');
+if ver_53_or_newer, set(h1,'TooltipString','Close figure.'); end
+
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.9 0.9 0.9], ...
+	'HorizontalAlignment','left', ...
+	'ListboxTop',0, ...
+	'Position',[0.09387755102040815 0.897954802259887 0.6530612244897959 0.03389830508474576], ...
+	'String','Status <no action>', ...
+        'FontUnits','normalized',...	       
+	'Style','text', ...
+	'Tag','StaticText10');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'ListboxTop',0, ...
+	'Position',[0.108843537414966 0.0903954802259887 0.2721088435374149 0.03389830508474576], ...
+	'String','Only finetune', ...
+        'FontUnits','normalized',...	       
+	'Callback','som_gui(''only_finetune'');', ...
+	'Enable','off', ...
+	'Style','radiobutton', ...
+	'Tag','Radiobutton1');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'ListboxTop',0, ...
+	'Position',[0.09523809523809523 0.9418531073446328 0.6530612244897959 0.0259887005649718], ...
+   'String','Information', ...
+   'FontUnits','normalized',...
+	'FontWeight','bold', ...
+	'Style','text', ...
+	'Tag','StaticText18');
+if nargout > 0, fig = h0; end
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+function fig = loadgui3()
+
+temp = {'dat file';'mat file'};
+
+h0 = figure('Units','normalized', ...
+        'Color',[0.8 0.8 0.8], ...
+	'Name','Load data!', ...
+	'NumberTitle','off', ...
+	'PaperType','a4letter', ...
+	'Position',[0.3828125 0.5 0.3421875 0.189453125], ...
+	'Tag','Fig1');
+
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'ListboxTop',0, ...
+	'Position',[0.02853881278538813 0.06443298969072164 0.7705479452054794 0.8698453608247422], ...
+	'Style','frame', ...
+	'Tag','Frame1');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'ListboxTop',0, ...
+	'Position',[0.04337899543378995 0.547680412371134 0.7420091324200913 0.354381443298969], ...
+	'Style','frame', ...
+	'Tag','Frame2');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'ListboxTop',0, ...
+	'Position',[0.04280821917808219 0.09664948453608246 0.7420091324200913 0.4188144329896907], ...
+	'Style','frame', ...
+	'Tag','Frame3');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.701960784313725 0.701960784313725 0.701960784313725], ...
+	'FontWeight','bold', ...
+	'HorizontalAlignment','left', ...
+	'ListboxTop',0, ...
+	'Position',[0.05717762557077625 0.7881958762886597 0.2853881278538812 0.09664948453608246], ...
+	'String','From', ...
+        'FontUnits','normalized',...	       
+	'Style','text', ...
+	'Tag','StaticText1');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'Callback','som_gui(''workspace'');', ...
+	'ListboxTop',0, ...
+	'Position',[0.05107762557077625 0.7087628865979381 0.1997716894977169 0.09664948453608246], ...	       	       
+	'String','Ws', ...
+   'FontUnits','normalized',...	       
+	'Style','radiobutton', ...
+	'Tag','Radiobutton2');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'Callback','som_gui(''file'');', ...
+	'ListboxTop',0, ...
+	'Position',[0.05107762557077625 0.5773195876288659 0.2009132420091324 0.09793814432989689], ...
+	'String','File', ...
+        'FontUnits','normalized',...	       
+	'Style','radiobutton', ...
+	'Tag','Radiobutton1');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[1 1 1], ...
+	'Callback','Handle = findobj(gcbf,''Tag'',''EditText2'');set(Handle,''String'','''');',...
+        'FontUnits','normalized',...
+	'HorizontalAlignment','left', ...
+	'ListboxTop',0, ...
+	'Position',[0.2893881278538812 0.7087628865979381 0.3139269406392694 0.09664948453608246], ...	       
+	'Style','edit', ...
+	'Tag','EditText1');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[1 1 1], ...
+	'Callback','Handle = findobj(gcbf,''Tag'',''EditText1'');set(Handle,''String'','''');',...
+        'FontUnits','normalized',...	       
+	'HorizontalAlignment','left', ...
+	'ListboxTop',0, ...
+	'Position',[0.2893881278538812 0.5798969072164948 0.3139269406392694 0.09664948453608246], ...	       
+	'Style','edit', ...
+	'Tag','EditText2');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.701960784313725 0.701960784313725 0.701960784313725], ...
+	'Callback','som_gui(''browse'');', ...
+	'ListboxTop',0, ...
+	'Position',[0.6279 0.5799 0.1427 0.2255], ...
+	'String','Browse', ...
+        'FontUnits','normalized',...	       
+	'Tag','Pushbutton1');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.701960784313725 0.701960784313725 0.701960784313725], ...
+	'Callback','som_gui(''load_ok'');', ...
+	'ListboxTop',0, ...
+	'Position',[0.8276 0.5577 0.1427 0.2255], ...
+	'String','Load', ...
+        'FontUnits','normalized',...	       
+	'Tag','Pushbutton2');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.701960784313725 0.701960784313725 0.701960784313725], ...
+	'Callback','close;',...
+	'ListboxTop',0, ...
+	'Position',[0.8276 0.2577 0.1427 0.2255], ...
+	'String','Cancel', ...
+	'FontUnits','normalized',...       
+	'Tag','Pushbutton3');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.701960784313725 0.701960784313725 0.701960784313725], ...
+	'Callback','som_gui(''file_select'');', ...
+	'ListboxTop',0, ...
+	'Max',2, ...
+	'Min',1, ...
+	'String',temp,...
+   'FontUnits','normalized',... 
+	'Position',[0.3995433789954338 0.2977319587628866 0.1997716894977169 0.08664948453608246], ...	       
+	'Style','popupmenu', ...
+	'Tag','PopupMenu1', ...
+	'Value',1);
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.701960784313725 0.701960784313725 0.701960784313725], ...
+	'FontWeight','bold', ...
+	'HorizontalAlignment','left', ...
+	'ListboxTop',0, ...
+	'Position',[0.05707762557077625 0.3865979381443299 0.7134703196347032 0.09664948453608246], ...
+	'String','Parameters for file', ...
+        'FontUnits','normalized',...
+	'Style','text', ...
+	'Tag','StaticText2');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'HorizontalAlignment','left', ...
+	'ListboxTop',0, ...
+	'Position',[0.05707762557077625 0.2777319587628866 0.2568493150684931 0.09664948453608246], ...
+	'String','File type ', ...
+        'FontUnits','normalized',...	       
+	'Style','text', ...
+	'Tag','StaticText3');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'ListboxTop',0, ...
+	'Position',[0.05707762557077625 0.1288659793814433 0.2996575342465753 0.09664948453608246], ...
+	'String','Missing value', ...
+	'Style','checkbox', ...
+        'FontUnits','normalized',...	       
+	'Tag','Checkbox1');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[1 1 1], ...
+	'Callback','som_gui(''missing'');',...
+	'ListboxTop',0, ...
+	'Position',[0.5136986301369862 0.1258659793814433 0.08561643835616438 0.10664948453608246], ...	       
+	'String','x', ...
+        'FontUnits','normalized',...	       
+	'Style','edit', ...
+	'Tag','EditText3');
+if nargout > 0, fig = h0; end
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+
+function fig = works()
+
+v = version;
+ver_53_or_newer = (str2num(v(1:3)) >= 5.3);
+
+h0 = figure('Units','normalized', ...
+	'Color',[0.8 0.8 0.8], ...
+	'Name','Load from workspace!', ...
+	'NumberTitle','off', ...
+	'PaperPosition',[18 180 576 432], ...
+	'PaperType','a4letter', ...
+	'PaperUnits','points', ...
+	'Position',[0.5390625 0.2490234375 0.203125 0.251953125], ...
+	'Tag','Fig1');
+if ver_53_or_newer, set(h0,'ToolBar','none'); end
+
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'ListboxTop',0, ...
+	'Position',[0.05384615384615385 0.1472868217054263 0.9076923076923078 0.8255813953488372], ...
+	'Style','frame', ...
+	'Tag','Frame1');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.701960784313725 0.701960784313725 0.701960784313725], ...
+	'Callback','som_gui(''works_ok'');', ...
+	'ListboxTop',0, ...
+	'Position',[0.1077 0.0194 0.2885 0.1202], ...
+	'String','OK', ...
+        'FontUnits','normalized',...	       
+	'Tag','Pushbutton1');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.701960784313725 0.701960784313725 0.701960784313725], ...
+	'Callback','close;', ...
+	'ListboxTop',0, ...
+	'Position',[0.6115 0.0155 0.2885 0.1202], ...
+	'String','Cancel', ...
+        'FontUnits','normalized',...	       
+	'Tag','Pushbutton2');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[1 1 1], ...
+	'Position',[0.1192 0.1977 0.7692 0.6395], ...
+	'String',' ', ...
+        'FontUnits','normalized',...	       
+	'Style','listbox', ...
+	'Tag','Listbox1', ...
+	'Value',1);
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'FontWeight','bold', ...
+	'ListboxTop',0, ...
+	'Position',[0.2115384615384616 0.8720930232558139 0.576923076923077 0.06976744186046512], ...
+	'String','Your options', ...
+        'FontUnits','normalized',...	       
+	'Style','text', ...
+	'Tag','StaticText1');
+if nargout > 0, fig = h0; end
+
+
+
+
+
+
+function fig = initialization2()
+
+
+temp1 = {'random';'linear'};
+temp2 = {'hexa';'rect'};
+temp3 = {'sheet';'cyl';'toroid'};
+
+
+
+% position bug in following corrected 1.12.04 KimmoR
+h0 = figure('Units','normalized', ...
+        'Color',[0.8 0.8 0.8], ...
+	'Name','Change initialization parameters!', ...
+	'NumberTitle','off', ...
+	'PaperType','a4letter', ...
+	'Position',[0.48828125 0.4267578125 0.3515625 0.146484375], ...
+	'Tag','Fig1');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'ListboxTop',0, ...
+	'Position',[0.02777777777777778 0.08333333333333333 0.8055555555555556 0.8333333333333334], ...	       
+	'Style','frame', ...
+	'Tag','Frame1');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.701960784313725 0.701960784313725 0.701960784313725], ...
+	'Callback','som_gui(''change_initialization_ok'');', ...
+	'ListboxTop',0, ...
+	'Position',[0.8472222222222222 0.55 0.125 0.25], ...
+        'FontUnits','normalized',...	       
+	'String','OK', ...
+	'Tag','Pushbutton1');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.701960784313725 0.701960784313725 0.701960784313725], ...
+	'Callback','som_gui(''change_initialization_cancel'');', ...
+	'ListboxTop',0, ...
+	'Position',[0.8472222222222222 0.25 0.125 0.25], ...	       
+        'FontUnits','normalized',...
+	'String','Cancel', ...
+	'Tag','Pushbutton2');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.701960784313725 0.701960784313725 0.701960784313725], ...
+	'FontWeight','bold', ...
+	'HorizontalAlignment','left', ...
+	'ListboxTop',0, ...
+	'Position',[0.08333333333333334 0.6666666666666666 0.7066666666666667 0.1933333333333333], ...
+	'String','Initialization parameters:', ...
+        'FontUnits','normalized',...	       
+	'Style','text', ...
+	'Tag','StaticText1');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'HorizontalAlignment','left', ...
+	'ListboxTop',0, ...
+	'Position',[0.0556 0.200 0.1667 0.1250],...       
+	'String','type:', ...
+        'FontUnits','normalized',...	       
+	'Style','text', ...
+	'Tag','StaticText2');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.701960784313725 0.701960784313725 0.701960784313725], ...
+	'ListboxTop',0, ...
+	'Max',2, ...
+	'Min',1, ...
+	'Position',[0.2500 0.200 0.1667 0.1250], ...
+	'String',temp1, ...
+        'FontUnits','normalized',...	       
+	'Style','popupmenu', ...
+	'Tag','PopupMenu1', ...
+	'Value',1);
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.701960784313725 0.701960784313725 0.701960784313725], ...
+	'HorizontalAlignment','left', ...
+	'ListboxTop',0, ...
+	'Position',[0.05555555555555556 0.6 0.1666666666666667 0.125], ...
+	'String','map size:', ...
+        'FontUnits','normalized',...	       
+	'Style','text', ...
+	'Tag','StaticText2');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[1 1 1], ...
+	'Callback','som_gui(''map_size'');', ...
+	'HorizontalAlignment','left', ...
+	'ListboxTop',0, ...
+	'Position',[0.25 0.6 0.1666666666666667 0.125], ...
+        'FontUnits','normalized',...	       
+	'Style','edit', ...
+	'Tag','EditText1');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.701960784313725 0.701960784313725 0.701960784313725], ...
+	'HorizontalAlignment','left', ...
+	'ListboxTop',0, ...
+	'Position',[0.05555555555555556 0.4033333333333333 0.1666666666666667 0.125], ...
+	'String','lattice:', ...
+        'FontUnits','normalized',...	       
+	'Style','text', ...
+	'Tag','StaticText3');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'ListboxTop',0, ...
+	'Max',2, ...
+	'Min',1, ...
+	'Position',[0.25 0.4333333333333333 0.1666666666666667 0.125], ...
+	'String',temp2, ...
+        'FontUnits','normalized',...	       
+	'Style','popupmenu', ...
+	'Tag','PopupMenu2', ...
+	'Value',2);
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.701960784313725 0.701960784313725 0.701960784313725], ...
+	'HorizontalAlignment','left', ...
+	'ListboxTop',0, ...
+	'Position',[0.4444444444444445 0.4033333333333333 0.1666666666666667 0.125], ...	       
+	'String','shape:', ...
+        'FontUnits','normalized',...	       
+	'Style','text', ...
+	'Tag','StaticText4');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'ListboxTop',0, ...
+	'Max',3, ...
+	'Min',1, ...
+	'Position',[0.638888888888889 0.4333333333333333 0.1666666666666667 0.125], ...	       
+	'String',temp3, ...
+        'FontUnits','normalized',...	       
+	'Style','popupmenu', ...
+	'Tag','PopupMenu3', ...
+	'Value',2);
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'HorizontalAlignment','left', ...
+	'ListboxTop',0, ...
+	'Position',[0.4444444444444445 0.6 0.1666666666666667 0.125], ...
+        'FontUnits','normalized',...
+	'String','munits:', ...
+	'Style','text', ...
+	'Tag','StaticText5');	       
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[1 1 1], ...
+	'Callback','som_gui(''munits'');', ...
+	'ListboxTop',0, ...
+	'Position',[0.638888888888889 0.6 0.1666666666666667 0.125], ...
+	'Style','edit', ...
+        'FontUnits','normalized',...	       
+	'Tag','EditText2');
+if nargout > 0, fig = h0; end
+
+
+
+
+
+
+
+function fig = new_para2_2()
+
+temp1 = {'0';'1';'2';'3'};
+temp2 = {'gaussian';'cutgauss';'ep';'bubble'};
+temp3 = {'epochs';'samples'};
+temp4 = {'random';'ordered'};
+temp5 = {'inv';'linear';'power'};
+
+v = version;
+ver_53_or_newer = (str2num(v(1:3)) >= 5.3);
+
+h0 = figure('Units','normalized', ...
+	'Color',[0.8 0.8 0.8], ...
+	'Name','Change training parameters!', ...
+	'NumberTitle','off', ...
+	'PaperPosition',[18 180 576 432], ...
+	'PaperType','a4letter', ...
+	'PaperUnits','points', ...
+	'Position',[0.59140625 0.4560546875 0.3046875 0.4619140625], ...
+	'Tag','Fig3');
+if ver_53_or_newer, set(h0,'ToolBar','none'); end
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'ListboxTop',0, ...
+	'Position',[0.02051282051282051 0.08456659619450317 0.9641025641025641 0.8921775898520086], ...
+	'Style','frame', ...
+	'Tag','Frame1');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'ListboxTop',0, ...
+	'Position',[0.5308 0.1374 0.4000 0.3742], ...
+	'Style','frame', ...
+	'Tag','Frame3');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'ListboxTop',0, ...
+	'Position',[0.08012820512820512 0.1416490486257928 0.4102564102564102 0.3699788583509514], ...
+	'Style','frame', ...
+	'Tag','Frame2');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.701960784313725 0.701960784313725 0.701960784313725], ...
+	'Callback','close(gcbf);', ...
+	'ListboxTop',0, ...
+	'Position',[0.6410 0.0036 0.2897 0.0740], ...
+        'FontUnits','normalized',...	       
+	'String','Cancel', ...
+	'Tag','Pushbutton2');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.701960784313725 0.701960784313725 0.701960784313725], ...
+	'Callback','som_gui(''set_new_parameters'');', ...
+	'ListboxTop',0, ...
+	'Position',[0.1026 0.0036 0.2897 0.0740], ...
+	'String','Set parameters', ...
+        'FontUnits','normalized',...	       
+	'Tag','Pushbutton1');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.701960784313725 0.701960784313725 0.701960784313725], ...
+	'ListboxTop',0, ...
+	'Max',4, ...
+	'Min',1, ...
+	'Position',[0.7051282051282051 0.6723044397463003 0.1923076923076923 0.040169133192389], ...
+	'String',temp1, ...
+        'FontUnits','normalized',...	       
+	'Style','popupmenu', ...
+	'Tag','PopupMenu2', ...
+	'Value',1);
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.701960784313725 0.701960784313725 0.701960784313725], ...
+	'ListboxTop',0, ...
+	'Max',4, ...
+	'Min',1, ...
+	'Position',[0.2948717948717949 0.6670190274841438 0.1923076923076923 0.03964059196617336], ...
+	'String',temp2, ...
+	'FontUnits','normalized',...       
+	'Style','popupmenu', ...
+	'Tag','PopupMenu1', ...
+	'Value',1);
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'Callback','som_gui(''batch_cancel'');', ...
+	'HorizontalAlignment','left', ...
+	'ListboxTop',0, ...
+	'Position',[0.5076923076923077 0.6575052854122622 0.1923076923076923 0.05285412262156448], ...
+	'String','tracking', ...
+        'FontUnits','normalized',...	       
+	'Style','text', ...
+	'Tag','StaticText6');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.701960784313725 0.701960784313725 0.701960784313725], ...
+	'Callback','som_gui(''batch_cancel'');', ...
+	'HorizontalAlignment','left', ...
+	'ListboxTop',0, ...
+	'Position',[0.09615384615384615 0.6553911205073996 0.1923076923076923 0.05285412262156448], ...
+	'String','neigh.', ...
+        'FontUnits','normalized',...	       
+	'Style','text', ...
+	'Tag','StaticText5');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'HorizontalAlignment','left', ...
+	'ListboxTop',0, ...
+	'Position',[0.09615384615384615 0.7526427061310783 0.09487179487179487 0.04228329809725159], ...
+	'String','mask:', ...
+	'FontUnits','normalized',... 
+	'Style','text', ...
+	'Tag','StaticText2');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[1 1 1], ...
+	'Position',[0.2948717948717949 0.7399577167019028 0.6025641025641025 0.07399577167019028], ...
+	'String',' ', ...
+	'FontUnits','normalized',...  
+	'Style','listbox', ...
+	'Tag','Listbox2', ...
+	'Value',1);
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.701960784313725 0.701960784313725 0.701960784313725], ...
+	'HorizontalAlignment','left', ...
+	'ListboxTop',0, ...
+	'Position',[0.0962 0.8060 0.1154 0.0529], ...
+        'FontUnits','normalized',...
+	'String','Set', ...
+	'Style','text', ...
+	'Tag','StaticText3');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[1 1 1], ...
+	'Callback','som_gui(''set_batch_mask'');', ...
+	'Position',[0.2948717948717949 0.8165961945031712 0.3205128205128205 0.05285412262156448], ...
+	'String',' ', ...
+        'FontUnits','normalized',...	       
+	'Style','listbox', ...
+	'Tag','Listbox1', ...
+	'Value',1);
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.701960784313725 0.701960784313725 0.701960784313725], ...
+	'HorizontalAlignment','left', ...
+	'ListboxTop',0, ...
+	'Position',[0.6250 0.8060 0.1603 0.0529], ...
+	'String','to value', ...
+        'FontUnits','normalized',...	       
+	'Style','text', ...
+	'Tag','StaticText4');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[1 1 1], ...
+	'Callback','som_gui(''set_batch_mask'');', ...
+	'ListboxTop',0, ...
+	'Position',[0.7923076923076923 0.8181818181818182 0.09487179487179487 0.05285412262156448], ...
+	'Style','edit', ...
+        'FontUnits','normalized',...	       
+	'Tag','EditText2');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[1 1 1], ...
+	'Callback','som_gui(''check_fine_trainlen'');', ...
+	'ListboxTop',0, ...
+	'Position',[0.7923 0.2352 0.0974 0.0402], ...
+        'FontUnits','normalized',...	       
+	'Style','edit', ...
+	'Tag','EditText11');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[1 1 1], ...
+	'Callback','som_gui(''check_fine_alphaini'');', ...
+	'Enable','off', ...
+	'ListboxTop',0, ...
+	'Position',[0.7923076923076923 0.1664904862579281 0.09743589743589742 0.03805496828752643], ...
+	'Style','edit', ...
+        'FontUnits','normalized',...	       
+	'Tag','EditText10', ...
+	'Visible','off');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[1 1 1], ...
+	'Callback','som_gui(''check_fine_radfin'');', ...
+	'ListboxTop',0, ...
+	'Position',[0.7923076923076923 0.3002114164904862 0.09743589743589742 0.040169133192389], ...
+	'Style','edit', ...
+	'FontUnits','normalized',...       
+	'Tag','EditText9');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[1 1 1], ...
+	'Callback','som_gui(''check_fine_radini'');', ...
+	'ListboxTop',0, ...
+	'Position',[0.7923076923076923 0.3657505285412262 0.09743589743589742 0.040169133192389], ...
+	'Style','edit', ...
+	'FontUnits','normalized',...     
+	'Tag','EditText8');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.8 0.8 0.8], ...
+	'HorizontalAlignment','left', ...
+	'ListboxTop',0, ...
+	'Position',[0.5590 0.2326 0.2179 0.0402], ...
+	'String','training length', ...
+        'FontUnits','normalized',...	       
+	'Style','text', ...
+	'Tag','StaticText16');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.8 0.8 0.8], ...
+	'HorizontalAlignment','left', ...
+	'ListboxTop',0, ...
+	'Position',[0.5590 0.1665 0.2179 0.0381], ...
+	'String','alpha initial', ...
+	'FontUnits','normalized',...     
+	'Style','text', ...
+	'Tag','StaticText14', ...
+	'Visible','off');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.8 0.8 0.8], ...
+	'HorizontalAlignment','left', ...
+	'ListboxTop',0, ...
+	'Position',[0.5590 0.2981 0.2179 0.0402], ...
+	'String','radius final', ...
+        'FontUnits','normalized',...	       
+	'Style','text', ...
+	'Tag','StaticText12');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.8 0.8 0.8], ...
+	'HorizontalAlignment','left', ...
+	'ListboxTop',0, ...
+	'Position',[0.5590 0.3636 0.2179 0.0402], ...
+	'String','radius initial', ...
+	'FontUnits','normalized',...      
+	'Style','text', ...
+	'Tag','StaticText10');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[1 1 1], ...
+	'Callback','som_gui(''check_rough_trainlen'');', ...
+	'ListboxTop',0, ...
+	'Position',[0.3590 0.2352 0.0949 0.0402], ...
+	'Style','edit', ...
+	'FontUnits','normalized',...     
+	'Tag','EditText7');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[1 1 1], ...
+	'Callback','som_gui(''check_rough_alphaini'');', ...
+	'Enable','off', ...
+	'ListboxTop',0, ...
+	'Position',[0.3590 0.1691 0.0949 0.0381], ...
+	'Style','edit', ...
+        'FontUnits','normalized',...	       
+	'Tag','EditText6', ...
+	'Visible','off');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[1 1 1], ...
+	'Callback','som_gui(''check_rough_radfin'');', ...
+	'ListboxTop',0, ...
+	'Position',[0.358974358974359 0.3044397463002114 0.09487179487179487 0.040169133192389], ...
+	'Style','edit', ...
+	'FontUnits','normalized',...      
+	'Tag','EditText5');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[1 1 1], ...
+	'Callback','som_gui(''check_rough_radini'');', ...
+	'ListboxTop',0, ...
+	'Position',[0.358974358974359 0.3699788583509514 0.09487179487179487 0.040169133192389], ...
+	'Style','edit', ...
+        'FontUnits','normalized',...	       
+	'Tag','EditText4');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.8 0.8 0.8], ...
+	'HorizontalAlignment','left', ...
+	'ListboxTop',0, ...
+	'Position',[0.0962 0.2326 0.2179 0.0402], ...
+	'String','training length', ...
+        'FontUnits','normalized',...	       
+	'Style','text', ...
+	'Tag','StaticText15');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.8 0.8 0.8], ...
+	'HorizontalAlignment','left', ...
+	'ListboxTop',0, ...
+	'Position',[0.0962 0.1691 0.2179 0.0381], ...
+	'String','alpha initial', ...
+        'FontUnits','normalized',...	       
+	'Style','text', ...
+	'Tag','StaticText13', ...
+	'Visible','off');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.8 0.8 0.8], ...
+	'HorizontalAlignment','left', ...
+	'ListboxTop',0, ...
+	'Position',[0.0962 0.3023 0.2179 0.0402], ...
+	'String','radius final', ...
+        'FontUnits','normalized',...	       
+	'Style','text', ...
+	'Tag','StaticText11');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.8 0.8 0.8], ...
+	'HorizontalAlignment','left', ...
+	'ListboxTop',0, ...
+	'Position',[0.0962 0.3679 0.2179 0.0402], ...
+        'FontUnits','normalized',...
+	'String','radius initial', ...
+	'Style','text', ...
+	'Tag','StaticText9');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.701960784313725 0.701960784313725 0.701960784313725], ...
+	'ListboxTop',0, ...
+	'Position',[0.5948717948717949 0.4291754756871036 0.2871794871794872 0.05285412262156448], ...
+	'String','Finetune', ...
+        'FontUnits','normalized',...	       
+	'Style','text', ...
+	'Tag','StaticText8');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.701960784313725 0.701960784313725 0.701960784313725], ...
+	'ListboxTop',0, ...
+	'Position',[0.1205128205128205 0.4355179704016914 0.3153846153846154 0.04862579281183932], ...
+	'String','Rough', ...
+        'FontUnits','normalized',...	       
+	'Style','text', ...
+	'Tag','StaticText7');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.701960784313725 0.701960784313725 0.701960784313725], ...
+	'FontWeight','bold', ...
+	'ListboxTop',0, ...
+	'Position',[0.1641025641025641 0.8900634249471459 0.7025641025641025 0.05285412262156448], ...
+	'String','Change parameters for batch training', ...
+	'Style','text', ...
+        'FontUnits','normalized',...	       
+	'Tag','StaticText1');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.701960784313725 0.701960784313725 0.701960784313725], ...
+	'HorizontalAlignment','left', ...
+	'ListboxTop',0, ...
+	'Position',[0.09615384615384615 0.6025369978858351 0.1743589743589744 0.040169133192389], ...
+	'String','length type:', ...
+	'Style','text', ...
+        'FontUnits','normalized',...	       
+	'Tag','StaticText17');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.701960784313725 0.701960784313725 0.701960784313725], ...
+	'ListboxTop',0, ...
+	'Max',2, ...
+	'Min',1, ...
+	'Position',[0.2948717948717949 0.6062367864693446 0.1923076923076923 0.03964059196617336], ...
+	'String',temp3, ...
+        'FontUnits','normalized',...	       
+	'Style','popupmenu', ...
+	'Tag','PopupMenu3', ...
+	'Value',1);
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'HorizontalAlignment','left', ...
+	'ListboxTop',0, ...
+	'Position',[0.5102564102564102 0.6004228329809724 0.1641025641025641 0.040169133192389], ...
+	'String','order', ...
+        'FontUnits','normalized',...	       
+	'Style','text', ...
+	'Tag','StaticText18');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'HorizontalAlignment','left', ...
+	'ListboxTop',0, ...
+	'Max',2, ...
+	'Min',1, ...
+	'Position',[0.7051282051282051 0.6109936575052853 0.1923076923076923 0.040169133192389], ...
+	'String',temp4, ...
+        'FontUnits','normalized',...	       
+	'Style','popupmenu', ...
+	'Tag','PopupMenu4', ...
+	'Value',1);
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'HorizontalAlignment','left', ...
+	'ListboxTop',0, ...
+	'Position',[0.09615384615384615 0.5369978858350951 0.2051282051282051 0.040169133192389], ...
+	'String','learning func', ...
+        'FontUnits','normalized',...	       
+	'Style','text', ...
+	'Tag','StaticText19');
+h1 = uicontrol('Parent',h0, ...
+	'Units','normalized', ...
+	'BackgroundColor',[0.701960784313725 0.701960784313725 0.701960784313725], ...
+	'ListboxTop',0, ...
+	'Max',3, ...
+	'Min',1, ...
+	'Position',[0.2948717948717949 0.5454545454545455 0.1923076923076923 0.03964059196617336], ...
+	'String',temp5, ...
+        'FontUnits','normalized',...	       
+	'Style','popupmenu', ...
+	'Tag','PopupMenu5', ...
+	'Value',1);
+if nargout > 0, fig = h0; end
+
+
+function print_info(sS,level,fid)
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% check arguments
+
+
+%error(nargchk(1, 2, nargin))  % check no. of input args is correct
+
+if ~isstruct(sS),
+  if ~iscell(sS) | ~isstruct(sS{1}), 
+    error('Input argument is not a struct or a cell array of structs.')
+  end
+  csS = sS;
+else
+  csS = {sS};
+end
+
+if nargin<2 | isempty(level) | isnan(level), level = 1; end
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% print struct information
+
+for c=1:length(csS), 
+ sS = csS{c};
+
+ switch sS.type, 
+ case 'som_map', 
+  mdim = length(sS.topol.msize);
+  [munits dim] = size(sS.codebook);
+  t    = length(sS.trainhist);  
+  if t==0, st='uninitialized'; 
+  elseif t==1, st = 'initialized';
+  else st = sprintf('initialized, trained %d times',t-1);
+  end
+
+  % level 1
+  fprintf(fid,'%% Struct type                           : %s\n', sS.type);
+  fprintf(fid,'%% Map name                              : %s\n', sS.name);
+  fprintf(fid,'%% Input dimension                       : %d\n', dim);
+  fprintf(fid,'%% Map grid size                         : ');
+  for i = 1:mdim - 1, fprintf(fid,'%d x ',sS.topol.msize(i)); end
+  fprintf(fid,'%d\n', sS.topol.msize(mdim));
+  fprintf(fid,'%% Lattice type (rect/hexa)              : %s\n', sS.topol.lattice);
+  fprintf(fid,'%% Shape (sheet/cyl/toroid)              : %s\n', sS.topol.shape);
+  fprintf(fid,'%% Neighborhood type                     : %s\n', sS.neigh);
+  fprintf(fid,'%% Mask                                  : ');
+  if dim,
+    for i = 1:dim-1, fprintf(fid,'%d ',sS.mask(i)); end; 
+    fprintf(fid,'%d\n',sS.mask(dim));
+  else fprintf(fid,'%% \n');
+  end
+  fprintf(fid,'%% Training status                       : %s\n', st);
+   
+  % level 1,
+  status = cell(dim,1);
+  for i=1:dim, 
+    n = length(sS.comp_norm{i});
+    if n, 
+      uninit = strcmp('uninit',{sS.comp_norm{i}.status});
+      done   = strcmp('done',{sS.comp_norm{i}.status});
+      undone = strcmp('undone',{sS.comp_norm{i}.status});
+      if sum(uninit)==n, status{i} = 'no normalization';
+      elseif sum(done)==n, status{i} = 'normalized';
+      elseif sum(undone)==n, status{i} = 'denormalized';
+      else status{i} = 'partial';
+      end
+    else status{i} = 'no normalization'; end
+  end
+  if level>1, 
+    fprintf(fid,'%% Vector components\n');
+    M = sS.codebook;
+    fprintf(fid,'%%  #   name          mask     min    mean     max     std  status\n');
+    fprintf(fid,'%%  --- ------------  ----  ------  ------  ------  ------  ------\n');
+    for i = 1:dim,
+      fprintf(fid,'%%  %-3d %-12s  %-4.2f  %6.1g  %6.1g  %6.1g  %6.1g  %s\n', ...
+              i,sS.comp_names{i}, sS.mask(i), ...
+              min(M(:,i)),mean(M(:,i)),max(M(:,i)),std(M(:,i)),status{i});
+    end
+  end
+
+  % level 3
+  if level>2,
+    fprintf(fid,'%% Vector component normalizations\n');
+    fprintf(fid,'%%  #   name          method (i=uninit,u=undone,d=done)\n');
+    fprintf(fid,'%%  --- ------------  ---------------------------------------\n');
+    for i=1:dim,  
+      fprintf(fid,'%%  %-3d %-12s  ',i,sS.comp_names{i});
+      n = length(sS.comp_norm{i}); 
+      for j=1:n, 
+        m = sS.comp_norm{i}(j).method;
+        s = sS.comp_norm{i}(j).status;
+        if strcmp(s,'uninit'), c='i'; 
+        elseif strcmp(s,'undone'), c='u'; 
+        else c='d';
+        end
+        fprintf(fid,'%% %s[%s] ',m,c);
+      end
+      fprintf(fid,'%% \n');
+    end
+  end
+  
+  % level 4
+  if level>3,
+    fprintf(fid,'%% Training history\n');
+    for i=1:t, 
+      sT = sS.trainhist(i);
+      fprintf(fid,'%% * Algorithm: %8s   Data: %13s  Trainlen:  %8d\n',...
+	      sT.algorithm,sT.data_name,sT.trainlen);
+      %if i>1, 
+        fprintf(fid,'%%   Neighborh: %8s  Mask:  ',sT.neigh);
+        for i = 1:dim-1, fprintf(fid,'%% %d ',sT.mask(i)); end; 
+        fprintf(fid,'%% %d\n',sT.mask(mdim));
+        fprintf(fid,'%%   Radius:  %4.2f->%4.2f  Alpha: %5.3f (%s)\n', ...
+		sT.radius_ini,sT.radius_fin,sT.alpha_ini,sT.alpha_type);
+      %end
+      fprintf(fid,'%%   Time:  %s\n',sT.time);
+    end
+  end
+
+ case 'som_data',
+
+  [dlen dim] = size(sS.data);
+  if dlen*dim
+    ind      = find(~isnan(sum(sS.data),2));
+  else ind = []; end
+  complete = size(sS.data(ind,:),1);
+  partial  = dlen - complete;
+  values   = prod(size(sS.data));
+  missing  = sum(sum(isnan(sS.data))); 
+
+  % level 1  
+  fprintf(fid,'%% Struct type             : %s\n', sS.type);
+  fprintf(fid,'%% Data name               : %s\n', sS.name);
+  fprintf(fid,'%% Vector dimension        : %d\n', dim);
+  fprintf(fid,'%% Number of data vectors  : %d\n', dlen);
+  fprintf(fid,'%% Complete data vectors   : %d\n', complete);
+  fprintf(fid,'%% Partial data vectors    : %d\n', partial);  
+  if values, r = floor(100 * (values - missing) / values); else r = 0; end
+  fprintf(fid,'%% Complete values         : %d of %d (%d%%)\n', ...
+          values-missing, values, r); 
+
+  % level 2,
+  status = cell(dim,1);
+  for i=1:dim, 
+    n = length(sS.comp_norm{i});
+    if n, 
+      uninit = strcmp('uninit',{sS.comp_norm{i}.status});
+      done   = strcmp('done',{sS.comp_norm{i}.status});
+      undone = strcmp('undone',{sS.comp_norm{i}.status});
+      if sum(uninit)==n, status{i} = 'no normalization';
+      elseif sum(done)==n, status{i} = 'normalized';
+      elseif sum(undone)==n, status{i} = 'denormalized';
+      else status{i} = 'partial';
+      end
+    else status{i} = 'no normalization'; end
+  end
+  if level>1, 
+    fprintf(fid,'%% Vector components\n');
+    D = sS.data;
+    fprintf(fid,'%%  #   name            min     mean     max     std  missing      status\n');
+    fprintf(fid,'%%  --- ------------  ------  ------  ------  ------  -----------  ------\n');
+    for i = 1:dim,
+      known = find(~isnan(D(:,i))); 
+      miss = dlen-length(known);
+      fprintf(fid,'%%  %-3d %-12s  %6.1g  %6.1g  %6.1g  %6.1g  %5d (%2d%%)  %s\n', ...
+              i,sS.comp_names{i}, ...
+              min(D(known,i)),mean(D(known,i)),max(D(known,i)),std(D(known,i)), ...
+              miss,floor(100*miss/dlen),status{i});
+    end
+  end
+
+  % level 3
+  if level>2,
+    fprintf(fid,'%% Vector component normalizations\n');
+    fprintf(fid,'%%  #   name          method (i=uninit,u=undone,d=done)\n');
+    fprintf(fid,'%%  --- ------------  ---------------------------------------\n');
+    for i=1:dim,  
+      fprintf(fid,'%%  %-3d %-12s  ',i,sS.comp_names{i});
+      n = length(sS.comp_norm{i});         
+      for j=1:n, 
+        m = sS.comp_norm{i}(j).method;
+        s = sS.comp_norm{i}(j).status;
+        if strcmp(s,'uninit'), c='i'; 
+        elseif strcmp(s,'undone'), c='u'; 
+        else c='d';
+        end
+        fprintf(fid,'%% %s[%s] ',m,c);
+      end
+      fprintf(fid,'%% \n');
+    end
+  end
+
+ case 'som_topol', 
+
+  mdim = length(sS.msize);
+ 
+  % level 1
+  fprintf(fid,'%% Struct type                           : %s\n',sS.type);
+  fprintf(fid,'%% Map grid size                         : ');
+  for i = 1:mdim - 1, fprintf(fid,'%% %d x ',sS.msize(i)); end
+  fprintf(fid,'%% %d\n', sS.msize(mdim));
+  fprintf(fid,'%% Lattice type (rect/hexa)              : %s\n', sS.lattice);
+  fprintf(fid,'%% Shape (sheet/cyl/toroid)              : %s\n', sS.shape);
+
+ case 'som_train', 
+
+  % level 1
+  fprintf(fid,'%% Struct type                           : %s\n',sS.type);
+  fprintf(fid,'%% Training algorithm                    : %s\n',sS.algorithm);
+  fprintf(fid,'%% Training data                         : %s\n',sS.data_name);
+  fprintf(fid,'%% Neighborhood function                 : %s\n',sS.neigh);
+  fprintf(fid,'%% Mask                                  : ');
+  dim = length(sS.mask);
+  if dim, 
+    for i = 1:dim-1, fprintf(fid,'%% %d ',sS.mask(i)); end; 
+    fprintf(fid,'%% %d\n',sS.mask(end));
+  else fprintf(fid,'%% \n'); end
+  fprintf(fid,'%% Initial radius                        : %-6.1f\n',sS.radius_ini);
+  fprintf(fid,'%% Final radius                          : %-6.1f\n',sS.radius_fin);
+  fprintf(fid,'%% Initial learning rate (alpha)         : %-6.1f\n',sS.alpha_ini);
+  fprintf(fid,'%% Alpha function type (linear/inv)      : %s\n',sS.alpha_type);
+  fprintf(fid,'%% Training length                       : %d\n',sS.trainlen);
+  fprintf(fid,'%% Average quantization error            : %-6.1f\n',sS.qerror);
+  fprintf(fid,'%% When training was done                : %s\n',sS.time);
+
+ case 'som_norm', 
+  
+  % level 1
+  fprintf(fid,'%% Struct type                           : %s\n',sS.type);
+  fprintf(fid,'%% Normalization method                  : %s\n',sS.method);
+  fprintf(fid,'%% Status                                : %s\n',sS.status);
+
+  % level 2
+  if level>1, 
+    fprintf(fid,'%% Parameters:\n');
+    sS.params
+  end
+ end
+end
+
+function [] = html2tex(html_addres,texfile)
+
+tempfile = tempname;
+fid = fopen(texfile,'w');
+eval(['!lynx -dump ' html_addres ' > ' tempfile]);
+fid2 = fopen(tempfile,'r');
+while not(feof(fid2))
+	line = fgets(fid2);
+	line = strcat('%',line);
+	fprintf(fid,'%s',line);
+end
+	fclose(fid);
+	fclose(fid2);
+	delete (tempfile);
+
+
+function [name] = retname
+resnames = who;
+if size(resnames,1) > 0
+  max_length = size(resnames{1},2);
+  for index = 1:size(resnames,1)
+    if size(resnames{index},2) > max_length
+	max_length =  size(resnames{index},2);
+    end
+  end
+ length = max_length + 1;
+ name(:,1:1:length) = 'A' 				
+else
+ name = 'A';
+end	
+%%
+
+
+