0001 function varargout = prt_ui_cv_model(varargin)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036 gui_Singleton = 1;
0037 gui_State = struct('gui_Name', mfilename, ...
0038 'gui_Singleton', gui_Singleton, ...
0039 'gui_OpeningFcn', @prt_ui_cv_model_OpeningFcn, ...
0040 'gui_OutputFcn', @prt_ui_cv_model_OutputFcn, ...
0041 'gui_LayoutFcn', [] , ...
0042 'gui_Callback', []);
0043 if nargin && ischar(varargin{1})
0044 gui_State.gui_Callback = str2func(varargin{1});
0045 end
0046
0047 if nargout
0048 [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
0049 else
0050 gui_mainfcn(gui_State, varargin{:});
0051 end
0052
0053
0054
0055
0056 function prt_ui_cv_model_OpeningFcn(hObject, eventdata, handles, varargin)
0057
0058
0059
0060
0061
0062
0063
0064 handles.output = hObject;
0065
0066 Tag='model_run';
0067 F = findall(allchild(0),'Flat','Tag',Tag);
0068 if length(F) > 1
0069
0070 close(F(2:end))
0071 F = F(1);
0072 uistack(F,'top')
0073 elseif length(F)==1
0074 uistack(F,'top')
0075 else
0076 set(handles.figure1,'Tag',Tag)
0077
0078 set(handles.figure1,'Name','PRoNTo :: Run model')
0079
0080 S0= spm('WinSize','0',1);
0081 if ispc
0082 PF='MS Sans Serif';
0083 else
0084 PF= spm_platform('fonts');
0085 PF=PF.helvetica;
0086 end
0087 tmp = [S0(3)/1280 (S0(4))/800];
0088 ratio=min(tmp)*[1 1 1 1];
0089 FS = 1 + 0.85*(min(ratio)-1);
0090 x=get(handles.figure1,'Position');
0091 set(handles.figure1,'DefaultTextFontSize',FS*12,...
0092 'DefaultUicontrolFontSize',FS*12,...
0093 'DefaultTextFontName',PF,...
0094 'DefaultAxesFontName',PF,...
0095 'DefaultUicontrolFontName',PF)
0096 set(handles.figure1,'Position',ratio.*x)
0097 set(handles.figure1,'Resize','on')
0098
0099 color=prt_get_defaults('color');
0100 set(handles.figure1,'Color',color.bg1)
0101 aa=get(handles.figure1,'children');
0102 for i=1:length(aa)
0103 if strcmpi(get(aa(i),'type'),'uipanel')
0104 set(aa(i),'BackgroundColor',color.bg2)
0105 bb=get(aa(i),'children');
0106 if ~isempty(bb)
0107 for j=1:length(bb)
0108 if ~isempty(find(strcmpi(get(bb(j),'Style'),{'text',...
0109 'radiobutton','checkbox'})))
0110 set(bb(j),'BackgroundColor',color.bg2)
0111 elseif ~isempty(find(strcmpi(get(bb(j),'Style'),'pushbutton')))
0112 set(bb(j),'BackgroundColor',color.fr)
0113 end
0114 set(bb(j),'FontUnits','pixel')
0115 xf=get(bb(j),'FontSize');
0116 set(bb(j),'FontSize',ceil(FS*xf),'FontName',PF,...
0117 'FontUnits','normalized','Units','normalized')
0118 end
0119 end
0120 elseif strcmpi(get(aa(i),'type'),'uicontrol')
0121 if ~isempty(find(strcmpi(get(aa(i),'Style'),{'text',...
0122 'radiobutton','checkbox'})))
0123 set(aa(i),'BackgroundColor',color.bg1)
0124 elseif ~isempty(find(strcmpi(get(aa(i),'Style'),'pushbutton')))
0125 set(aa(i),'BackgroundColor',color.fr)
0126 end
0127 end
0128 set(aa(i),'FontUnits','pixel')
0129 xf=get(aa(i),'FontSize');
0130 if ispc
0131 set(aa(i),'FontSize',ceil(FS*xf),'FontName',PF,...
0132 'FontUnits','normalized','Units','normalized')
0133 else
0134 set(aa(i),'FontSize',ceil(FS*xf),'FontName',PF,...
0135 'Units','normalized')
0136 end
0137 end
0138
0139
0140 set(handles.unslist,'Enable','off')
0141 set(handles.sellist,'Enable','off')
0142 set(handles.selallbutt,'Enable','off')
0143 set(handles.runbutt,'Enable','off')
0144 end
0145
0146 guidata(hObject, handles);
0147
0148
0149
0150
0151
0152
0153 function varargout = prt_ui_cv_model_OutputFcn(hObject, eventdata, handles)
0154
0155
0156
0157
0158
0159
0160 varargout{1} = handles.output;
0161
0162
0163
0164 function edit_prt_Callback(hObject, eventdata, handles)
0165
0166
0167
0168
0169
0170
0171 handles.fname=get(handles.edit_prt,'String');
0172 if exist('PRT','var')
0173 clear PRT
0174 end
0175 try
0176 load(handles.fname)
0177 handles.dat=PRT;
0178 catch
0179 beep
0180 disp('Could not load file')
0181 return
0182 end
0183
0184 if ~isfield(handles.dat,'model')
0185 beep
0186 disp('No model found in this PRT')
0187 disp('Please specify model first')
0188 delete(handles.figure1)
0189 end
0190 list={handles.dat.model(:).model_name};
0191 set(handles.unslist,'String',list)
0192 set(handles.sellist,'String',{''})
0193 handles.models=cell(1,2);
0194 handles.models{1}=1:length(list);
0195 handles.models{2}=[];
0196 set(handles.unslist,'Enable','on')
0197 set(handles.sellist,'Enable','on')
0198 set(handles.selallbutt,'Enable','on')
0199
0200
0201 guidata(hObject, handles);
0202
0203
0204
0205 function edit_prt_CreateFcn(hObject, eventdata, handles)
0206
0207
0208
0209
0210
0211
0212 if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
0213 set(hObject,'BackgroundColor','white');
0214 end
0215
0216
0217
0218 function br_prt_Callback(hObject, eventdata, handles)
0219
0220
0221
0222 handles.fname=spm_select(1,'.mat','Select PRT.mat',[],pwd,'PRT.mat');
0223 set(handles.edit_prt,'String',handles.fname)
0224 if exist('PRT','var')
0225 clear PRT
0226 end
0227 try
0228 load(handles.fname)
0229 handles.dat=PRT;
0230 catch
0231 beep
0232 disp('Could not load file')
0233 return
0234 end
0235
0236 if ~isfield(handles.dat,'model')
0237 beep
0238 disp('No model found in this PRT')
0239 disp('Please specify model first')
0240 return
0241 end
0242 list={handles.dat.model(:).model_name};
0243 set(handles.unslist,'String',list)
0244 set(handles.sellist,'String',{''})
0245 handles.models=cell(1,2);
0246 handles.models{1}=1:length(list);
0247 handles.models{2}=0;
0248 set(handles.unslist,'Enable','on')
0249 set(handles.sellist,'Enable','on')
0250 set(handles.selallbutt,'Enable','on')
0251
0252
0253 guidata(hObject, handles);
0254
0255
0256
0257 function unslist_Callback(hObject, eventdata, handles)
0258
0259
0260
0261
0262
0263
0264 val=get(handles.unslist,'Value');
0265 if ~any(handles.models{2})
0266 handles.models{2}=handles.models{1}(val);
0267 else
0268 handles.models{2}=[handles.models{2},handles.models{1}(val)];
0269 end
0270 indm=handles.models{1}(val);
0271 handles.models{1}=setxor(handles.models{1},indm);
0272 list={handles.dat.model(:).model_name};
0273 if isempty(handles.models{1})
0274 handles.models{1}=0;
0275 listu={''};
0276 else
0277 listu=list(handles.models{1});
0278 end
0279 if any(handles.models{2}==0)
0280 return
0281 end
0282 lists=list(handles.models{2});
0283 set(handles.unslist,'String',listu)
0284 set(handles.unslist,'Value',1)
0285 set(handles.sellist,'String',lists)
0286 set(handles.sellist,'Value',length(lists))
0287 set(handles.runbutt,'Enable','on')
0288
0289 guidata(hObject, handles);
0290
0291
0292 function unslist_CreateFcn(hObject, eventdata, handles)
0293
0294
0295
0296
0297
0298
0299 if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
0300 set(hObject,'BackgroundColor','white');
0301 end
0302
0303
0304
0305 function sellist_Callback(hObject, eventdata, handles)
0306
0307
0308
0309
0310
0311
0312 val=get(handles.sellist,'Value');
0313 if ~any(handles.models{1})
0314 handles.models{1}=handles.models{2}(val);
0315 else
0316 handles.models{1}=[handles.models{1},handles.models{2}(val)];
0317 end
0318 indm=handles.models{2}(val);
0319 handles.models{2}=setxor(handles.models{2},indm);
0320 list={handles.dat.model(:).model_name};
0321 if isempty(handles.models{2})
0322 handles.models{2}=0;
0323 lists={''};
0324 else
0325 lists=list(handles.models{2});
0326 end
0327 if any(handles.models{1}==0)
0328 return
0329 end
0330 listu=list(handles.models{1});
0331 set(handles.unslist,'String',listu)
0332 set(handles.unslist,'Value',length(listu))
0333 set(handles.sellist,'String',lists)
0334 set(handles.sellist,'Value',1)
0335
0336 guidata(hObject, handles);
0337
0338
0339 function sellist_CreateFcn(hObject, eventdata, handles)
0340
0341
0342
0343
0344
0345
0346 if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
0347 set(hObject,'BackgroundColor','white');
0348 end
0349
0350
0351
0352 function selallbutt_Callback(hObject, eventdata, handles)
0353
0354
0355
0356 list={handles.dat.model(:).model_name};
0357 handles.models{1}=0;
0358 handles.models{2}=1:length(list);
0359 listu={''};
0360 lists=list(handles.models{2});
0361 set(handles.unslist,'String',listu)
0362 set(handles.unslist,'Value',1)
0363 set(handles.sellist,'String',lists)
0364 set(handles.sellist,'Value',1)
0365 set(handles.runbutt,'Enable','on')
0366
0367 guidata(hObject, handles);
0368
0369
0370
0371 function runbutt_Callback(hObject, eventdata, handles)
0372
0373
0374
0375 if ~any(handles.models{2})
0376 beep
0377 disp('Select a model to run')
0378 return
0379 end
0380 PRT=handles.dat;
0381 list={PRT.model(:).model_name};
0382 for i=1:length(handles.models{2})
0383 in.fname = handles.fname;
0384 in.model_name = list{handles.models{2}(i)};
0385 disp('--------------------------------------------------------')
0386 disp(['Running model ',char(in.model_name)])
0387 disp('--------------------------------------------------------')
0388 mid = prt_init_model(PRT, in);
0389
0390 if strcmp(PRT.model(mid).input.machine.function,'prt_machine_mckr')
0391 prt_cv_mckr(PRT,in);
0392 else
0393 prt_cv_model(PRT, in);
0394 end
0395 disp('--------------------------------------------------------')
0396 disp(['Model ',char(in.model_name),' run completed'])
0397 disp('--------------------------------------------------------')
0398 end
0399 delete(handles.figure1)