- create SOS optimizer dialog copyright 2009-2012 Blair Armstrong, Christine Watson, David Plaut This file is part of SOS SOS is free software: you can redistribute it and/or modify it for academic and non-commercial purposes under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. For commercial or for-profit uses, please contact the authors (sos@cnbc.cmu.edu). SOS is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
0001 % - create SOS optimizer dialog 0002 % 0003 % copyright 2009-2012 Blair Armstrong, Christine Watson, David Plaut 0004 % 0005 % This file is part of SOS 0006 % 0007 % SOS is free software: you can redistribute it and/or modify 0008 % it for academic and non-commercial purposes 0009 % under the terms of the GNU General Public License as published by 0010 % the Free Software Foundation, either version 3 of the License, or 0011 % (at your option) any later version. For commercial or for-profit 0012 % uses, please contact the authors (sos@cnbc.cmu.edu). 0013 % 0014 % SOS is distributed in the hope that it will be useful, 0015 % but WITHOUT ANY WARRANTY; without even the implied warranty of 0016 % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0017 % GNU General Public License for more details. 0018 0019 % You should have received a copy of the GNU General Public License 0020 % along with SOS (see COPYING.txt). 0021 % If not, see <http://www.gnu.org/licenses/>. 0022 0023 0024 function varargout = createSOS_dialog(varargin) 0025 % CREATESOS_DIALOG M-file for createSOS_dialog.fig 0026 % CREATESOS_DIALOG, by itself, creates a new CREATESOS_DIALOG or raises the existing 0027 % singleton*. 0028 % 0029 % H = CREATESOS_DIALOG returns the handle to a new CREATESOS_DIALOG or the handle to 0030 % the existing singleton*. 0031 % 0032 % CREATESOS_DIALOG('CALLBACK',hObject,eventData,handles,...) calls the local 0033 % function named CALLBACK in CREATESOS_DIALOG.M with the given input arguments. 0034 % 0035 % CREATESOS_DIALOG('Property','Value',...) creates a new CREATESOS_DIALOG or raises the 0036 % existing singleton*. Starting from the left, property value pairs are 0037 % applied to the GUI before createSOS_dialog_OpeningFcn gets called. An 0038 % unrecognized property name or invalid value makes property application 0039 % stop. All inputs are passed to createSOS_dialog_OpeningFcn via varargin. 0040 % 0041 % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one 0042 % instance to run (singleton)". 0043 % 0044 % See also: GUIDE, GUIDATA, GUIHANDLES 0045 0046 % Edit the above text to modify the response to help createSOS_dialog 0047 0048 % Last Modified by GUIDE v2.5 08-Sep-2010 22:22:01 0049 0050 % Begin initialization code - DO NOT EDIT 0051 gui_Singleton = 1; 0052 gui_State = struct('gui_Name', mfilename, ... 0053 'gui_Singleton', gui_Singleton, ... 0054 'gui_OpeningFcn', @createSOS_dialog_OpeningFcn, ... 0055 'gui_OutputFcn', @createSOS_dialog_OutputFcn, ... 0056 'gui_LayoutFcn', [] , ... 0057 'gui_Callback', []); 0058 if nargin && ischar(varargin{1}) 0059 gui_State.gui_Callback = str2func(varargin{1}); 0060 end 0061 0062 if nargout 0063 [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); 0064 else 0065 gui_mainfcn(gui_State, varargin{:}); 0066 end 0067 % End initialization code - DO NOT EDIT 0068 0069 0070 % --- Executes just before createSOS_dialog is made visible. 0071 function createSOS_dialog_OpeningFcn(hObject, eventdata, handles, varargin) 0072 % This function has no output args, see OutputFcn. 0073 % hObject handle to figure 0074 % eventdata reserved - to be defined in a future version of MATLAB 0075 % handles structure with handles and user data (see GUIDATA) 0076 % varargin command line arguments to createSOS_dialog (see VARARGIN) 0077 0078 % Choose default command line output for createSOS_dialog 0079 handles.output = hObject; 0080 0081 % Update handles structure 0082 guidata(hObject, handles); 0083 0084 % UIWAIT makes createSOS_dialog wait for user response (see UIRESUME) 0085 % uiwait(handles.figure_createSOS); 0086 0087 0088 % --- Outputs from this function are returned to the command line. 0089 function varargout = createSOS_dialog_OutputFcn(hObject, eventdata, handles) 0090 % varargout cell array for returning output args (see VARARGOUT); 0091 % hObject handle to figure 0092 % eventdata reserved - to be defined in a future version of MATLAB 0093 % handles structure with handles and user data (see GUIDATA) 0094 0095 % Get default command line output from handles structure 0096 varargout{1} = handles.output; 0097 0098 0099 0100 function edit_maxIt_Callback(hObject, eventdata, handles) 0101 % hObject handle to edit_maxIt (see GCBO) 0102 % eventdata reserved - to be defined in a future version of MATLAB 0103 % handles structure with handles and user data (see GUIDATA) 0104 0105 % Hints: get(hObject,'String') returns contents of edit_maxIt as text 0106 % str2double(get(hObject,'String')) returns contents of edit_maxIt as a double 0107 validate_maxIt(handles); 0108 0109 0110 function flag = validate_maxIt(handles) 0111 str = get(handles.edit_maxIt,'String'); 0112 0113 errmsg = 'Sample size must be a whole number > 0'; 0114 errtitle = 'Invalid max iteration!'; 0115 0116 flag = validatePositiveInteger(str,errmsg,errtitle); 0117 0118 0119 0120 % --- Executes during object creation, after setting all properties. 0121 function edit_maxIt_CreateFcn(hObject, eventdata, handles) 0122 % hObject handle to edit_maxIt (see GCBO) 0123 % eventdata reserved - to be defined in a future version of MATLAB 0124 % handles empty - handles not created until after all CreateFcns called 0125 0126 % Hint: edit controls usually have a white background on Windows. 0127 % See ISPC and COMPUTER. 0128 if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) 0129 set(hObject,'BackgroundColor','white'); 0130 end 0131 0132 0133 0134 function edit_reportInterval_Callback(hObject, eventdata, handles) 0135 % hObject handle to edit_reportInterval (see GCBO) 0136 % eventdata reserved - to be defined in a future version of MATLAB 0137 % handles structure with handles and user data (see GUIDATA) 0138 0139 % Hints: get(hObject,'String') returns contents of edit_reportInterval as text 0140 % str2double(get(hObject,'String')) returns contents of edit_reportInterval as a double 0141 validate_reportInterval(handles); 0142 0143 function flag = validate_reportInterval(handles) 0144 str = get(handles.edit_reportInterval,'String'); 0145 0146 errmsg = 'Sample size must be a whole number > 0'; 0147 errtitle = 'Invalid reportInterval!'; 0148 0149 flag = validatePositiveInteger(str,errmsg,errtitle); 0150 0151 0152 0153 % --- Executes during object creation, after setting all properties. 0154 function edit_reportInterval_CreateFcn(hObject, eventdata, handles) 0155 % hObject handle to edit_reportInterval (see GCBO) 0156 % eventdata reserved - to be defined in a future version of MATLAB 0157 % handles empty - handles not created until after all CreateFcns called 0158 0159 % Hint: edit controls usually have a white background on Windows. 0160 % See ISPC and COMPUTER. 0161 if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) 0162 set(hObject,'BackgroundColor','white'); 0163 end 0164 0165 0166 0167 function edit_statInterval_Callback(hObject, eventdata, handles) 0168 % hObject handle to edit_statInterval (see GCBO) 0169 % eventdata reserved - to be defined in a future version of MATLAB 0170 % handles structure with handles and user data (see GUIDATA) 0171 0172 % Hints: get(hObject,'String') returns contents of edit_statInterval as text 0173 % str2double(get(hObject,'String')) returns contents of 0174 % edit_statInterval as a double 0175 validate_statInterval(handles) 0176 0177 function flag = validate_statInterval(handles) 0178 str = get(handles.edit_statInterval,'String'); 0179 0180 errmsg = 'Stat test interval must be a whole number > 0'; 0181 errtitle = 'Invalid statInterval!'; 0182 0183 flag = validatePositiveInteger(str,errmsg,errtitle); 0184 0185 0186 % --- Executes during object creation, after setting all properties. 0187 function edit_statInterval_CreateFcn(hObject, eventdata, handles) 0188 % hObject handle to edit_statInterval (see GCBO) 0189 % eventdata reserved - to be defined in a future version of MATLAB 0190 % handles empty - handles not created until after all CreateFcns called 0191 0192 % Hint: edit controls usually have a white background on Windows. 0193 % See ISPC and COMPUTER. 0194 if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) 0195 set(hObject,'BackgroundColor','white'); 0196 end 0197 0198 0199 % --- Executes on button press in pushbutton1. 0200 function pushbutton1_Callback(hObject, eventdata, handles) 0201 % hObject handle to pushbutton1 (see GCBO) 0202 % eventdata reserved - to be defined in a future version of MATLAB 0203 % handles structure with handles and user data (see GUIDATA) 0204 0205 flag = validate_maxIt(handles); 0206 0207 if flag == true 0208 disp('yes, valid string'); 0209 end 0210 0211 0212 0213 0214 0215 0216 % --- Executes on selection change in popupmenu_statReportStyle. 0217 function popupmenu_statReportStyle_Callback(hObject, eventdata, handles) 0218 % hObject handle to popupmenu_statReportStyle (see GCBO) 0219 % eventdata reserved - to be defined in a future version of MATLAB 0220 % handles structure with handles and user data (see GUIDATA) 0221 0222 % Hints: contents = cellstr(get(hObject,'String')) returns popupmenu_statReportStyle contents as cell array 0223 % contents{get(hObject,'Value')} returns selected item from popupmenu_statReportStyle 0224 0225 0226 % --- Executes during object creation, after setting all properties. 0227 function popupmenu_statReportStyle_CreateFcn(hObject, eventdata, handles) 0228 % hObject handle to popupmenu_statReportStyle (see GCBO) 0229 % eventdata reserved - to be defined in a future version of MATLAB 0230 % handles empty - handles not created until after all CreateFcns called 0231 0232 % Hint: popupmenu controls usually have a white background on Windows. 0233 % See ISPC and COMPUTER. 0234 if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) 0235 set(hObject,'BackgroundColor','white'); 0236 end 0237 0238 0239 0240 function edit_stopFreezeIt_Callback(hObject, eventdata, handles) 0241 % hObject handle to edit_stopFreezeIt (see GCBO) 0242 % eventdata reserved - to be defined in a future version of MATLAB 0243 % handles structure with handles and user data (see GUIDATA) 0244 0245 % Hints: get(hObject,'String') returns contents of edit_stopFreezeIt as text 0246 % str2double(get(hObject,'String')) returns contents of edit_stopFreezeIt as a double 0247 validate_stopFreezeIt(handles); 0248 0249 0250 function flag = validate_stopFreezeIt(handles) 0251 str = get(handles.edit_stopFreezeIt,'String'); 0252 0253 errmsg = 'Freeze interval must be a whole number > 0'; 0254 errtitle = 'Invalid stopFreezeIt!'; 0255 0256 flag = validatePositiveInteger(str,errmsg,errtitle); 0257 0258 0259 % --- Executes during object creation, after setting all properties. 0260 function edit_stopFreezeIt_CreateFcn(hObject, eventdata, handles) 0261 % hObject handle to edit_stopFreezeIt (see GCBO) 0262 % eventdata reserved - to be defined in a future version of MATLAB 0263 % handles empty - handles not created until after all CreateFcns called 0264 0265 % Hint: edit controls usually have a white background on Windows. 0266 % See ISPC and COMPUTER. 0267 if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) 0268 set(hObject,'BackgroundColor','white'); 0269 end 0270 0271 0272 0273 function edit_blockSize_Callback(hObject, eventdata, handles) 0274 % hObject handle to edit_blockSize (see GCBO) 0275 % eventdata reserved - to be defined in a future version of MATLAB 0276 % handles structure with handles and user data (see GUIDATA) 0277 0278 % Hints: get(hObject,'String') returns contents of edit_blockSize as text 0279 % str2double(get(hObject,'String')) returns contents of edit_blockSize as a double 0280 validate_blockSize(handles); 0281 0282 0283 function flag = validate_blockSize(handles) 0284 str = get(handles.edit_blockSize,'String'); 0285 0286 errmsg = 'Block size must be a whole number > 0'; 0287 errtitle = 'Invalid block size!'; 0288 0289 flag = validatePositiveInteger(str,errmsg,errtitle); 0290 0291 % --- Executes during object creation, after setting all properties. 0292 function edit_blockSize_CreateFcn(hObject, eventdata, handles) 0293 % hObject handle to edit_blockSize (see GCBO) 0294 % eventdata reserved - to be defined in a future version of MATLAB 0295 % handles empty - handles not created until after all CreateFcns called 0296 0297 % Hint: edit controls usually have a white background on Windows. 0298 % See ISPC and COMPUTER. 0299 if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) 0300 set(hObject,'BackgroundColor','white'); 0301 end 0302 0303 0304 % --- Executes on selection change in popupmenu_targSampleCandSelectMethod. 0305 function popupmenu_targSampleCandSelectMethod_Callback(hObject, eventdata, handles) 0306 % hObject handle to popupmenu_targSampleCandSelectMethod (see GCBO) 0307 % eventdata reserved - to be defined in a future version of MATLAB 0308 % handles structure with handles and user data (see GUIDATA) 0309 0310 % Hints: contents = cellstr(get(hObject,'String')) returns popupmenu_targSampleCandSelectMethod contents as cell array 0311 % contents{get(hObject,'Value')} returns selected item from popupmenu_targSampleCandSelectMethod 0312 0313 0314 % --- Executes during object creation, after setting all properties. 0315 function popupmenu_targSampleCandSelectMethod_CreateFcn(hObject, eventdata, handles) 0316 % hObject handle to popupmenu_targSampleCandSelectMethod (see GCBO) 0317 % eventdata reserved - to be defined in a future version of MATLAB 0318 % handles empty - handles not created until after all CreateFcns called 0319 0320 % Hint: popupmenu controls usually have a white background on Windows. 0321 % See ISPC and COMPUTER. 0322 if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) 0323 set(hObject,'BackgroundColor','white'); 0324 end 0325 0326 0327 % --- Executes on selection change in popupmenu_pSwapFunction. 0328 function popupmenu_pSwapFunction_Callback(hObject, eventdata, handles) 0329 % hObject handle to popupmenu_pSwapFunction (see GCBO) 0330 % eventdata reserved - to be defined in a future version of MATLAB 0331 % handles structure with handles and user data (see GUIDATA) 0332 0333 % Hints: contents = cellstr(get(hObject,'String')) returns popupmenu_pSwapFunction contents as cell array 0334 % contents{get(hObject,'Value')} returns selected item from popupmenu_pSwapFunction 0335 0336 0337 % --- Executes during object creation, after setting all properties. 0338 function popupmenu_pSwapFunction_CreateFcn(hObject, eventdata, handles) 0339 % hObject handle to popupmenu_pSwapFunction (see GCBO) 0340 % eventdata reserved - to be defined in a future version of MATLAB 0341 % handles empty - handles not created until after all CreateFcns called 0342 0343 % Hint: popupmenu controls usually have a white background on Windows. 0344 % See ISPC and COMPUTER. 0345 if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) 0346 set(hObject,'BackgroundColor','white'); 0347 end 0348 0349 0350 % --- Executes on button press in pushbutton_createSOS. 0351 function pushbutton_createSOS_Callback(hObject, eventdata, handles) 0352 % hObject handle to pushbutton_createSOS (see GCBO) 0353 % eventdata reserved - to be defined in a future version of MATLAB 0354 % handles structure with handles and user data (see GUIDATA) 0355 0356 % re-validate all fields 0357 0358 createObj = validate_name(handles); 0359 0360 if createObj == true 0361 createObj = validate_maxIt(handles); 0362 if createObj == true 0363 createObj = validate_reportInterval(handles); 0364 0365 if createObj == true 0366 createObj = validate_statInterval(handles); 0367 0368 if createObj == true 0369 createObj = validate_stopFreezeIt(handles); 0370 0371 if createObj == true 0372 createObj = validate_blockSize(handles); 0373 0374 if createObj == true 0375 % the other fields are pop-up menus and necessarily 0376 % pass validation. Go on to create the object. 0377 0378 %cmd = 0379 varName = get(handles.edit_name,'String'); 0380 maxIt = (get(handles.edit_maxIt,'String')); 0381 reportInterval = (get(handles.edit_reportInterval,'String')); 0382 statInterval = (get(handles.edit_statInterval,'String')); 0383 stopFreezeIt = (get(handles.edit_stopFreezeIt,'String')); 0384 blockSize = (get(handles.edit_blockSize,'String')); 0385 0386 statMenuHandle = handles.popupmenu_statReportStyle; 0387 reportStyle = getPopupMenuName(statMenuHandle,... 0388 'Error, could not retrieve label,','Error'); 0389 0390 SampleCandMenuHandle = handles.popupmenu_targSampleCandSelectMethod; 0391 targSampleCandSelectMethod = getPopupMenuName(SampleCandMenuHandle,... 0392 'Error, could not retrieve label,','Error'); 0393 0394 feederdfCandSelectMethodHandle = handles.popupmenu_feederdfCandSelectMethod; 0395 feederdfCandSelectMethod = getPopupMenuName(feederdfCandSelectMethodHandle,... 0396 'Error, could not retrieve label,','Error'); 0397 0398 pSwapFunctionHandle = handles.popupmenu_pSwapFunction; 0399 pSwapFunction = getPopupMenuName(pSwapFunctionHandle,... 0400 'Error, could not retrieve label,','Error'); 0401 0402 command = strcat(varName,'=','sos(','''maxIt'',', maxIt,... 0403 ',''reportInterval'',',reportInterval,... 0404 ',''statInterval'',',statInterval,... 0405 ',''stopFreezeIt'',',stopFreezeIt,... 0406 ',''blockSize'',',blockSize,... 0407 ',''statTestReportStyle'',''',reportStyle,... 0408 ''',''targSampleCandSelectMethod'',''',targSampleCandSelectMethod,... 0409 ''',''feederdfCandSelectMethod'',''',feederdfCandSelectMethod,... 0410 ''',''pSwapFunction'',''',pSwapFunction,... 0411 ''');'... 0412 ); 0413 0414 verbosePrint(['Executing command: ','''',command,''''],'createSOSDialog_createSOS'); 0415 evalin('base',command); 0416 0417 0418 0419 0420 close(handles.figure_createSOS); 0421 end 0422 end 0423 end 0424 end 0425 end 0426 end 0427 0428 0429 0430 0431 % --- Executes on selection change in popupmenu_feederdfCandSelectMethod. 0432 function popupmenu_feederdfCandSelectMethod_Callback(hObject, eventdata, handles) 0433 % hObject handle to popupmenu_feederdfCandSelectMethod (see GCBO) 0434 % eventdata reserved - to be defined in a future version of MATLAB 0435 % handles structure with handles and user data (see GUIDATA) 0436 0437 % Hints: contents = cellstr(get(hObject,'String')) returns popupmenu_feederdfCandSelectMethod contents as cell array 0438 % contents{get(hObject,'Value')} returns selected item from popupmenu_feederdfCandSelectMethod 0439 0440 0441 % --- Executes during object creation, after setting all properties. 0442 function popupmenu_feederdfCandSelectMethod_CreateFcn(hObject, eventdata, handles) 0443 % hObject handle to popupmenu_feederdfCandSelectMethod (see GCBO) 0444 % eventdata reserved - to be defined in a future version of MATLAB 0445 % handles empty - handles not created until after all CreateFcns called 0446 0447 % Hint: popupmenu controls usually have a white background on Windows. 0448 % See ISPC and COMPUTER. 0449 if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) 0450 set(hObject,'BackgroundColor','white'); 0451 end 0452 0453 0454 0455 function edit_name_Callback(hObject, eventdata, handles) 0456 % hObject handle to edit_name (see GCBO) 0457 % eventdata reserved - to be defined in a future version of MATLAB 0458 % handles structure with handles and user data (see GUIDATA) 0459 0460 % Hints: get(hObject,'String') returns contents of edit_name as text 0461 % str2double(get(hObject,'String')) returns contents of edit_name as a double 0462 validate_name(handles); 0463 0464 0465 function flag = validate_name(handles) 0466 0467 varName = get(handles.edit_name,'String'); 0468 0469 %check to make sure that the name is a valid variable name: 0470 valid = regexp(varName,'^[a-zA-Z]+\w*$'); 0471 0472 if isempty(valid) 0473 % name is not currently valid, tell the user. 0474 msgbox('Only letters, numbers, and underscores are permitted in the name of the sample object. The first character must also be a letter.',... 0475 'Invalid name!'); 0476 flag = false; 0477 else 0478 % check to make sure that the new variable name doesn't already exist. 0479 command = strcat('whos(''',varName,''')'); 0480 varExists = evalin('base',command); 0481 0482 0483 % if a variable with this name already exists, warns the user 0484 if isempty(varExists) == 0 0485 msgbox('A sample with this name already exists and will be overridden if you continue',... 0486 'Sample exists!'); 0487 end 0488 0489 flag = true; 0490 end 0491 0492 % --- Executes during object creation, after setting all properties. 0493 function edit_name_CreateFcn(hObject, eventdata, handles) 0494 % hObject handle to edit_name (see GCBO) 0495 % eventdata reserved - to be defined in a future version of MATLAB 0496 % handles empty - handles not created until after all CreateFcns called 0497 0498 % Hint: edit controls usually have a white background on Windows. 0499 % See ISPC and COMPUTER. 0500 if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) 0501 set(hObject,'BackgroundColor','white'); 0502 end