Home > src > sos_gui.m

# sos_gui

## PURPOSE

- sos main GUI

## SYNOPSIS

function varargout = sos_gui(varargin)

## DESCRIPTION

     - sos main GUI

     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.

## CROSS-REFERENCE INFORMATION

This function calls:

- calculateOverlap_Dialog - calculate overlap dialog
- create2samplettest_Dialog - create 2-sample t-test dialog
- createHardBoundConstraint_Dialog - create hard bound constraint dialog
- createMatchCorrelztest_Dialog - create correlation-matching z-test dialog
- createMatchUniformkstest_Dialog - create uniformity ks-test dialog
- createPlots_Dialog - create sosplots dialog
- createPop_Dialog - create population dialog
- createSOS_dialog - create SOS optimizer dialog
- createSample_Dialog - create sample dialog
- createSingleSampleSoftDistanceConstraint_Dialog - create single sample soft distance constraint dialog
- createSoftEntropyConstraint_Dialog - create soft entropy constraint dialog
- createSoftMatchCorrelDistanceConstraint_Dialog - create soft match correlation constraint dialog
- createSoftMetaConstraint_Dialog - create soft meta-constraint dialog
- createTwoSampleSoftDistanceConstraint_Dialog - create two sample soft distance constraint dialog
- createsinglesamplettest_Dialog - create single sample t-test dialog
- expAnneal_Dialog - create expAnneal dialog
- getdfName - extracts a dataframe name selected in the GUI
- maxpDecrease_Dialog dialog used for calculating the largest p-decrease value
- numSteps_Dialog dialog used to calculate the nubmer of temperature-lowering steps
- saveHistory_Dialog - dialog used to save the optimization history
- setBufferedHistoryOutfile_Dialog - dialog for setting output file for buffered history output
- setSeed_Dialog - dialog for setting the random seed
- validatePositiveInteger - helper function to validate that a string represents a positive integer
- verbosePrint - master print function that regulates cmd line output based on verbosity flags

This function is called by:

- create2samplettest_Dialog - create 2-sample t-test dialog
- createHardBoundConstraint_Dialog - create hard bound constraint dialog
- createMatchCorrelztest_Dialog - create correlation-matching z-test dialog
- createMatchUniformkstest_Dialog - create uniformity ks-test dialog
- createPlots_Dialog - create sosplots dialog
- createSingleSampleSoftDistanceConstraint_Dialog - create single sample soft distance constraint dialog
- createSoftEntropyConstraint_Dialog - create soft entropy constraint dialog
- createSoftMatchCorrelDistanceConstraint_Dialog - create soft match correlation constraint dialog
- createSoftMetaConstraint_Dialog - create soft meta-constraint dialog
- createTwoSampleSoftDistanceConstraint_Dialog - create two sample soft distance constraint dialog
- createsinglesamplettest_Dialog - create single sample t-test dialog
- expAnneal_Dialog - create expAnneal dialog
- saveHistory_Dialog - dialog used to save the optimization history
- setBufferedHistoryOutfile_Dialog - dialog for setting output file for buffered history output
- sos - SOS optimization object

## SUBFUNCTIONS

- function sos_gui_OpeningFcn(hObject, eventdata, handles, varargin)
- function varargout = sos_gui_OutputFcn(hObject, eventdata, handles)
- function edit_CmdWindow_Callback(hObject, eventdata, handles)
- function edit_CmdWindow_CreateFcn(hObject, eventdata, handles)
- function pushbutton_runScript_Callback(hObject, eventdata, handles)
- function pushbutton_CreatePopulation_Callback(hObject, eventdata, handles)
- function edit_CmdWindow_KeyPressFcn(hObject, eventdata, handles)
- function popupmenu_popSelector_Callback(hObject, eventdata, handles)
- function popupmenu_popSelector_CreateFcn(hObject, eventdata, handles)
- function populatePopList(hObject)
- function populateSampleList(hObject)
- function pushbutton_popWriteData_Callback(hObject, eventdata, handles)
- function writedf(handle,dfType)
- function popupmenu_popSelector_ButtonDownFcn(hObject, eventdata, handles)
- function popupmenu_popSelector_KeyPressFcn(hObject, eventdata, handles)
- function pushbutton_refreshPopList_Callback(hObject, eventdata, handles)
- function pushbutton_createSample_Callback(hObject, eventdata, handles)
- function popupmenu_sampleSelector_Callback(hObject, eventdata, handles)
- function popupmenu_sampleSelector_CreateFcn(hObject, eventdata, handles)
- function pushbutton_writeSampleData_Callback(hObject, eventdata, handles)
- function pushbutton_refreshSampleList_Callback(hObject, eventdata, handles)
- function pushbutton_createSample_CreateFcn(hObject, eventdata, handles)
- function popupmenu_sampleSelector_ButtonDownFcn(hObject, eventdata, handles)
- function pushbutton_setPop_Callback(hObject, eventdata, handles)
- function pushbutton_sampleLock_Callback(hObject, eventdata, handles)
- function execSimpleCmd(handle,dfType,cmd)
- function pushbutton_sampleUnlock_Callback(hObject, eventdata, handles)
- function pushbutton_createSOS_Callback(hObject, eventdata, handles)
- function pushbutton_refresh_SOSlist_Callback(hObject, eventdata, handles)
- function popupmenu_SOSSelector_Callback(hObject, eventdata, handles)
- function popupmenu_SOSSelector_CreateFcn(hObject, eventdata, handles)
- function populateSOSList(hObject)
- function popupmenu_sampleSelector_KeyPressFcn(hObject, eventdata, handles)
- function popupmenu_SOSSelector_ButtonDownFcn(hObject, eventdata, handles)
- function pushbutton_addSample_Callback(hObject, eventdata, handles)
- function pushbutton_createHistory_Callback(hObject, eventdata, handles)
- function pushbutton_createPlots_Callback(hObject, eventdata, handles)
- function edit_dispIt_Callback(hObject, eventdata, handles)
- function edit_dispIt_CreateFcn(hObject, eventdata, handles)
- function pushbutton_deltaCostPercentiles_Callback(hObject, eventdata, handles)
- function pushbutton_writeHistory_Callback(hObject, eventdata, handles)
- function pushbutton_writeSamples_Callback(hObject, eventdata, handles)
- function pushbutton_writePopulations_Callback(hObject, eventdata, handles)
- function pushbutton_dispCost_Callback(hObject, eventdata, handles)
- function pushbutton_initCost_Callback(hObject, eventdata, handles)
- function pushbutton_writeAll_Callback(hObject, eventdata, handles)
- function pushbutton_initFillSamples_Callback(hObject, eventdata, handles)
- function pushbutton_normalizeData_Callback(hObject, eventdata, handles)
- function pushbutton_setSeed_Callback(hObject, eventdata, handles)
- function pushbutton_setBufferedHistoryOutfile_Callback(hObject, eventdata, handles)
- function pushbutton28_Callback(hObject, eventdata, handles)
- function pushbutton_enableBufferedHistoryWrite_Callback(hObject, eventdata, handles)
- function pushbutton_disableBufferedHistoryWrite_Callback(hObject, eventdata, handles)
- function popupmenu_reportStyleSelector_Callback(hObject, eventdata, handles)
- function popupmenu_reportStyleSelector_CreateFcn(hObject, eventdata, handles)
- function pushbutton_doStatsTests_Callback(hObject, eventdata, handles)
- function pushbutton_setFeederdfCandidateSelectionMethod_Callback(hObject, eventdata, handles)
- function popupmenu_feederdfCandSelectMethod_Callback(hObject, eventdata, handles)
- function popupmenu_feederdfCandSelectMethod_CreateFcn(hObject, eventdata, handles)
- function pushbutton_greedyAnneal_Callback(hObject, eventdata, handles)
- function pushbutton_expAnneal_Callback(hObject, eventdata, handles)
- function pushbutton_numSteps_Callback(hObject, eventdata, handles)
- function pushbutton_maxpDecrease_Callback(hObject, eventdata, handles)
- function pushbutton_optimize_Callback(hObject, eventdata, handles)
- function pushbutton_stopOptimize_Callback(hObject, eventdata, handles)
- function edit_numIt_Callback(hObject, eventdata, handles)
- function flag = validate_numIt(handles)
- function edit_numIt_CreateFcn(hObject, eventdata, handles)
- function pushbutton_stopOptimize_CreateFcn(hObject, eventdata, handles)
- function pushbutton_2sample_ttest_Callback(hObject, eventdata, handles)
- function pushbutton_singlettest_Callback(hObject, eventdata, handles)
- function pushbutton_createHardBoundConstraint_Callback(hObject, eventdata, handles)
- function pushbutton_createSingleSampleSoftDistanceConstraint_Callback(hObject, eventdata, handles)
- function pushbutton_create2SampleSoftDistanceConstraint_Callback(hObject, eventdata, handles)
- function pushbutton_createSoftEntropyConstraint_Callback(hObject, eventdata, handles)
- function popupmenu_entropyConstraintSelector_Callback(hObject, eventdata, handles)
- function populateEntropyConstraintList(hObject)
- function popupmenu_entropyConstraintSelector_CreateFcn(hObject, eventdata, handles)
- function pushbutton_plotSoftEntropyConstraint_Callback(hObject, eventdata, handles)
- function pushbutton_refreshSoftEntropyConstraintSelector_Callback(hObject, eventdata, handles)
- function pushbutton_createSoftMetaConstraint_Callback(hObject, eventdata, handles)
- function pushbutton_calculateOverlap_Callback(hObject, eventdata, handles)
- function pushbutton_createSoftMatchCorrelConstraint_Callback(hObject, eventdata, handles)
- function pushbutton_matchCorrel_ztest_Callback(hObject, eventdata, handles)
- function pushbutton_kstest_Callback(hObject, eventdata, handles)

## SOURCE CODE

    0001 % - sos main GUI
    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 = sos_gui(varargin)
    0025 % SOS_GUI M-file for sos_gui.fig
    0026 %      SOS_GUI, by itself, creates a new SOS_GUI or raises the existing
    0027 %      singleton*.
    0028 %
    0029 %      H = SOS_GUI returns the handle to a new SOS_GUI or the handle to
    0030 %      the existing singleton*.
    0031 %
    0032 %      SOS_GUI('CALLBACK',hObject,eventData,handles,...) calls the local
    0033 %      function named CALLBACK in SOS_GUI.M with the given input arguments.
    0034 %
    0035 %      SOS_GUI('Property','Value',...) creates a new SOS_GUI or raises the
    0036 %      existing singleton*.  Starting from the left, property value pairs are
    0037 %      applied to the GUI before sos_gui_OpeningFcn gets called.  An
    0038 %      unrecognized property name or invalid value makes property application
    0039 %      stop.  All inputs are passed to sos_gui_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 sos_gui
    0047
    0048 % Last Modified by GUIDE v2.5 16-Aug-2011 17:46:24
    0049
    0050 %
    0051 % BCA:
    0052 % Note: the following warning has been disabled.
    0053 % warning('off','MATLAB:hg:uicontrol:ParameterValuesMustBeValid');
    0054 % It occurs when the active population/sample lists are empty.
    0055 %
    0056
    0057
    0058
    0059 % Begin initialization code - DO NOT EDIT
    0060 gui_Singleton = 1;
    0061 gui_State = struct('gui_Name',       mfilename, ...
    0062                    'gui_Singleton',  gui_Singleton, ...
    0063                    'gui_OpeningFcn', @sos_gui_OpeningFcn, ...
    0064                    'gui_OutputFcn',  @sos_gui_OutputFcn, ...
    0065                    'gui_LayoutFcn',  [] , ...
    0066                    'gui_Callback',   []);
    0067 if nargin && ischar(varargin{1})
    0068     gui_State.gui_Callback = str2func(varargin{1});
    0069 end
    0070
    0071 if nargout
    0072     [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
    0073 else
    0074     gui_mainfcn(gui_State, varargin{:});
    0075 end
    0076 % End initialization code - DO NOT EDIT
    0077
    0078
    0079
    0080
    0081 % --- Executes just before sos_gui is made visible.
    0082 function sos_gui_OpeningFcn(hObject, eventdata, handles, varargin)
    0083 % This function has no output args, see OutputFcn.
    0084 % hObject    handle to figure
    0085 % eventdata  reserved - to be defined in a future version of MATLAB
    0086 % handles    structure with handles and user data (see GUIDATA)
    0087 % varargin   command line arguments to sos_gui (see VARARGIN)
    0088
    0089 % Choose default command line output for sos_gui
    0090 handles.output = hObject;
    0091
    0092 % Update handles structure
    0093 guidata(hObject, handles);
    0094
    0095 % UIWAIT makes sos_gui wait for user response (see UIRESUME)
    0096 % uiwait(handles.figure1);
    0097
    0098 disp([char(10),char(10),'SOS: Stochastic Optimization of Stimuli',char(10),...
    0099 '    Copyright 2009-2012 Blair Armstrong, Christine Watson, David Plaut',char(10),...
    0100 char(10),...
    0101 '    This binary executable is part of SOS',char(10),...
    0102 char(10),...
    0103 '    SOS is free software: you can redistribute it and/or modify',char(10),...
    0104 '    it for academic and non-commercial purposes',char(10),...
    0105 '    under the terms of the GNU General Public License as published by',char(10),...
    0106 '    the Free Software Foundation, either version 3 of the License, or',char(10),...
    0107 '    (at your option) any later version.  For commercial or for-profit',char(10),...
    0108 '    uses, please contact the authors (sos@cnbc.cmu.edu).',char(10),...
    0109 char(10),...
    0110 '    SOS is distributed in the hope that it will be useful,',char(10),...
    0111 '    but WITHOUT ANY WARRANTY; without even the implied warranty of',char(10),...
    0112 '    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the',char(10),...
    0113 '    GNU General Public License for more details.',char(10),...
    0114 char(10),...
    0115 '    You should have received a copy of the GNU General Public License',char(10),...
    0116 '    along with SOS (see COPYING.txt).',char(10),...
    0117 '    If not, see <http://www.gnu.org/licenses/>.',char(10),char(10),char(10)]);
    0118
    0119
    0120 % --- Outputs from this function are returned to the command line.
    0121 function varargout = sos_gui_OutputFcn(hObject, eventdata, handles)
    0122 % varargout  cell array for returning output args (see VARARGOUT);
    0123 % hObject    handle to figure
    0124 % eventdata  reserved - to be defined in a future version of MATLAB
    0125 % handles    structure with handles and user data (see GUIDATA)
    0126
    0127 % Get default command line output from handles structure
    0128 varargout{1} = handles.output;
    0129
    0130
    0131
    0132 function edit_CmdWindow_Callback(hObject, eventdata, handles)
    0133 % hObject    handle to edit_CmdWindow (see GCBO)
    0134 % eventdata  reserved - to be defined in a future version of MATLAB
    0135 % handles    structure with handles and user data (see GUIDATA)
    0136
    0137 % Hints: get(hObject,'String') returns contents of edit_CmdWindow as text
    0138 %        str2double(get(hObject,'String')) returns contents of edit_CmdWindow as a double
    0139
    0140
    0141     % technically, the command line will try to run whenever you loose
    0142     % focus.  However, there doesn't seem to be an easy workaround (e.g.,
    0143     % conditioning on carriage returns didn't seem to stop the call back).
    0144
    0145     command = get(hObject,'String');
    0146
    0147     verbosePrint(['Evaluating GUI command: ', command], ...
    0148             'sos_gui_cmdWindow_CallBack_runcmd');
    0149
    0150     evalin('base',command);
    0151
    0152     set(hObject,'String','');
    0153
    0154     % END edit_CmdWindow CALLBACK
    0155
    0156
    0157
    0158 % --- Executes during object creation, after setting all properties.
    0159 function edit_CmdWindow_CreateFcn(hObject, eventdata, handles)
    0160 % hObject    handle to edit_CmdWindow (see GCBO)
    0161 % eventdata  reserved - to be defined in a future version of MATLAB
    0162 % handles    empty - handles not created until after all CreateFcns called
    0163
    0164 % Hint: edit controls usually have a white background on Windows.
    0165 %       See ISPC and COMPUTER.
    0166 if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    0167     set(hObject,'BackgroundColor','white');
    0168 end
    0169
    0170     set(hObject, 'KeyPressFcn', @edit_CmdWindow_KeyPressFcn);
    0171
    0172
    0173 % --- Executes on button press in pushbutton_runScript.
    0174 function pushbutton_runScript_Callback(hObject, eventdata, handles)
    0175     % hObject    handle to pushbutton_runScript (see GCBO)
    0176     % eventdata  reserved - to be defined in a future version of MATLAB
    0177     % handles    structure with handles and user data (see GUIDATA)
    0178
    0179     % let user navigate to the script to run
    0180     [fileName,pathName] = uigetfile('*','Run Script...');
    0181
    0182     if fileName ~= 0
    0183
    0184
    0185         fullName = strcat(pathName,fileName);
    0186
    0187
    0188         % try to run the script...
    0189         verbosePrint(['Running script: ', fullName], ...
    0190                     'sos_gui_runScript_CallBack_runScript');
    0191
    0192         cd(pathName);
    0193         %first, read in the script:
    0194         try
    0195             fid = fopen(fullName,'r');
    0196         catch exception
    0197             error(['Could not open file: ', fullName]);
    0198         end
    0199
    0200         try
    0201             script = fscanf(fid,'%c');
    0202         catch
    0203              error(['Error while reading file: ', fullName]);
    0204         end
    0205
    0206         %run the script
    0207         evalin('base',script);
    0208     end
    0209     % END runScript CALLBACK
    0210
    0211
    0212
    0213 % --- Executes on button press in pushbutton_CreatePopulation.
    0214 function pushbutton_CreatePopulation_Callback(hObject, eventdata, handles)
    0215 % hObject    handle to pushbutton_CreatePopulation (see GCBO)
    0216 % eventdata  reserved - to be defined in a future version of MATLAB
    0217 % handles    structure with handles and user data (see GUIDATA)
    0218
    0219     createPop_Dialog();
    0220
    0221 % --- Executes on key press with focus on edit_CmdWindow and none of its controls.
    0222 function edit_CmdWindow_KeyPressFcn(hObject, eventdata, handles)
    0223 % hObject    handle to edit_CmdWindow (see GCBO)
    0224 % eventdata  structure with the following fields (see UICONTROL)
    0225 %    Key: name of the key that was pressed, in lower case
    0226 %    Character: character interpretation of the key(s) that was pressed
    0227 %    Modifier: name(s) of the modifier key(s) (i.e., control, shift) pressed
    0228 % handles    structure with handles and user data (see GUIDATA)
    0229
    0230
    0231
    0232 % --- Executes on selection change in popupmenu_popSelector.
    0233 function popupmenu_popSelector_Callback(hObject, eventdata, handles)
    0234 % hObject    handle to popupmenu_popSelector (see GCBO)
    0235 % eventdata  reserved - to be defined in a future version of MATLAB
    0236 % handles    structure with handles and user data (see GUIDATA)
    0237
    0238 % Hints: contents = cellstr(get(hObject,'String')) returns popupmenu_popSelector contents as cell array
    0239 %        contents{get(hObject,'Value')} returns selected item from popupmenu_popSelector
    0240
    0241     populatePopList(hObject);
    0242
    0243
    0244 % --- Executes during object creation, after setting all properties.
    0245 function popupmenu_popSelector_CreateFcn(hObject, eventdata, handles)
    0246 % hObject    handle to popupmenu_popSelector (see GCBO)
    0247 % eventdata  reserved - to be defined in a future version of MATLAB
    0248 % handles    empty - handles not created until after all CreateFcns called
    0249
    0250 % Hint: popupmenu controls usually have a white background on Windows.
    0251 %       See ISPC and COMPUTER.
    0252 if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    0253     set(hObject,'BackgroundColor','white');
    0254 end
    0255
    0256     %populatePopList(hObject);
    0257
    0258
    0259
    0260 % populates the population list
    0261 function populatePopList(hObject)
    0262     % get a list of all populations in the base workspace:
    0263     vars = evalin('base','whos()');
    0264
    0265     pops = [];
    0266     for i=1:length(vars)
    0267         if strcmp(vars(i).class,'population')
    0268             pops = [pops; {vars(i).name}]; %#ok<AGROW>
    0269         end
    0270     end
    0271
    0272     %in case no populations are present, set to the empty string:
    0273     if isempty(pops)
    0274         pops = '';
    0275     end
    0276
    0277
    0278     % assign that list to the options in the pop up menu.  Disable warnings
    0279     % if the list is empty and then re-enable them.
    0280     warning('off','MATLAB:hg:uicontrol:ParameterValuesMustBeValid');
    0281     set(hObject,'String',pops);
    0282
    0283
    0284 % populates the sample list
    0285 function populateSampleList(hObject)
    0286     % get a list of all populations in the base workspace:
    0287     vars = evalin('base','whos()');
    0288
    0289     samples = [];
    0290     for i=1:length(vars)
    0291         if strcmp(vars(i).class,'sample')
    0292             samples = [samples; {vars(i).name}]; %#ok<AGROW>
    0293         end
    0294     end
    0295
    0296
    0297
    0298     % assign that list to the options in the pop up menu
    0299     warning('off','MATLAB:hg:uicontrol:ParameterValuesMustBeValid');
    0300     set(hObject,'String',samples);
    0301
    0302
    0303
    0304 % --- Executes on button press in pushbutton_popWriteData.
    0305 function pushbutton_popWriteData_Callback(hObject, eventdata, handles)
    0306 % hObject    handle to pushbutton_popWriteData (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     menuHandle = handles.popupmenu_popSelector;
    0311     writedf(menuHandle,'population');
    0312
    0313
    0314
    0315 function writedf(handle,dfType)
    0316     % get the active population's name
    0317     dfNum = get(handle,'Value');
    0318     dfNames = get(handle,'String');
    0319
    0320     if isempty(dfNames) == 0
    0321         dfName = dfNames{dfNum};
    0322     else
    0323         dfName = '';
    0324     end
    0325
    0326     %make sure there is an active population
    0327     if isempty(dfName) == 0
    0328         command = strcat(dfName,'.writeData()');
    0329         verbosePrint(['Executing command: ','''',command,''''],'sosGui_writeDF');
    0330         evalin('base',command);
    0331     else
    0332         msgbox(['A ',dfType,' must be active to write data'],...
    0333                 ['No active ',dfType]);
    0334     end
    0335
    0336
    0337
    0338
    0339
    0340 % --- If Enable == 'on', executes on mouse press in 5 pixel border.
    0341 % --- Otherwise, executes on mouse press in 5 pixel border or over popupmenu_popSelector.
    0342 function popupmenu_popSelector_ButtonDownFcn(hObject, eventdata, handles)
    0343 % hObject    handle to popupmenu_popSelector (see GCBO)
    0344 % eventdata  reserved - to be defined in a future version of MATLAB
    0345 % handles    structure with handles and user data (see GUIDATA)
    0346     populatePopList(hObject);
    0347
    0348
    0349 % --- Executes on key press with focus on popupmenu_popSelector and none of its controls.
    0350 function popupmenu_popSelector_KeyPressFcn(hObject, eventdata, handles)
    0351 % hObject    handle to popupmenu_popSelector (see GCBO)
    0352 % eventdata  structure with the following fields (see UICONTROL)
    0353 %    Key: name of the key that was pressed, in lower case
    0354 %    Character: character interpretation of the key(s) that was pressed
    0355 %    Modifier: name(s) of the modifier key(s) (i.e., control, shift) pressed
    0356 % handles    structure with handles and user data (see GUIDATA)
    0357
    0358
    0359 % --- Executes on button press in pushbutton_refreshPopList.
    0360 function pushbutton_refreshPopList_Callback(hObject, eventdata, handles)
    0361 % hObject    handle to pushbutton_refreshPopList (see GCBO)
    0362 % eventdata  reserved - to be defined in a future version of MATLAB
    0363 % handles    structure with handles and user data (see GUIDATA)
    0364
    0365     % refresh the list of populations
    0366     populatePopList(handles.popupmenu_popSelector);
    0367
    0368
    0369 % --- Executes on button press in pushbutton_createSample.
    0370 function pushbutton_createSample_Callback(hObject, eventdata, handles)
    0371 % hObject    handle to pushbutton_createSample (see GCBO)
    0372 % eventdata  reserved - to be defined in a future version of MATLAB
    0373 % handles    structure with handles and user data (see GUIDATA)
    0374     createSample_Dialog();
    0375
    0376 % --- Executes on selection change in popupmenu_sampleSelector.
    0377 function popupmenu_sampleSelector_Callback(hObject, eventdata, handles)
    0378 % hObject    handle to popupmenu_sampleSelector (see GCBO)
    0379 % eventdata  reserved - to be defined in a future version of MATLAB
    0380 % handles    structure with handles and user data (see GUIDATA)
    0381
    0382 % Hints: contents = cellstr(get(hObject,'String')) returns popupmenu_sampleSelector contents as cell array
    0383 %        contents{get(hObject,'Value')} returns selected item from popupmenu_sampleSelector
    0384     populateSampleList(hObject);
    0385
    0386 % --- Executes during object creation, after setting all properties.
    0387 function popupmenu_sampleSelector_CreateFcn(hObject, eventdata, handles)
    0388 % hObject    handle to popupmenu_sampleSelector (see GCBO)
    0389 % eventdata  reserved - to be defined in a future version of MATLAB
    0390 % handles    empty - handles not created until after all CreateFcns called
    0391
    0392 % Hint: popupmenu controls usually have a white background on Windows.
    0393 %       See ISPC and COMPUTER.
    0394 if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    0395     set(hObject,'BackgroundColor','white');
    0396 end
    0397
    0398
    0399 % --- Executes on button press in pushbutton_writeSampleData.
    0400 function pushbutton_writeSampleData_Callback(hObject, eventdata, handles)
    0401 % hObject    handle to pushbutton_writeSampleData (see GCBO)
    0402 % eventdata  reserved - to be defined in a future version of MATLAB
    0403 % handles    structure with handles and user data (see GUIDATA)
    0404     menuHandle = handles.popupmenu_sampleSelector;
    0405     writedf(menuHandle,'sample');
    0406
    0407 % --- Executes on button press in pushbutton_refreshSampleList.
    0408 function pushbutton_refreshSampleList_Callback(hObject, eventdata, handles)
    0409 % hObject    handle to pushbutton_refreshSampleList (see GCBO)
    0410 % eventdata  reserved - to be defined in a future version of MATLAB
    0411 % handles    structure with handles and user data (see GUIDATA)
    0412     populateSampleList(handles.popupmenu_sampleSelector);
    0413
    0414 % --- Executes during object creation, after setting all properties.
    0415 function pushbutton_createSample_CreateFcn(hObject, eventdata, handles)
    0416 % hObject    handle to pushbutton_createSample (see GCBO)
    0417 % eventdata  reserved - to be defined in a future version of MATLAB
    0418 % handles    empty - handles not created until after all CreateFcns called
    0419
    0420
    0421 % --- If Enable == 'on', executes on mouse press in 5 pixel border.
    0422 % --- Otherwise, executes on mouse press in 5 pixel border or over popupmenu_sampleSelector.
    0423 function popupmenu_sampleSelector_ButtonDownFcn(hObject, eventdata, handles)
    0424 % hObject    handle to popupmenu_sampleSelector (see GCBO)
    0425 % eventdata  reserved - to be defined in a future version of MATLAB
    0426 % handles    structure with handles and user data (see GUIDATA)
    0427     populateSampleList(hObject);
    0428
    0429
    0430 % --- Executes on button press in pushbutton_setPop.
    0431 function pushbutton_setPop_Callback(hObject, eventdata, handles)
    0432 % hObject    handle to pushbutton_setPop (see GCBO)
    0433 % eventdata  reserved - to be defined in a future version of MATLAB
    0434 % handles    structure with handles and user data (see GUIDATA)
    0435
    0436     %two things to do: first, make sure that there is an active population.
    0437     % Second, make sure that there is an active sample.
    0438
    0439     link = true;
    0440
    0441     popMenuHandle = handles.popupmenu_popSelector;
    0442     popName = getdfName(popMenuHandle,'population');
    0443
    0444     if isempty(popName)
    0445         link = false;
    0446     end
    0447
    0448     if link == true
    0449         sampleMenuHandle = handles.popupmenu_sampleSelector;
    0450         sampleName = getdfName(sampleMenuHandle,'sample');
    0451
    0452         if isempty(sampleName)
    0453             link = false;
    0454         end
    0455
    0456         if link == true
    0457             % we have valid samples and populations.  Link them.
    0458
    0459             command = [sampleName,'.setPop(',popName,');'];
    0460
    0461             verbosePrint(['Executing command: ','''',command,''''],'sosGui_links2p');
    0462             evalin('base',command);
    0463         end
    0464     end
    0465
    0466
    0467 % retrieves the name of a dataframe from the active lists of data frames
    0468 % function dfName = getdfName(handle,dfType)
    0469 %     dfNum = get(handle,'Value');
    0470 %     dfNames = get(handle,'String');
    0471 %
    0472 %     if isempty(dfNames) == 0
    0473 %         dfName = dfNames{dfNum};
    0474 %     else
    0475 %         dfName = '';
    0476 %     end
    0477 %
    0478 %     %make sure there is an active df
    0479 %     if isempty(dfName) == 0
    0480 %         % success
    0481 %     else
    0482 %         msgbox(['A ',dfType,' must be active'],...
    0483 %                 ['No active ',dfType]);
    0484 %     end
    0485 %
    0486
    0487
    0488 % --- Executes on button press in pushbutton_sampleLock.
    0489 function pushbutton_sampleLock_Callback(hObject, eventdata, handles)
    0490 % hObject    handle to pushbutton_sampleLock (see GCBO)
    0491 % eventdata  reserved - to be defined in a future version of MATLAB
    0492 % handles    structure with handles and user data (see GUIDATA)
    0493     menuHandle = handles.popupmenu_sampleSelector;
    0494     execSimpleCmd(menuHandle,'sample','lockAll()');
    0495
    0496
    0497 % provides functiona
    0498 function execSimpleCmd(handle,dfType,cmd)
    0499     % get the active population's name
    0500     dfNum = get(handle,'Value');
    0501     dfNames = get(handle,'String');
    0502
    0503     if isempty(dfNames) == 0
    0504         dfName = dfNames{dfNum};
    0505     else
    0506         dfName = '';
    0507     end
    0508
    0509     %make sure there is an active population
    0510     if isempty(dfName) == 0
    0511         command = strcat(dfName,'.',cmd);
    0512
    0513         verbosePrint(['Executing command: ','''',command,''''],'sosGui_simpleCmd');
    0514         evalin('base',command);
    0515     else
    0516         msgbox(['A ',dfType,' must be active to run: ',cmd],...
    0517                 ['No active ',dfType]);
    0518     end
    0519
    0520
    0521
    0522
    0523 % --- Executes on button press in pushbutton_sampleUnlock.
    0524 function pushbutton_sampleUnlock_Callback(hObject, eventdata, handles)
    0525 % hObject    handle to pushbutton_sampleUnlock (see GCBO)
    0526 % eventdata  reserved - to be defined in a future version of MATLAB
    0527 % handles    structure with handles and user data (see GUIDATA)
    0528     menuHandle = handles.popupmenu_sampleSelector;
    0529     execSimpleCmd(menuHandle,'sample','unlockAll()');
    0530
    0531
    0532 % --- Executes on button press in pushbutton_createSOS.
    0533 function pushbutton_createSOS_Callback(hObject, eventdata, handles)
    0534 % hObject    handle to pushbutton_createSOS (see GCBO)
    0535 % eventdata  reserved - to be defined in a future version of MATLAB
    0536 % handles    structure with handles and user data (see GUIDATA)
    0537     createSOS_dialog();
    0538
    0539
    0540 % --- Executes on button press in pushbutton_refresh_SOSlist.
    0541 function pushbutton_refresh_SOSlist_Callback(hObject, eventdata, handles)
    0542 % hObject    handle to pushbutton_refresh_SOSlist (see GCBO)
    0543 % eventdata  reserved - to be defined in a future version of MATLAB
    0544 % handles    structure with handles and user data (see GUIDATA)
    0545     populateSOSList(handles.popupmenu_SOSSelector);
    0546
    0547
    0548 % --- Executes on selection change in popupmenu_SOSSelector.
    0549 function popupmenu_SOSSelector_Callback(hObject, eventdata, handles)
    0550 % hObject    handle to popupmenu_SOSSelector (see GCBO)
    0551 % eventdata  reserved - to be defined in a future version of MATLAB
    0552 % handles    structure with handles and user data (see GUIDATA)
    0553
    0554 % Hints: contents = cellstr(get(hObject,'String')) returns popupmenu_SOSSelector contents as cell array
    0555 %        contents{get(hObject,'Value')} returns selected item from popupmenu_SOSSelector
    0556     populateSOSList(hObject);
    0557
    0558 % --- Executes during object creation, after setting all properties.
    0559 function popupmenu_SOSSelector_CreateFcn(hObject, eventdata, handles)
    0560 % hObject    handle to popupmenu_SOSSelector (see GCBO)
    0561 % eventdata  reserved - to be defined in a future version of MATLAB
    0562 % handles    empty - handles not created until after all CreateFcns called
    0563
    0564 % Hint: popupmenu controls usually have a white background on Windows.
    0565 %       See ISPC and COMPUTER.
    0566 if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    0567     set(hObject,'BackgroundColor','white');
    0568 end
    0569
    0570
    0571 function populateSOSList(hObject)
    0572     % get a list of all populations in the base workspace:
    0573     vars = evalin('base','whos()');
    0574
    0575     sosObjs = [];
    0576     for i=1:length(vars)
    0577         if strcmp(vars(i).class,'sos')
    0578             sosObjs = [sosObjs; {vars(i).name}]; %#ok<AGROW>
    0579         end
    0580     end
    0581
    0582
    0583
    0584     % assign that list to the options in the pop up menu
    0585     warning('off','MATLAB:hg:uicontrol:ParameterValuesMustBeValid');
    0586     set(hObject,'String',sosObjs);
    0587
    0588
    0589 % --- Executes on key press with focus on popupmenu_sampleSelector and none of its controls.
    0590 function popupmenu_sampleSelector_KeyPressFcn(hObject, eventdata, handles)
    0591 % hObject    handle to popupmenu_sampleSelector (see GCBO)
    0592 % eventdata  structure with the following fields (see UICONTROL)
    0593 %    Key: name of the key that was pressed, in lower case
    0594 %    Character: character interpretation of the key(s) that was pressed
    0595 %    Modifier: name(s) of the modifier key(s) (i.e., control, shift) pressed
    0596 % handles    structure with handles and user data (see GUIDATA)
    0597
    0598
    0599 % --- If Enable == 'on', executes on mouse press in 5 pixel border.
    0600 % --- Otherwise, executes on mouse press in 5 pixel border or over popupmenu_SOSSelector.
    0601 function popupmenu_SOSSelector_ButtonDownFcn(hObject, eventdata, handles)
    0602 % hObject    handle to popupmenu_SOSSelector (see GCBO)
    0603 % eventdata  reserved - to be defined in a future version of MATLAB
    0604 % handles    structure with handles and user data (see GUIDATA)
    0605     populateSOSList(hObject);
    0606
    0607
    0608 % --- Executes on button press in pushbutton_addSample.
    0609 function pushbutton_addSample_Callback(hObject, eventdata, handles)
    0610 % hObject    handle to pushbutton_addSample (see GCBO)
    0611 % eventdata  reserved - to be defined in a future version of MATLAB
    0612 % handles    structure with handles and user data (see GUIDATA)
    0613
    0614     add = true;
    0615
    0616     %retrieve name of active sample
    0617     sampleMenuHandle = handles.popupmenu_sampleSelector;
    0618     sampleName = getdfName(sampleMenuHandle,'sample');
    0619
    0620     if isempty(sampleName)
    0621         add = false;
    0622     end
    0623
    0624     % if there is a valid active sample, add it.
    0625
    0626     if add == true
    0627         sosMenuHandle = handles.popupmenu_SOSSelector;
    0628         sosName = getdfName(sosMenuHandle,'SOS');
    0629
    0630         if isempty(sosName)
    0631             add = false;
    0632         end
    0633
    0634         if add == true
    0635             % we have a valid sample and a valid SOS object.  Add the
    0636             % sample to the sos object
    0637
    0638             command = [sosName,'.addSample(',sampleName,');'];
    0639
    0640             verbosePrint(['Executing command: ','''',command,''''],'sosGui_addSample');
    0641             evalin('base',command);
    0642         end
    0643     end
    0644
    0645
    0646
    0647 % --- Executes on button press in pushbutton_createHistory.
    0648 function pushbutton_createHistory_Callback(hObject, eventdata, handles)
    0649 % hObject    handle to pushbutton_createHistory (see GCBO)
    0650 % eventdata  reserved - to be defined in a future version of MATLAB
    0651 % handles    structure with handles and user data (see GUIDATA)
    0652
    0653         create = true;
    0654
    0655         sosMenuHandle = handles.popupmenu_SOSSelector;
    0656         sosName = getdfName(sosMenuHandle,'SOS');
    0657
    0658         if isempty(sosName)
    0659             create = false;
    0660         end
    0661
    0662         if create == true
    0663             % create the history
    0664             command = [sosName,'.createHistory();'];
    0665
    0666             verbosePrint(['Executing command: ','''',command,''''],'sosGui_createHistory');
    0667             evalin('base',command);
    0668         end
    0669
    0670
    0671
    0672
    0673
    0674 % --- Executes on button press in pushbutton_createPlots.
    0675 function pushbutton_createPlots_Callback(hObject, eventdata, handles)
    0676 % hObject    handle to pushbutton_createPlots (see GCBO)
    0677 % eventdata  reserved - to be defined in a future version of MATLAB
    0678 % handles    structure with handles and user data (see GUIDATA)
    0679
    0680     create = true;
    0681
    0682         sosMenuHandle = handles.popupmenu_SOSSelector;
    0683         sosName = getdfName(sosMenuHandle,'SOS');
    0684
    0685         if isempty(sosName)
    0686             create = false;
    0687         end
    0688
    0689         if create == true
    0690             % run the createPlots dialog to give users choice of optional
    0691             % params
    0692             createPlots_Dialog();
    0693         end
    0694
    0695
    0696
    0697
    0698 function edit_dispIt_Callback(hObject, eventdata, handles)
    0699 % hObject    handle to edit_dispIt (see GCBO)
    0700 % eventdata  reserved - to be defined in a future version of MATLAB
    0701 % handles    structure with handles and user data (see GUIDATA)
    0702
    0703 % Hints: get(hObject,'String') returns contents of edit_dispIt as text
    0704 %        str2double(get(hObject,'String')) returns contents of edit_dispIt as a double
    0705
    0706
    0707 % --- Executes during object creation, after setting all properties.
    0708 function edit_dispIt_CreateFcn(hObject, eventdata, handles)
    0709 % hObject    handle to edit_dispIt (see GCBO)
    0710 % eventdata  reserved - to be defined in a future version of MATLAB
    0711 % handles    empty - handles not created until after all CreateFcns called
    0712
    0713 % Hint: edit controls usually have a white background on Windows.
    0714 %       See ISPC and COMPUTER.
    0715 if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    0716     set(hObject,'BackgroundColor','white');
    0717 end
    0718
    0719
    0720 % --- Executes on button press in pushbutton_deltaCostPercentiles.
    0721 function pushbutton_deltaCostPercentiles_Callback(hObject, eventdata, handles)
    0722 % hObject    handle to pushbutton_deltaCostPercentiles (see GCBO)
    0723 % eventdata  reserved - to be defined in a future version of MATLAB
    0724 % handles    structure with handles and user data (see GUIDATA)
    0725         run = true;
    0726
    0727         sosMenuHandle = handles.popupmenu_SOSSelector;
    0728         sosName = getdfName(sosMenuHandle,'SOS');
    0729
    0730         if isempty(sosName)
    0731             run = false;
    0732         end
    0733
    0734         if run == true
    0735             % create the history
    0736             command = [sosName,'.deltaCostPercentiles();'];
    0737
    0738             verbosePrint(['Executing command: ','''',command,''''],'sosGui_deltaCostDeciles');
    0739             evalin('base',command);
    0740         end
    0741
    0742
    0743 % --- Executes on button press in pushbutton_writeHistory.
    0744 function pushbutton_writeHistory_Callback(hObject, eventdata, handles)
    0745 % hObject    handle to pushbutton_writeHistory (see GCBO)
    0746 % eventdata  reserved - to be defined in a future version of MATLAB
    0747 % handles    structure with handles and user data (see GUIDATA)
    0748     saveHistory_Dialog();
    0749
    0750
    0751 % --- Executes on button press in pushbutton_writeSamples.
    0752 function pushbutton_writeSamples_Callback(hObject, eventdata, handles)
    0753 % hObject    handle to pushbutton_writeSamples (see GCBO)
    0754 % eventdata  reserved - to be defined in a future version of MATLAB
    0755 % handles    structure with handles and user data (see GUIDATA)
    0756         write = true;
    0757
    0758         sosMenuHandle = handles.popupmenu_SOSSelector;
    0759         sosName = getdfName(sosMenuHandle,'SOS');
    0760
    0761         if isempty(sosName)
    0762             write = false;
    0763         end
    0764
    0765         if write == true
    0766             % create the history
    0767             command = [sosName,'.writeSamples();'];
    0768
    0769             verbosePrint(['Executing command: ','''',command,''''],'sosGui_writeSamples');
    0770             evalin('base',command);
    0771         end
    0772
    0773
    0774
    0775 % --- Executes on button press in pushbutton_writePopulations.
    0776 function pushbutton_writePopulations_Callback(hObject, eventdata, handles)
    0777 % hObject    handle to pushbutton_writePopulations (see GCBO)
    0778 % eventdata  reserved - to be defined in a future version of MATLAB
    0779 % handles    structure with handles and user data (see GUIDATA)
    0780         write = true;
    0781
    0782         sosMenuHandle = handles.popupmenu_SOSSelector;
    0783         sosName = getdfName(sosMenuHandle,'SOS');
    0784
    0785         if isempty(sosName)
    0786             write = false;
    0787         end
    0788
    0789         if write == true
    0790             % create the history
    0791             command = [sosName,'.writePopulations();'];
    0792
    0793             verbosePrint(['Executing command: ','''',command,''''],'sosGui_writePopulations');
    0794             evalin('base',command);
    0795         end
    0796
    0797
    0798 % --- Executes on button press in pushbutton_dispCost.
    0799 function pushbutton_dispCost_Callback(hObject, eventdata, handles)
    0800 % hObject    handle to pushbutton_dispCost (see GCBO)
    0801 % eventdata  reserved - to be defined in a future version of MATLAB
    0802 % handles    structure with handles and user data (see GUIDATA)
    0803         write = true;
    0804
    0805         sosMenuHandle = handles.popupmenu_SOSSelector;
    0806         sosName = getdfName(sosMenuHandle,'SOS');
    0807
    0808         if isempty(sosName)
    0809             write = false;
    0810         end
    0811
    0812         if write == true
    0813             % create the history
    0814             command = [sosName,'.dispCost();'];
    0815
    0816             verbosePrint(['Executing command: ','''',command,''''],'sosGui_dispCost');
    0817             evalin('base',command);
    0818         end
    0819
    0820
    0821 % --- Executes on button press in pushbutton_initCost.
    0822 function pushbutton_initCost_Callback(hObject, eventdata, handles)
    0823 % hObject    handle to pushbutton_initCost (see GCBO)
    0824 % eventdata  reserved - to be defined in a future version of MATLAB
    0825 % handles    structure with handles and user data (see GUIDATA)
    0826         write = true;
    0827
    0828         sosMenuHandle = handles.popupmenu_SOSSelector;
    0829         sosName = getdfName(sosMenuHandle,'SOS');
    0830
    0831         if isempty(sosName)
    0832             write = false;
    0833         end
    0834
    0835         if write == true
    0836             % create the history
    0837             command = [sosName,'.initCost();'];
    0838
    0839             verbosePrint(['Executing command: ','''',command,''''],'sosGui_initCost');
    0840             evalin('base',command);
    0841         end
    0842
    0843
    0844 % --- Executes on button press in pushbutton_writeAll.
    0845 function pushbutton_writeAll_Callback(hObject, eventdata, handles)
    0846 % hObject    handle to pushbutton_writeAll (see GCBO)
    0847 % eventdata  reserved - to be defined in a future version of MATLAB
    0848 % handles    structure with handles and user data (see GUIDATA)
    0849         write = true;
    0850
    0851         sosMenuHandle = handles.popupmenu_SOSSelector;
    0852         sosName = getdfName(sosMenuHandle,'SOS');
    0853
    0854         if isempty(sosName)
    0855             write = false;
    0856         end
    0857
    0858         if write == true
    0859             % create the history
    0860             command = [sosName,'.writeAll();'];
    0861
    0862             verbosePrint(['Executing command: ','''',command,''''],'sosGui_writeAll');
    0863             evalin('base',command);
    0864         end
    0865
    0866
    0867 % --- Executes on button press in pushbutton_initFillSamples.
    0868 function pushbutton_initFillSamples_Callback(hObject, eventdata, handles)
    0869 % hObject    handle to pushbutton_initFillSamples (see GCBO)
    0870 % eventdata  reserved - to be defined in a future version of MATLAB
    0871 % handles    structure with handles and user data (see GUIDATA)
    0872         write = true;
    0873
    0874         sosMenuHandle = handles.popupmenu_SOSSelector;
    0875         sosName = getdfName(sosMenuHandle,'SOS');
    0876
    0877         if isempty(sosName)
    0878             write = false;
    0879         end
    0880
    0881         if write == true
    0882             % create the history
    0883             command = [sosName,'.initFillSamples();'];
    0884
    0885             verbosePrint(['Executing command: ','''',command,''''],'sosGui_initFillSamples');
    0886             evalin('base',command);
    0887         end
    0888
    0889
    0890 % --- Executes on button press in pushbutton_normalizeData.
    0891 function pushbutton_normalizeData_Callback(hObject, eventdata, handles)
    0892 % hObject    handle to pushbutton_normalizeData (see GCBO)
    0893 % eventdata  reserved - to be defined in a future version of MATLAB
    0894 % handles    structure with handles and user data (see GUIDATA)
    0895         write = true;
    0896
    0897         sosMenuHandle = handles.popupmenu_SOSSelector;
    0898         sosName = getdfName(sosMenuHandle,'SOS');
    0899
    0900         if isempty(sosName)
    0901             write = false;
    0902         end
    0903
    0904         if write == true
    0905             % create the history
    0906             command = [sosName,'.normalizeData();'];
    0907
    0908             verbosePrint(['Executing command: ','''',command,''''],'sosGui_initFillSamples');
    0909             evalin('base',command);
    0910         end
    0911
    0912
    0913 % --- Executes on button press in pushbutton_setSeed.
    0914 function pushbutton_setSeed_Callback(hObject, eventdata, handles)
    0915 % hObject    handle to pushbutton_setSeed (see GCBO)
    0916 % eventdata  reserved - to be defined in a future version of MATLAB
    0917 % handles    structure with handles and user data (see GUIDATA)
    0918     setSeed_Dialog();
    0919
    0920
    0921 % --- Executes on button press in pushbutton_setBufferedHistoryOutfile.
    0922 function pushbutton_setBufferedHistoryOutfile_Callback(hObject, eventdata, handles)
    0923 % hObject    handle to pushbutton_setBufferedHistoryOutfile (see GCBO)
    0924 % eventdata  reserved - to be defined in a future version of MATLAB
    0925 % handles    structure with handles and user data (see GUIDATA)
    0926     setBufferedHistoryOutfile_Dialog();
    0927
    0928
    0929 % --- Executes on button press in pushbutton28.
    0930 function pushbutton28_Callback(hObject, eventdata, handles)
    0931 % hObject    handle to pushbutton28 (see GCBO)
    0932 % eventdata  reserved - to be defined in a future version of MATLAB
    0933 % handles    structure with handles and user data (see GUIDATA)
    0934
    0935
    0936 % --- Executes on button press in pushbutton_enableBufferedHistoryWrite.
    0937 function pushbutton_enableBufferedHistoryWrite_Callback(hObject, eventdata, handles)
    0938 % hObject    handle to pushbutton_enableBufferedHistoryWrite (see GCBO)
    0939 % eventdata  reserved - to be defined in a future version of MATLAB
    0940 % handles    structure with handles and user data (see GUIDATA)
    0941
    0942         create = true;
    0943
    0944         sosMenuHandle = handles.popupmenu_SOSSelector;
    0945         sosName = getdfName(sosMenuHandle,'SOS');
    0946
    0947         if isempty(sosName)
    0948             create = false;
    0949         end
    0950
    0951         if create == true
    0952             % create the history
    0953             command = [sosName,'.enableBufferedHistoryWrite();'];
    0954
    0955
    0956             verbosePrint(['Executing command: ','''',command,''''],'sosGui_enableBufferedHistory');
    0957             evalin('base',command);
    0958         end
    0959
    0960
    0961 % --- Executes on button press in pushbutton_disableBufferedHistoryWrite.
    0962 function pushbutton_disableBufferedHistoryWrite_Callback(hObject, eventdata, handles)
    0963 % hObject    handle to pushbutton_disableBufferedHistoryWrite (see GCBO)
    0964 % eventdata  reserved - to be defined in a future version of MATLAB
    0965 % handles    structure with handles and user data (see GUIDATA)
    0966         create = true;
    0967
    0968         sosMenuHandle = handles.popupmenu_SOSSelector;
    0969         sosName = getdfName(sosMenuHandle,'SOS');
    0970
    0971         if isempty(sosName)
    0972             create = false;
    0973         end
    0974
    0975         if create == true
    0976             % create the history
    0977             command = [sosName,'.disableBufferedHistoryWrite();'];
    0978
    0979             verbosePrint(['Executing command: ','''',command,''''],'sosGui_disableBufferedHistory');
    0980             evalin('base',command);
    0981         end
    0982
    0983
    0984 % --- Executes on selection change in popupmenu_reportStyleSelector.
    0985 function popupmenu_reportStyleSelector_Callback(hObject, eventdata, handles)
    0986 % hObject    handle to popupmenu_reportStyleSelector (see GCBO)
    0987 % eventdata  reserved - to be defined in a future version of MATLAB
    0988 % handles    structure with handles and user data (see GUIDATA)
    0989
    0990 % Hints: contents = cellstr(get(hObject,'String')) returns popupmenu_reportStyleSelector contents as cell array
    0991 %        contents{get(hObject,'Value')} returns selected item from popupmenu_reportStyleSelector
    0992
    0993
    0994 % --- Executes during object creation, after setting all properties.
    0995 function popupmenu_reportStyleSelector_CreateFcn(hObject, eventdata, handles)
    0996 % hObject    handle to popupmenu_reportStyleSelector (see GCBO)
    0997 % eventdata  reserved - to be defined in a future version of MATLAB
    0998 % handles    empty - handles not created until after all CreateFcns called
    0999
    1000 % Hint: popupmenu controls usually have a white background on Windows.
    1001 %       See ISPC and COMPUTER.
    1002 if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    1003     set(hObject,'BackgroundColor','white');
    1004 end
    1005
    1006
    1007 % --- Executes on button press in pushbutton_doStatsTests.
    1008 function pushbutton_doStatsTests_Callback(hObject, eventdata, handles)
    1009 % hObject    handle to pushbutton_doStatsTests (see GCBO)
    1010 % eventdata  reserved - to be defined in a future version of MATLAB
    1011 % handles    structure with handles and user data (see GUIDATA)
    1012
    1013         run = true;
    1014
    1015         sosMenuHandle = handles.popupmenu_SOSSelector;
    1016         sosName = getdfName(sosMenuHandle,'SOS');
    1017
    1018         if isempty(sosName)
    1019             run = false;
    1020         end
    1021
    1022         if run == true
    1023
    1024             % retrieve the reportStyle
    1025
    1026             styleMenuHandle = handles.popupmenu_reportStyleSelector;
    1027             style = getdfName(styleMenuHandle,'reportStyle');
    1028
    1029             % create the history
    1030             command = [sosName,'.doStatTests(''reportStyle'',''',style,''');'];
    1031
    1032             verbosePrint(['Executing command: ','''',command,''''],'sosGui_doStats');
    1033             evalin('base',command);
    1034         end
    1035
    1036
    1037 % --- Executes on button press in pushbutton_setFeederdfCandidateSelectionMethod.
    1038 function pushbutton_setFeederdfCandidateSelectionMethod_Callback(hObject, eventdata, handles)
    1039 % hObject    handle to pushbutton_setFeederdfCandidateSelectionMethod (see GCBO)
    1040 % eventdata  reserved - to be defined in a future version of MATLAB
    1041 % handles    structure with handles and user data (see GUIDATA)
    1042         set = true;
    1043
    1044         sosMenuHandle = handles.popupmenu_SOSSelector;
    1045         sosName = getdfName(sosMenuHandle,'SOS');
    1046
    1047         if isempty(sosName)
    1048             set = false;
    1049         end
    1050
    1051         if set == true
    1052
    1053             modeMenuHandle = handles.popupmenu_feederdfCandSelectMethod;
    1054             mode = getdfName(modeMenuHandle,'neighborMode');
    1055
    1056             % create the history
    1057             command = [sosName,'.setFeederdfCandidateSelectionMethod(''',mode,''');'];
    1058
    1059             verbosePrint(['Executing command: ','''',command,''''],'sosGui_setFeederdfCandMethod');
    1060             evalin('base',command);
    1061         end
    1062
    1063 % --- Executes on selection change in popupmenu_feederdfCandSelectMethod.
    1064 function popupmenu_feederdfCandSelectMethod_Callback(hObject, eventdata, handles)
    1065 % hObject    handle to popupmenu_feederdfCandSelectMethod (see GCBO)
    1066 % eventdata  reserved - to be defined in a future version of MATLAB
    1067 % handles    structure with handles and user data (see GUIDATA)
    1068
    1069 % Hints: contents = cellstr(get(hObject,'String')) returns popupmenu_feederdfCandSelectMethod contents as cell array
    1070 %        contents{get(hObject,'Value')} returns selected item from popupmenu_feederdfCandSelectMethod
    1071
    1072
    1073 % --- Executes during object creation, after setting all properties.
    1074 function popupmenu_feederdfCandSelectMethod_CreateFcn(hObject, eventdata, handles)
    1075 % hObject    handle to popupmenu_feederdfCandSelectMethod (see GCBO)
    1076 % eventdata  reserved - to be defined in a future version of MATLAB
    1077 % handles    empty - handles not created until after all CreateFcns called
    1078
    1079 % Hint: popupmenu controls usually have a white background on Windows.
    1080 %       See ISPC and COMPUTER.
    1081 if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    1082     set(hObject,'BackgroundColor','white');
    1083 end
    1084
    1085
    1086 % --- Executes on button press in pushbutton_greedyAnneal.
    1087 function pushbutton_greedyAnneal_Callback(hObject, eventdata, handles)
    1088 % hObject    handle to pushbutton_greedyAnneal (see GCBO)
    1089 % eventdata  reserved - to be defined in a future version of MATLAB
    1090 % handles    structure with handles and user data (see GUIDATA)
    1091         set = true;
    1092
    1093         sosMenuHandle = handles.popupmenu_SOSSelector;
    1094         sosName = getdfName(sosMenuHandle,'SOS');
    1095
    1096         if isempty(sosName)
    1097             set = false;
    1098         end
    1099
    1100         if set == true
    1101             % create the history
    1102             command = [sosName,'.setAnnealSchedule(''schedule'',''greedy'');'];
    1103
    1104             verbosePrint(['Executing command: ','''',command,''''],'sosGui_greedyAnneal');
    1105             evalin('base',command);
    1106         end
    1107
    1108
    1109 % --- Executes on button press in pushbutton_expAnneal.
    1110 function pushbutton_expAnneal_Callback(hObject, eventdata, handles)
    1111 % hObject    handle to pushbutton_expAnneal (see GCBO)
    1112 % eventdata  reserved - to be defined in a future version of MATLAB
    1113 % handles    structure with handles and user data (see GUIDATA)
    1114     expAnneal_Dialog();
    1115
    1116
    1117 % --- Executes on button press in pushbutton_numSteps.
    1118 function pushbutton_numSteps_Callback(hObject, eventdata, handles)
    1119 % hObject    handle to pushbutton_numSteps (see GCBO)
    1120 % eventdata  reserved - to be defined in a future version of MATLAB
    1121 % handles    structure with handles and user data (see GUIDATA)
    1122     numSteps_Dialog();
    1123
    1124 % --- Executes on button press in pushbutton_maxpDecrease.
    1125 function pushbutton_maxpDecrease_Callback(hObject, eventdata, handles)
    1126 % hObject    handle to pushbutton_maxpDecrease (see GCBO)
    1127 % eventdata  reserved - to be defined in a future version of MATLAB
    1128 % handles    structure with handles and user data (see GUIDATA)
    1129     maxpDecrease_Dialog();
    1130
    1131
    1132 % --- Executes on button press in pushbutton_optimize.
    1133 function pushbutton_optimize_Callback(hObject, eventdata, handles)
    1134 % hObject    handle to pushbutton_optimize (see GCBO)
    1135 % eventdata  reserved - to be defined in a future version of MATLAB
    1136 % handles    structure with handles and user data (see GUIDATA)
    1137
    1138   %  disp('STOPPING');
    1139
    1140
    1141     set(handles.pushbutton_stopOptimize,'UserData',0);
    1142     run = true;
    1143
    1144     sosMenuHandle = handles.popupmenu_SOSSelector;
    1145     sosName = getdfName(sosMenuHandle,'SOS');
    1146
    1147     if isempty(sosName)
    1148         run = false;
    1149     end
    1150
    1151     if run == true
    1152
    1153         % if the number of iterations to run for is blank, run
    1154         numIt = (get(handles.edit_numIt,'String'));
    1155
    1156        set(handles.pushbutton_stopOptimize,'Enable','on');
    1157
    1158         if isempty(numIt)
    1159         %
    1160             command = [sosName,'.optimize(''isGui'',1);'];
    1161             verbosePrint(['Executing command: ','''',command,''''],'sosGui_optimize');
    1162
    1163             set(handles.pushbutton_optimize,'Enable','off');
    1164             evalin('base',command);
    1165
    1166         elseif validate_numIt(handles)
    1167             command = [sosName,'.optimize(',numIt,',''isGui'',1);'];
    1168             verbosePrint(['Executing command: ','''',command,''''],'sosGui_optimize');
    1169
    1170             set(handles.pushbutton_optimize,'Enable','off');
    1171             evalin('base',command);
    1172
    1173         end
    1174     end
    1175
    1176
    1177 % --- Executes on button press in pushbutton_stopOptimize.
    1178 function pushbutton_stopOptimize_Callback(hObject, eventdata, handles)
    1179 % hObject    handle to pushbutton_stopOptimize (see GCBO)
    1180 % eventdata  reserved - to be defined in a future version of MATLAB
    1181 % handles    structure with handles and user data (see GUIDATA)
    1182
    1183   %  disp('STOPPING');
    1184     set(handles.pushbutton_stopOptimize,'UserData',1);
    1185     %guidata(hObject,handles);
    1186     set(handles.pushbutton_stopOptimize,'Enable','off');
    1187     set(handles.pushbutton_optimize,'Enable','on');
    1188
    1189
    1190 function edit_numIt_Callback(hObject, eventdata, handles)
    1191 % hObject    handle to edit_numIt (see GCBO)
    1192 % eventdata  reserved - to be defined in a future version of MATLAB
    1193 % handles    structure with handles and user data (see GUIDATA)
    1194
    1195 % Hints: get(hObject,'String') returns contents of edit_numIt as text
    1196 %        str2double(get(hObject,'String')) returns contents of edit_numIt as a double
    1197     validate_numIt(handles);
    1198
    1199
    1200 function flag = validate_numIt(handles)
    1201     str = get(handles.edit_numIt,'String');
    1202
    1203     if isempty(str)
    1204         flag = 1; % valid if empty
    1205     else
    1206
    1207         errmsg = 'Number of iterations must be a whole number > 0';
    1208         errtitle = 'Invalid numIt!';
    1209
    1210         flag = validatePositiveInteger(str,errmsg,errtitle);
    1211     end
    1212
    1213
    1214 % --- Executes during object creation, after setting all properties.
    1215 function edit_numIt_CreateFcn(hObject, eventdata, handles)
    1216 % hObject    handle to edit_numIt (see GCBO)
    1217 % eventdata  reserved - to be defined in a future version of MATLAB
    1218 % handles    empty - handles not created until after all CreateFcns called
    1219
    1220 % Hint: edit controls usually have a white background on Windows.
    1221 %       See ISPC and COMPUTER.
    1222 if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    1223     set(hObject,'BackgroundColor','white');
    1224 end
    1225
    1226
    1227 % --- Executes during object creation, after setting all properties.
    1228 function pushbutton_stopOptimize_CreateFcn(hObject, eventdata, handles)
    1229 % hObject    handle to pushbutton_stopOptimize (see GCBO)
    1230 % eventdata  reserved - to be defined in a future version of MATLAB
    1231 % handles    empty - handles not created until after all CreateFcns called
    1232
    1233
    1234 % --- Executes on button press in pushbutton_2sample_ttest.
    1235 function pushbutton_2sample_ttest_Callback(hObject, eventdata, handles)
    1236 % hObject    handle to pushbutton_2sample_ttest (see GCBO)
    1237 % eventdata  reserved - to be defined in a future version of MATLAB
    1238 % handles    structure with handles and user data (see GUIDATA)
    1239         create = true;
    1240
    1241         sosMenuHandle = handles.popupmenu_SOSSelector;
    1242         sosName = getdfName(sosMenuHandle,'SOS');
    1243
    1244         if isempty(sosName)
    1245             create = false;
    1246         end
    1247
    1248         if create == true
    1249             create2samplettest_Dialog();
    1250         end
    1251
    1252
    1253
    1254
    1255
    1256
    1257 % --- Executes on button press in pushbutton_singlettest.
    1258 function pushbutton_singlettest_Callback(hObject, eventdata, handles)
    1259 % hObject    handle to pushbutton_singlettest (see GCBO)
    1260 % eventdata  reserved - to be defined in a future version of MATLAB
    1261 % handles    structure with handles and user data (see GUIDATA)
    1262         create = true;
    1263
    1264         sosMenuHandle = handles.popupmenu_SOSSelector;
    1265         sosName = getdfName(sosMenuHandle,'SOS');
    1266
    1267         if isempty(sosName)
    1268             create = false;
    1269         end
    1270
    1271         if create == true
    1272             createsinglesamplettest_Dialog();
    1273         end
    1274
    1275
    1276 % --- Executes on button press in pushbutton_createHardBoundConstraint.
    1277 function pushbutton_createHardBoundConstraint_Callback(hObject, eventdata, handles)
    1278 % hObject    handle to pushbutton_createHardBoundConstraint (see GCBO)
    1279 % eventdata  reserved - to be defined in a future version of MATLAB
    1280 % handles    structure with handles and user data (see GUIDATA)
    1281     createHardBoundConstraint_Dialog();
    1282
    1283 % --- Executes on button press in pushbutton_createSingleSampleSoftDistanceConstraint.
    1284 function pushbutton_createSingleSampleSoftDistanceConstraint_Callback(hObject, eventdata, handles)
    1285 % hObject    handle to pushbutton_createSingleSampleSoftDistanceConstraint (see GCBO)
    1286 % eventdata  reserved - to be defined in a future version of MATLAB
    1287 % handles    structure with handles and user data (see GUIDATA)
    1288     createSingleSampleSoftDistanceConstraint_Dialog();
    1289
    1290 % --- Executes on button press in pushbutton_create2SampleSoftDistanceConstraint.
    1291 function pushbutton_create2SampleSoftDistanceConstraint_Callback(hObject, eventdata, handles)
    1292 % hObject    handle to pushbutton_create2SampleSoftDistanceConstraint (see GCBO)
    1293 % eventdata  reserved - to be defined in a future version of MATLAB
    1294 % handles    structure with handles and user data (see GUIDATA)
    1295     createTwoSampleSoftDistanceConstraint_Dialog();
    1296
    1297
    1298 % --- Executes on button press in pushbutton_createSoftEntropyConstraint.
    1299 function pushbutton_createSoftEntropyConstraint_Callback(hObject, eventdata, handles)
    1300 % hObject    handle to pushbutton_createSoftEntropyConstraint (see GCBO)
    1301 % eventdata  reserved - to be defined in a future version of MATLAB
    1302 % handles    structure with handles and user data (see GUIDATA)
    1303     createSoftEntropyConstraint_Dialog();
    1304
    1305
    1306 % --- Executes on selection change in popupmenu_entropyConstraintSelector.
    1307 function popupmenu_entropyConstraintSelector_Callback(hObject, eventdata, handles)
    1308 % hObject    handle to popupmenu_entropyConstraintSelector (see GCBO)
    1309 % eventdata  reserved - to be defined in a future version of MATLAB
    1310 % handles    structure with handles and user data (see GUIDATA)
    1311     populateEntropyConstraintList(hObject);
    1312
    1313 % Hints: contents = cellstr(get(hObject,'String')) returns popupmenu_entropyConstraintSelector contents as cell array
    1314 %        contents{get(hObject,'Value')} returns selected item from popupmenu_entropyConstraintSelector
    1315 function populateEntropyConstraintList(hObject)
    1316     % get a list of all populations in the base workspace:
    1317     vars = evalin('base','whos()');
    1318
    1319     cObjs = [];
    1320     for i=1:length(vars)
    1321         if strcmp(vars(i).class,'softEntropyConstraint')
    1322             cObjs = [cObjs; {vars(i).name}]; %#ok<AGROW>
    1323         end
    1324     end
    1325
    1326
    1327
    1328     % assign that list to the options in the pop up menu
    1329     warning('off','MATLAB:hg:uicontrol:ParameterValuesMustBeValid');
    1330     set(hObject,'String',cObjs);
    1331
    1332
    1333
    1334 % --- Executes during object creation, after setting all properties.
    1335 function popupmenu_entropyConstraintSelector_CreateFcn(hObject, eventdata, handles)
    1336 % hObject    handle to popupmenu_entropyConstraintSelector (see GCBO)
    1337 % eventdata  reserved - to be defined in a future version of MATLAB
    1338 % handles    empty - handles not created until after all CreateFcns called
    1339
    1340 % Hint: popupmenu controls usually have a white background on Windows.
    1341 %       See ISPC and COMPUTER.
    1342 if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    1343     set(hObject,'BackgroundColor','white');
    1344 end
    1345
    1346
    1347 % --- Executes on button press in pushbutton_plotSoftEntropyConstraint.
    1348 function pushbutton_plotSoftEntropyConstraint_Callback(hObject, eventdata, handles)
    1349 % hObject    handle to pushbutton_plotSoftEntropyConstraint (see GCBO)
    1350 % eventdata  reserved - to be defined in a future version of MATLAB
    1351 % handles    structure with handles and user data (see GUIDATA)
    1352
    1353         create = true;
    1354
    1355         entropyMenuHandle = handles.popupmenu_entropyConstraintSelector;
    1356         entName = getdfName(entropyMenuHandle,'Soft entropy constraint');
    1357
    1358         if isempty(entName)
    1359             create = false;
    1360         end
    1361
    1362         if create == true
    1363             % create the history
    1364             command = [entName,'.plotDistribution();'];
    1365
    1366             evalin('base',command);
    1367         end
    1368
    1369 % --- Executes on button press in pushbutton_refreshSoftEntropyConstraintSelector.
    1370 function pushbutton_refreshSoftEntropyConstraintSelector_Callback(hObject, eventdata, handles)
    1371 % hObject    handle to pushbutton_refreshSoftEntropyConstraintSelector (see GCBO)
    1372 % eventdata  reserved - to be defined in a future version of MATLAB
    1373 % handles    structure with handles and user data (see GUIDATA)
    1374     populateEntropyConstraintList(handles.popupmenu_entropyConstraintSelector);
    1375
    1376
    1377 % --- Executes on button press in pushbutton_createSoftMetaConstraint.
    1378 function pushbutton_createSoftMetaConstraint_Callback(hObject, eventdata, handles)
    1379 % hObject    handle to pushbutton_createSoftMetaConstraint (see GCBO)
    1380 % eventdata  reserved - to be defined in a future version of MATLAB
    1381 % handles    structure with handles and user data (see GUIDATA)
    1382     createSoftMetaConstraint_Dialog();
    1383
    1384
    1385 % --- Executes on button press in pushbutton_calculateOverlap.
    1386 function pushbutton_calculateOverlap_Callback(hObject, eventdata, handles)
    1387 % hObject    handle to pushbutton_calculateOverlap (see GCBO)
    1388 % eventdata  reserved - to be defined in a future version of MATLAB
    1389 % handles    structure with handles and user data (see GUIDATA)
    1390     calculateOverlap_Dialog();
    1391
    1392
    1393
    1394 % --- Executes on button press in pushbutton_createSoftMatchCorrelConstraint.
    1395 function pushbutton_createSoftMatchCorrelConstraint_Callback(hObject, eventdata, handles)
    1396 % hObject    handle to pushbutton_createSoftMatchCorrelConstraint (see GCBO)
    1397 % eventdata  reserved - to be defined in a future version of MATLAB
    1398 % handles    structure with handles and user data (see GUIDATA)
    1399     createSoftMatchCorrelDistanceConstraint_Dialog();
    1400
    1401
    1402 % --- Executes on button press in pushbutton_matchCorrel_ztest.
    1403 function pushbutton_matchCorrel_ztest_Callback(hObject, eventdata, handles)
    1404 % hObject    handle to pushbutton_matchCorrel_ztest (see GCBO)
    1405 % eventdata  reserved - to be defined in a future version of MATLAB
    1406 % handles    structure with handles and user data (see GUIDATA)
    1407         create = true;
    1408
    1409         sosMenuHandle = handles.popupmenu_SOSSelector;
    1410         sosName = getdfName(sosMenuHandle,'SOS');
    1411
    1412         if isempty(sosName)
    1413             create = false;
    1414         end
    1415
    1416         if create == true
    1417             createMatchCorrelztest_Dialog();
    1418         end
    1419
    1420
    1421 % --- Executes on button press in pushbutton_kstest.
    1422 function pushbutton_kstest_Callback(hObject, eventdata, handles)
    1423 % hObject    handle to pushbutton_kstest (see GCBO)
    1424 % eventdata  reserved - to be defined in a future version of MATLAB
    1425 % handles    structure with handles and user data (see GUIDATA)
    1426         create = true;
    1427
    1428         sosMenuHandle = handles.popupmenu_SOSSelector;
    1429         sosName = getdfName(sosMenuHandle,'SOS');
    1430
    1431         if isempty(sosName)
    1432             create = false;
    1433         end
    1434
    1435         if create == true
    1436             createMatchUniformkstest_Dialog();
    1437         end