0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022 function varargout = civ_3D(varargin)
0023
0024
0025
0026 gui_Singleton = 1;
0027 gui_State = struct('gui_Name', mfilename, ...
0028 'gui_Singleton', gui_Singleton, ...
0029 'gui_OpeningFcn', @civ_3D_OpeningFcn, ...
0030 'gui_OutputFcn', @civ_3D_OutputFcn, ...
0031 'gui_LayoutFcn', [] , ...
0032 'gui_Callback', []);
0033 if nargin & isstr(varargin{1})
0034 gui_State.gui_Callback = str2func(varargin{1});
0035 end
0036
0037 if nargout
0038 [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
0039 else
0040 gui_mainfcn(gui_State, varargin{:});
0041 end
0042
0043
0044
0045
0046
0047 function civ_3D_OpeningFcn(hObject, eventdata, handles, varargin)
0048
0049
0050
0051
0052
0053 global test_batch patch_new_exe
0054
0055
0056
0057
0058
0059
0060
0061 handles.output = hObject;
0062
0063 guidata(hObject, handles);
0064
0065
0066 filebase='';
0067 nom_type=[];
0068 ext=[];
0069 testall=0;
0070 browse=[];
0071
0072
0073 if ~isempty(varargin)
0074 varcell=varargin{1};
0075 filebase=varcell{1};
0076 nom_type_read=varcell{2};
0077 num1=varcell{3};
0078 num2=varcell{4};
0079 num_a=varcell{5};
0080 num_b=varcell{6};
0081 subdir=varcell{7};
0082 ind_opening=varcell{8};
0083 ind_a_opening=varcell{9};
0084 ind_b_opening=varcell{10};
0085 ext=varcell{11};
0086 else
0087 num1=1;
0088 num2=2;
0089 num_a=1;
0090 num_b=1;
0091 subdir='A';
0092 ind_opening=1;
0093 ind_a_opening=1;
0094 ind_b_opening=2;
0095 end
0096
0097 if exist('ext','var') & length(ext)>1 & (~isempty(imformats(ext([2:end])))|...
0098 isequal(ext,'.avi')|isequal(ext,'.AVI'));
0099 browse.ext_ima=ext;
0100 if exist('nom_type_read','var')
0101 browse.nom_type_ima=nom_type_read;
0102 end
0103 elseif isequal(ext,'.nc')
0104 if exist('nom_type_read','var')
0105 browse.nom_type_nc=nom_type_read;
0106 end
0107 end
0108 set(handles.displ_filebase,'String',filebase);
0109 set(handles.ImaDoc,'UserData',testall);
0110 set(handles.browse_root,'UserData',browse)
0111 set(handles.ImaDoc,'String',ext)
0112
0113
0114
0115
0116
0117
0118
0119 path_uvmat=which('uvmat');
0120 path_UVMAT=fileparts(path_uvmat);
0121 if isunix
0122 syst='LINUX'
0123
0124 xmlfile=fullfile(path_UVMAT,'PARAM_LINUX.xml')
0125 if exist(xmlfile,'file')
0126 t=xmltree(xmlfile);
0127 sparam=convert(t);
0128 end
0129 else
0130 syst='WIN'
0131
0132 xmlfile=fullfile(path_UVMAT,'PARAM_WIN.xml');
0133 if exist(xmlfile,'file')
0134 t=xmltree(xmlfile);
0135 sparam=convert(t);
0136 end
0137 end
0138
0139 patch_new_exe='';
0140 todo_patch='';
0141 sge=0;
0142
0143 if isfield(sparam,'PatchNew_exe')
0144 patch_new_exe=sparam.PatchNew_exe;
0145 end
0146 if isfield(sparam,'Todo_path')
0147 todo_path=sparam.Todo_path
0148 end
0149 if isfield(sparam,'SGE')
0150 sge=str2num(sparam.SGE);
0151 end
0152 name_todo=fullfile(todo_path,'TODO.txt')
0153 test_batch=1;
0154 if ~sge
0155 if isequal(todo_path,'') |isequal(todo_path,[])
0156 ['no batch distributed processing available:file path TODO.txt not defined in UVMAT/PARAM_' syst]
0157 test_batch=0;
0158 end
0159 if exist(name_todo,'file')~=2
0160 hwarn=warndlg(['no batch distributed processing available, queue file ' name_todo ' absent']);
0161
0162 end
0163 end
0164
0165
0166 if test_batch==0
0167 set(handles.BATCH,'BackgroundColor',[0.831 0.816 0.784])
0168 end
0169
0170 set(handles.subdir_civ1,'String',subdir)
0171 set(handles.subdir_civ2,'String',subdir)
0172
0173
0174 if isequal(ind_opening,[])
0175 ind_opening=1;
0176 end
0177
0178 enable_civ1(handles,'off')
0179 enable_civ2(handles,'off')
0180 desable_fix1(handles)
0181 desable_patch1(handles)
0182 desable_fix2(handles)
0183 desable_patch2(handles)
0184 set(handles.CIV1,'Value',0)
0185 set(handles.FIX1,'Value',0)
0186 set(handles.PATCH1,'Value',0)
0187 set(handles.CIV2,'Value',0)
0188 set(handles.FIX2,'Value',0)
0189 set(handles.PATCH2,'Value',0)
0190 set(handles.frame_subdirciv2,'BackgroundColor',[0.831 0.816 0.784])
0191 if isequal(ind_opening,1)
0192 set(handles.CIV1,'Value',1)
0193 enable_civ1(handles,'on')
0194 elseif isequal(ind_opening,2)
0195 set(handles.FIX1,'Value',1)
0196 enable_fix1(handles)
0197 elseif isequal(ind_opening,3)
0198 set(handles.PATCH1,'Value',1)
0199 enable_patch1(handles)
0200 elseif isequal(ind_opening,4)
0201 set(handles.CIV2,'Value',1)
0202 enable_civ2(handles,1)
0203 elseif isequal(ind_opening,5)
0204 set(handles.FIX2,'Value',1)
0205 enable_fix2(handles)
0206 set(handles.frame_subdirciv2,'BackgroundColor',[1 1 0])
0207 set(handles.list_pair_civ2,'Enable','On')
0208 set(handles.list_pair_civ2,'Enable','On')
0209 elseif isequal(ind_opening,6)
0210 set(handles.PATCH2,'Value',1)
0211 enable_patch2(handles)
0212 set(handles.frame_subdirciv2,'BackgroundColor',[1 1 0])
0213 set(handles.list_pair_civ2,'Enable','On')
0214 end
0215
0216
0217 if isempty(num2)|isequal(num2,num1)
0218 num_ref_i=num1;
0219 else
0220 num_ref_i=floor((num1+num2)/2);
0221 browse.incr_pair(1)=num2-num1;
0222 browse.incr_pair(2)=0;
0223 end
0224 if isempty(num_b)|isequal(num_a,num_b)
0225 if isempty(num_a)
0226 num_ref_j=1;
0227 else
0228 num_ref_j=num_a;
0229 end
0230 else
0231 num_ref_j=floor((num_a+num_b)/2);
0232 browse.incr_pair(2)=num_b-num_a;
0233 end
0234 set(handles.first_i,'String',num2str(num_ref_i));
0235 set(handles.last_i,'String',num2str(num_ref_i));
0236 set(handles.first_j,'String',num2str(num_ref_j));
0237 set(handles.last_j,'String',num2str(num_ref_j));
0238 set(handles.ref_i,'String',num2str(num_ref_i));
0239 set(handles.ref_j,'String',num2str(num_ref_j));
0240 set(handles.browse_root,'UserData',browse);
0241 if ~isempty(varargin)
0242 displ_filebase_Callback(hObject, eventdata, handles);
0243 end
0244
0245 set(handles.waitbar_1,'Position',[0.946 0.877 0.03 0.001])
0246 set(handles.waitbar_patch1,'Position',[0.946 0.626 0.03 0.001])
0247 set(handles.waitbar_civ2,'Position',[0.946 0.406 0.03 0.001])
0248 set(handles.waitbar_patch2,'Position',[0.946 0.187 0.03 0.001])
0249
0250
0251
0252
0253
0254 function varargout = civ_3D_OutputFcn(hObject, eventdata, handles)
0255
0256
0257
0258
0259
0260 varargout{1} = handles.output;
0261
0262
0263
0264 function browse_root_Callback(hObject, eventdata, handles)
0265
0266 filebase=get(handles.displ_filebase,'String');
0267 oldfile='';
0268 if isempty(filebase)|isequal(filebase,'')
0269 dir_perso=prefdir;
0270 profil_perso=fullfile(dir_perso,'uvmat_perso.mat')
0271 if exist(profil_perso,'file')
0272 h=load (profil_perso);
0273 if isfield(h,'filebase')&ischar(h.filebase)
0274 oldfile=h.filebase;
0275 end
0276 if isfield(h,'RootPath')&ischar(h.RootPath)
0277
0278 oldfile=h.RootPath;
0279 end
0280 end
0281 else
0282 oldfile=filebase;
0283 end
0284 testall=get(handles.ImaDoc,'UserData');
0285 ind_opening=1;
0286 browse.incr_pair=[0 0];
0287
0288 menu={'*.*', 'All Files (*.*)'; '*.xml;*.vol; *.avi;*.AVI','(*.xml,*.civ,*.avi,*.vol)'; ...
0289 '*.xml', '.xml files';'*.civ', '.civ files';...
0290 '*.avi;*.AVI', '.avi files';'*.vol', '.vol files'};
0291
0292 [FileName, PathName, filtindex] = uigetfile( menu, 'Pick a file',oldfile);
0293 fileinput=[PathName FileName];
0294 sizf=size(fileinput);
0295 if (~ischar(fileinput)|~isequal(sizf(1),1)),return;end
0296 [path,name,ext]=fileparts(fileinput);
0297 testeditxml=0;
0298 if isequal(ext,'.xml')
0299 testeditxml=1;
0300 t_browse=xmltree(fileinput);
0301 head_element=get(t_browse,1);
0302 if isfield(head_element,'name')& isequal(head_element.name,'ImaDoc')
0303 testeditxml=0;
0304 end
0305 end
0306 if testeditxml==1 | isequal(ext,'.xls')
0307 heditxml=editxml({fileinput});
0308 set(heditxml,'Tag','browser')
0309 waitfor(heditxml,'Tag','idle')
0310 if ~ishandle(heditxml)
0311 return
0312 end
0313 attr=findobj(get(heditxml,'children'),'Tag','CurrentAttributes');
0314 set(handles.browse,'UserData',fileinput)
0315 fileinput=get(attr,'UserData');
0316 if ~exist(fileinput,'file')
0317 return
0318 end
0319 end
0320 [RootPath,RootFile,field_count,str2,str_a,str_b,ext,nom_type,subdir]=name2display(fileinput);
0321 filebase=fullfile(RootPath,RootFile);
0322 if isequal(get(handles.compare,'Value'),1)
0323 browse=get(handles.browse_root,'UserData');
0324 else
0325 browse=[];
0326 end
0327 if length(ext)>1 & (~isempty(imformats(ext([2:end])))||...
0328 isequal(lower(ext),'.avi')||isequal(ext,'.vol'));
0329 browse.ext_ima=ext;
0330 browse.nom_type_ima=nom_type;
0331 browse.field_count=str2num(field_count);
0332 end
0333 set(handles.ImaDoc,'String',ext);
0334
0335 if isequal(ext,'.nc')
0336 browse.nom_type_nc=nom_type;
0337 ind_opening=2;
0338 Data=nc2struct(fileinput,[]);
0339 if isfield(Data,'fix') & isequal(Data.fix,1)
0340 ind_opening=3;
0341 end
0342 if isfield(Data,'patch') & isequal(Data.patch,1)
0343 ind_opening=4;
0344 end
0345 if isfield(Data,'civ2') & isequal(Data.civ2,1)
0346 ind_opening=5;
0347 end
0348 if isfield(Data,'fix2') & isequal(Data.fix2,1)
0349 ind_opening=6;
0350 end
0351 if isfield(Data,'pixcmx') & isequal(Data,'pixcmy')
0352 browse.pxcmx=Data.pixcmx;
0353 browse.pxcmy=Data.pixcmy;
0354 end
0355 testciv=1;
0356 subdir='';
0357 if testciv
0358 [Pathbase,Namebase]=fileparts(filebase)
0359 [Pathprev,subdir,extdir]=fileparts(Pathbase)
0360 subdir=[subdir extdir]
0361
0362 filebase=fullfile(Pathprev,Namebase)
0363
0364 end
0365 set(handles.subdir_civ1,'String',subdir);
0366 set(handles.subdir_civ2,'String',subdir);
0367 browse.testciv=testciv;
0368 browse.ind_opening=ind_opening;
0369 end
0370 set(handles.displ_filebase,'String',filebase);
0371 set(handles.ImaDoc,'String',ext);
0372 if ~isempty(str2num(field_count))
0373 ref_i=str2num(field_count);
0374 if ~isempty(str2num(str2))
0375 ref_i=floor((ref_i+str2num(str2))/2);
0376 browse.incr_pair(1)=str2num(str2)-str2num(field_count);
0377 browse.incr_pair(2)=0;
0378 end
0379 set(handles.first_i,'String',num2str(ref_i));
0380 set(handles.last_i,'String',num2str(ref_i));
0381 set(handles.ref_i,'String',num2str(ref_i));
0382 end
0383 if isempty(str2num(str_a))
0384 set(handles.ref_j,'String','1');
0385 else
0386 ref_j=str2num(str_a);
0387 if ~isempty(str2num(str_b))
0388 ref_j=floor((str2num(str_a)+str2num(str_b))/2);
0389 browse.incr_pair(2)=str2num(str_b)-str2num(str_a);
0390 end
0391 set(handles.first_j,'String',num2str(ref_j));
0392 set(handles.last_j,'String',num2str(ref_j));
0393 set(handles.ref_j,'String',num2str(ref_j));
0394 end;
0395 if isequal(ind_opening,1)
0396 set(handles.CIV1,'Value',1)
0397 enable_civ1(handles,'on')
0398 elseif isequal(ind_opening,2)
0399 set(handles.FIX1,'Value',1)
0400 enable_fix1(handles)
0401 elseif isequal(ind_opening,3)
0402 set(handles.PATCH1,'Value',1)
0403 enable_patch1(handles)
0404 elseif isequal(ind_opening,4)
0405 set(handles.CIV2,'Value',1)
0406 enable_civ2(handles,1)
0407 elseif isequal(ind_opening,5)
0408 set(handles.FIX2,'Value',1)
0409 enable_fix2(handles)
0410 set(handles.frame_subdirciv2,'BackgroundColor',[1 1 0])
0411 set(handles.list_pair_civ2,'Enable','On')
0412 set(handles.list_pair_civ2,'Enable','On')
0413 elseif isequal(ind_opening,6)
0414 set(handles.PATCH2,'Value',1)
0415 enable_patch2(handles)
0416 set(handles.frame_subdirciv2,'BackgroundColor',[1 1 0])
0417 set(handles.list_pair_civ2,'Enable','On')
0418 end
0419 set(handles.browse_root,'UserData',browse);
0420 testall=isequal(menu(filtindex,1),{'*.*'});
0421 set(handles.ImaDoc,'UserData',testall);
0422
0423 displ_filebase_Callback(hObject, eventdata, handles);
0424
0425
0426
0427 function ImaDoc_Callback(hObject, eventdata, handles)
0428 displ_filebase_Callback(hObject, eventdata, handles)
0429
0430
0431
0432
0433 function displ_filebase_Callback(hObject, eventdata, handles)
0434
0435 global test_batch
0436 set(gcf,'Pointer','watch')
0437 ext_ima=[];
0438 nom_type_ima=[];
0439 field_count=1;
0440 nom_type_nc=[];
0441 npx=[];
0442 npy=[];
0443 TimeUnit='s';
0444 CoordUnit='cm';
0445 pxcmx_search=[];
0446 pxcmy_search=[];
0447 filebase=get(handles.displ_filebase,'String');
0448
0449 ext=get(handles.ImaDoc,'String');
0450 browse=get(handles.browse_root,'UserData');
0451 if ~isempty(browse)
0452 if isfield(browse,'ext_ima')
0453 ext_ima=browse.ext_ima;
0454 end
0455 if isfield(browse,'nom_type_ima')
0456 nom_type_ima=browse.nom_type_ima;
0457 end
0458 if isfield(browse,'field_count')
0459 field_count=browse.field_count;
0460 end
0461 end
0462
0463
0464 first_i=str2num(get(handles.first_i,'String'));
0465 if isempty(first_i)| first_i < 1
0466 first_i=1;
0467 end
0468 last_i=str2num(get(handles.last_i,'String'));
0469 if isempty(last_i)| last_i < first_i
0470 last_i=first_i;
0471 end
0472 first_j=str2num(get(handles.first_j,'String'));
0473 if isempty(first_j)| first_j < 1
0474 first_j=1;
0475 end
0476 last_j=str2num(get(handles.last_j,'String'));
0477 if isempty(last_j)| last_j < first_j
0478 last_j=first_j;
0479 end
0480 incr_i=str2num(get(handles.incr_i,'String'));
0481 if isempty(incr_i) | incr_i < 1;
0482 set(handles.incr_i,'String','1')
0483 end
0484 incr_j=str2num(get(handles.incr_j,'String'));
0485 if isempty(incr_j) | incr_j < 1;
0486 set(handles.incr_j,'String','1')
0487 end
0488 dt=[];
0489 testmode=0;
0490 nbfield=1;
0491 if isfield(browse,'pxcmx') & isfield(browse,'pxcmy')
0492 pxcmx=num2str(browse.pxcmx);
0493 pxcmy=num2str(browse.pxcmy);
0494 else
0495 pxcmx=1;
0496 pxcmy=1;
0497 end
0498
0499 if ~isequal(ext,'.xml') & ~ isequal(ext,'.avi')& ~ isequal(ext,'.AVI')
0500 if exist([filebase '.xml'],'file')
0501 ext='.xml';
0502 set(handles.ImaDoc,'String','.xml')
0503 elseif exist([filebase '.civ_3D'],'file')
0504 ext='.civ_3D';
0505 set(handles.ImaDoc,'String','.civ_3D')
0506 elseif exist([filebase '.avi'],'file')
0507 ext='.avi';
0508 set(handles.ImaDoc,'String','.avi')
0509 elseif exist([filebase '.AVI'],'file')
0510 ext='.AVI';
0511 set(handles.ImaDoc,'String','.AVI')
0512 end
0513 end
0514
0515 mode='';
0516
0517 if isequal(ext,'.xml')
0518 set(handles.ref_i,'Visible','On')
0519 set(handles.ref_j,'Visible','On')
0520 set(handles.dt,'Visible','Off')
0521 set(handles.dt_text,'String','ref. ind.')
0522 elseif isequal(ext,'.avi') | isequal(ext,'.AVI')
0523 set(handles.ref_j,'Visible','Off')
0524 set(handles.dt,'Visible','Off')
0525 set(handles.dt_text,'String','ref. ind.')
0526 else
0527 set(handles.ref_i,'Visible','Off')
0528 set(handles.ref_j,'Visible','Off')
0529 set(handles.dt,'Visible','On')
0530 set(handles.dt_text,'String','dt(ms)=')
0531 end
0532
0533 if isequal(ext,'.xml')
0534 [XmlData,warntext]=imadoc2struct([filebase '.xml']);
0535 if isfield(XmlData,'Heading')&&isfield(XmlData.Heading','ImageName')
0536 [PP,FF,fc,str2,str_a,str_b,ext_ima_read,nom_type_read]=name2display(XmlData.Heading.ImageName);
0537 end
0538 if isfield(XmlData,'Camera')
0539 if isfield(XmlData.Camera,'TimeUnit')
0540 TimeUnit=XmlData.Camera.TimeUnit;
0541 end
0542 if isfield(XmlData.Camera,'ImageSize')
0543 ImageSize=XmlData.Camera.ImageSize;
0544 if ~isempty(ImageSize)&& ~isempty(ImageSize)
0545 xindex=findstr(ImageSize,'x');
0546 if length(xindex)>=2
0547 npx=str2num(ImageSize(1:xindex(1)-1));
0548 npy=str2num(ImageSize(xindex(1)+1:xindex(2)-1));
0549 end
0550 end
0551 end
0552 end
0553 pxcmx_search=1;
0554 pxcmy_search=1;
0555 if isfield(XmlData,'GeometryCalib')
0556 tsai=XmlData.GeometryCalib;
0557 if isfield(tsai,'f') & isfield(tsai,'Tz') & isfield(tsai,'dpx') & isfield(tsai,'dpy')& isfield(tsai,'R')
0558 rot2D=tsai.R([1:2],[1,2]);
0559 pxcmx_search=tsai.f * sqrt(det(rot2D))/(tsai.Tz*tsai.dpx);
0560 pxcmy_search=tsai.f * sqrt(det(rot2D))/(tsai.Tz*tsai.dpy);
0561 end
0562 if isfield(tsai,'CoordUnit')
0563 CoordUnit=tsai.CoordUnit;
0564 end
0565 end
0566 if isempty(ext_ima_read)
0567 ext_ima='.png';
0568 else
0569 ext_ima=ext_ima_read;
0570 end
0571 if isempty(nom_type_read)
0572 nom_type_ima='_i_j';
0573 warndlg_uvmat('no ImageName defined in ImaDoc/Heading, take _i_j indexing by default','WARNING')
0574 else
0575 nom_type_ima=nom_type_read;
0576 end
0577
0578 elseif isequal(ext,'.avi')|isequal(ext,'.AVI')
0579 nom_type_ima='avi';
0580 ext_ima=ext;
0581 set(handles.mode,'String',{'series(Di)'})
0582 dt=0.04;
0583 if exist([filebase ext],'file')==2
0584 info=aviinfo([filebase ext]);
0585 dt=1/info.FramesPerSecond;
0586 nbfield=info.NumFrames;
0587 end
0588 time=(dt*[0:nbfield-1])';
0589 set(handles.dt,'String',num2str(dt*1000));
0590
0591
0592 elseif ~isequal(ext,'.nc')
0593 subdir=get(handles.subdir_civ1,'String');
0594 incr_pair=[0 0];
0595 if isfield(browse,'incr_pair')
0596 incr_pair=browse.incr_pair;
0597 end
0598 nbdetect=0;
0599 field_i=field_count;
0600 idetect=1;
0601
0602 while idetect==1
0603 field_i=field_i+1;
0604
0605 [imagename,idetect]=name_generator(filebase,field_i,1,ext_ima,nom_type_ima);
0606 if isequal(nom_type_ima,'none')
0607 idetect=0;
0608 nbdetect=1;
0609 end
0610
0611 nbdetect=nbdetect+idetect;
0612 end
0613
0614 nb_field=field_i;
0615 field_i=field_count;
0616 idetect=1;
0617 while idetect==1
0618 field_i=field_i-1;
0619 [imagename,idetect]=name_generator(filebase,field_i,1,ext_ima,nom_type_ima);
0620 if isequal(nom_type_ima,'none')
0621 idetect=0;
0622 nbdetect=1;
0623 end
0624 nbdetect=nbdetect+idetect;
0625 end
0626 first_i=max(field_i+1,1);
0627
0628 dt=(1/1000)*str2num(get(handles.dt,'String'));
0629 time=(dt*[0:nb_field-1])';
0630
0631
0632
0633 set(handles.mode,'String',{'series(Di)'})
0634 end
0635 if isequal(nom_type_ima,'none')
0636 first_i=1;
0637 last_i=1;
0638 first_j=1;
0639 last_j=1;
0640 end
0641 if exist('time','var')
0642 siztime=size(time);
0643 nbfield=siztime(1);
0644 nbfield2=siztime(2);
0645 set(handles.displ_filebase,'UserData',time);
0646 set(handles.dt_unit,'String',['m' TimeUnit]);
0647 set(handles.TimeUnit,'String',TimeUnit);
0648 set(handles.nb_field,'String',num2str(nbfield));
0649 set(handles.nb_field2,'String',num2str(nbfield2));
0650 end
0651 set(handles.CoordUnit,'String',[CoordUnit '/'])
0652 set(handles.pxcmx,'String',num2str(pxcmx));
0653 set(handles.pxcmy,'String',num2str(pxcmy));
0654 if isempty(pxcmx_search)
0655 set(handles.calcul_search,'UserData',[pxcmx pxcmy]);
0656 else
0657 set(handles.calcul_search,'UserData',[pxcmx_search pxcmy_search]);
0658 end
0659 set(handles.pxcmx,'UserData',npx);
0660 set(handles.pxcmy,'UserData',npy);
0661 set(handles.first_i,'String',num2str(first_i));
0662 set(handles.last_i,'String',num2str(last_i));
0663 set(handles.first_j,'String',num2str(first_j));
0664 set(handles.last_j,'String',num2str(last_j));
0665 browse.ext_ima=ext_ima;
0666 browse.nom_type_ima=nom_type_ima;
0667 set(handles.browse_root,'UserData',browse)
0668
0669
0670 if isequal(get(handles.compare,'Value'),1)
0671 if isequal(nom_type_ima,'_i')| isequal(nom_type_nc,'_i1-i2')|~exist('nbfield2','var')|(nbfield2==1)
0672 set(handles.mode,'String',{'st_series(Di)';'displacement'})
0673 set(handles.mode,'Value',1)
0674 elseif (nbfield==1)
0675 set(handles.mode,'String',{'st_series(Dj)';'displacement'})
0676 set(handles.mode,'Value',1)
0677 else
0678 set(handles.mode,'String',{'st_pair j1-j2';'st_series(Dj)';'st_series(Di)';'displacement'})
0679 if isequal(mode,'volume')
0680 set(handles.mode,'Value',3)
0681 elseif nbfield2 <= 5
0682 set(handles.mode,'Value',1)
0683 end
0684 end
0685 else
0686 if isequal(nom_type_ima,'_i')| isequal(nom_type_nc,'_i1-i2')|~exist('nbfield2','var')|(nbfield2==1)
0687 set(handles.mode,'String',{'series(Di)'})
0688 set(handles.mode,'Value',1)
0689 elseif isequal(nom_type_ima,'png_old')|isequal(nom_type_nc,'netc_old')
0690 set(handles.mode,'String',{'pair j1-j2'})
0691 set(handles.mode,'Value',1)
0692 elseif (nbfield==1)
0693 set(handles.mode,'String',{'series(Dj)'})
0694 set(handles.mode,'Value',1)
0695 else
0696 set(handles.mode,'String',{'pair j1-j2';'series(Dj)';'series(Di)'})
0697 if isequal(mode,'volume')
0698 set(handles.mode,'Value',3)
0699 elseif nbfield2 <= 5
0700 set(handles.mode,'Value',1)
0701 else
0702 set(handles.mode,'Value',2)
0703 end
0704 end
0705 end
0706 mode_Callback(hObject, eventdata, handles)
0707
0708
0709 set(handles.waitbar_1,'Position',[0.946 0.876 0.03 0.001])
0710 set(handles.waitbar_patch1,'Position',[0.946 0.439 0.03 0.001])
0711 set(handles.waitbar_civ2,'Position',[0.946 0.219 0.03 0.001])
0712 set(handles.waitbar_patch2,'Position',[0.946 0.0 0.03 0.001])
0713 set(handles.RUN, 'Enable','On')
0714 set(handles.RUN,'BackgroundColor',[1 0 0])
0715 if isequal(test_batch,1)
0716 set(handles.BATCH, 'Enable','On')
0717 set(handles.BATCH,'BackgroundColor',[1 0 0])
0718 end
0719
0720
0721 dir_perso=prefdir;
0722 profil_perso=fullfile(prefdir,'uvmat_perso.mat');
0723 RootPath=fileparts(filebase);
0724 if exist(profil_perso,'file')
0725 save (profil_perso,'RootPath','-append');
0726 else
0727 txt=ver;
0728 Release=txt(1).Release;
0729 relnumb=str2num(Release(3:4));
0730 if relnumb >= 14
0731 save (profil_perso,'RootPath','-V6');
0732 else
0733 save (profil_perso,'RootPath');
0734 end
0735 end
0736
0737 set(gcf,'Pointer','arrow')
0738
0739
0740
0741
0742 function mode_Callback(hObject, eventdata, handles)
0743 browse=get(handles.browse_root,'UserData');
0744 mode_list=get(handles.mode,'String');
0745 mode_value=get(handles.mode,'Value');
0746 mode=mode_list{mode_value};
0747 displ_num=[];
0748 first_i=str2num(get(handles.first_i,'String'));
0749
0750 time=get(handles.displ_filebase,'UserData');
0751 siztime=size(time);
0752 nbfield=siztime(1);
0753 nbfield2=siztime(2);
0754 indchosen=1;
0755 if isequal(mode,'pair j1-j2')| isequal(mode,'st_pair j1-j2')
0756 dt=1;
0757 displ='';
0758 index=0;
0759
0760 displ_dt=1;
0761 nbfield2=min(nbfield2,10),
0762
0763
0764
0765 for numod_a=1:nbfield2-1
0766 for numod_b=(numod_a+1):nbfield2
0767 index=index+1;
0768 numlist_a(index)=numod_a;
0769 numlist_b(index)=numod_b;
0770 if ~isempty(time)
0771 dt(numod_a,numod_b)=time(first_i,numod_b)-time(first_i,numod_a);
0772 displ_dt(index)=dt(numod_a,numod_b);
0773 else
0774 displ_dt(index)=1
0775 end
0776 end
0777 end
0778 [dtsort,indsort]=sort(displ_dt);
0779 displ_num(1,:)=numlist_a(indsort);
0780 displ_num(2,:)=numlist_b(indsort);
0781 displ_num(3,:)=0;
0782 displ_num(4,:)=0;
0783 set(handles.jtext,'Visible','Off')
0784 set(handles.first_j,'Visible','Off')
0785 set(handles.last_j,'Visible','Off')
0786 set(handles.incr_j,'Visible','Off')
0787 set(handles.nb_field2,'Visible','Off')
0788 set(handles.ref_j,'Visible','Off')
0789 elseif isequal(mode,'series(Dj)') | isequal(mode,'st_series(Dj)')
0790 for index=1:min(nbfield2-1,200)
0791 displ_num(1,index)=-floor(index/2);
0792 displ_num(2,index)=ceil(index/2);
0793 displ_num(3,index)=0;
0794 displ_num(4,index)=0;
0795 end
0796 set(handles.jtext,'Visible','On')
0797 set(handles.first_j,'Visible','On')
0798 set(handles.last_j,'Visible','On')
0799 set(handles.incr_j,'Visible','On')
0800 set(handles.nb_field2,'Visible','On')
0801 set(handles.ref_j,'Visible','On')
0802 if nbfield > 1
0803 set(handles.itext,'Visible','On')
0804 set(handles.first_i,'Visible','On')
0805 set(handles.last_i,'Visible','On')
0806 set(handles.incr_i,'Visible','On')
0807 set(handles.nb_field,'Visible','On')
0808 set(handles.ref_i,'Visible','On')
0809 else
0810 set(handles.itext,'Visible','Off')
0811 set(handles.first_i,'Visible','Off')
0812 set(handles.last_i,'Visible','Off')
0813 set(handles.incr_i,'Visible','Off')
0814 set(handles.nb_field,'Visible','Off')
0815 set(handles.ref_i,'Visible','Off')
0816 end
0817 elseif isequal(mode,'series(Di)') | isequal(mode,'st_series(Di)')
0818 for index=1:min(nbfield-1,200)
0819 displ_num(1,index)=0;
0820 displ_num(2,index)=0;
0821 displ_num(3,index)=-floor(index/2);
0822 displ_num(4,index)=ceil(index/2);
0823 end
0824 set(handles.itext,'Visible','On')
0825 set(handles.first_i,'Visible','On')
0826 set(handles.last_i,'Visible','On')
0827 set(handles.incr_i,'Visible','On')
0828 set(handles.nb_field,'Visible','On')
0829 set(handles.ref_i,'Visible','On')
0830 if nbfield2 > 1
0831 set(handles.jtext,'Visible','On')
0832 set(handles.first_j,'Visible','On')
0833 set(handles.last_j,'Visible','On')
0834 set(handles.incr_j,'Visible','On')
0835 set(handles.nb_field2,'Visible','On')
0836 set(handles.ref_j,'Visible','On')
0837 else
0838 set(handles.jtext,'Visible','Off')
0839 set(handles.first_j,'Visible','Off')
0840 set(handles.last_j,'Visible','Off')
0841 set(handles.incr_j,'Visible','Off')
0842 set(handles.nb_field2,'Visible','Off')
0843 set(handles.ref_j,'Visible','Off')
0844 end
0845 elseif isequal(mode,'displacement')
0846 displ_num(1,1)=0;
0847 displ_num(2,1)=0;
0848 displ_num(3,1)=0;
0849 displ_num(4,1)=0;
0850 if nbfield > 1
0851 set(handles.itext,'Visible','On')
0852 set(handles.first_i,'Visible','On')
0853 set(handles.last_i,'Visible','On')
0854 set(handles.incr_i,'Visible','On')
0855 set(handles.nb_field,'Visible','On')
0856 set(handles.ref_i,'Visible','On')
0857 else
0858 set(handles.itext,'Visible','Off')
0859 set(handles.first_i,'Visible','Off')
0860 set(handles.last_i,'Visible','Off')
0861 set(handles.incr_i,'Visible','Off')
0862 set(handles.nb_field,'Visible','Off')
0863 set(handles.ref_i,'Visible','Off')
0864 end
0865 if nbfield2 > 1
0866 set(handles.jtext,'Visible','On')
0867 set(handles.first_j,'Visible','On')
0868 set(handles.last_j,'Visible','On')
0869 set(handles.incr_j,'Visible','On')
0870 set(handles.nb_field2,'Visible','On')
0871 set(handles.ref_j,'Visible','On')
0872 else
0873 set(handles.jtext,'Visible','Off')
0874 set(handles.first_j,'Visible','Off')
0875 set(handles.last_j,'Visible','Off')
0876 set(handles.incr_j,'Visible','Off')
0877 set(handles.nb_field2,'Visible','Off')
0878 set(handles.ref_j,'Visible','Off')
0879 end
0880 end
0881 set(handles.list_pair_civ1,'UserData',displ_num);
0882 find_netcpair_civ1(hObject, eventdata, handles)
0883 find_netcpair_civ2(hObject, eventdata, handles)
0884
0885
0886
0887
0888
0889 function find_netcpair_civ1(hObject, eventdata, handles)
0890 set(gcf,'Pointer','watch')
0891
0892 filebase=get(handles.displ_filebase,'String');
0893 [filepath,Nme,ext_dir]=fileparts(filebase);
0894 browse=get(handles.browse_root,'UserData');
0895 mode_list=get(handles.mode,'String');
0896 mode_value=get(handles.mode,'Value');
0897 mode=mode_list{mode_value};
0898
0899 nom_type_ima=[];
0900 if isfield(browse,'nom_type_ima')
0901 nom_type_ima=browse.nom_type_ima;
0902 end
0903
0904
0905 nom_type_nc=[];
0906 if isfield(browse,'nom_type_nc')
0907 nom_type_nc=browse.nom_type_nc;
0908 end
0909 if isequal(nom_type_ima,'png_old') | isequal(nom_type_nc,'netc_old')| isequal(nom_type_ima,'raw_SMD')
0910 nom_type_nc='netc_old';
0911 elseif isequal(nom_type_ima,'none')|isequal(nom_type_nc,'none')
0912 nom_type_nc='none';
0913 elseif isequal(nom_type_ima,'avi')|isequal(nom_type_ima,'_i')|isequal(nom_type_ima,'ima_num')|...
0914 isequal(nom_type_nc,'_i1-i2')
0915 nom_type_nc='_i1-i2';
0916 elseif isequal(nom_type_ima,'_i_j1-j2')||isequal(nom_type_nc,'_i1-i2_j1-j2')
0917 nom_type_nc='_i1-i2_j1-j2';
0918 else
0919 if isequal(mode,'series(Di)')|isequal(mode,'st_series(Di)')
0920 nom_type_nc='_i1-i2_j';
0921 else
0922 nom_type_nc='_i_j1-j2';
0923 end
0924 end
0925 browse.nom_type_nc=nom_type_nc;
0926 set(handles.browse_root,'UserData',browse)
0927
0928
0929 subdir_civ1=get(handles.subdir_civ1,'String');
0930 first_i=str2num(get(handles.first_i,'String'));
0931 last_i=str2num(get(handles.last_i,'String'));
0932 incr=str2num(get(handles.incr_i,'String'));
0933 num1=first_i:incr:last_i;
0934 if isempty(num1)
0935 set(handles.list_pair_civ1,'String',{''});
0936 return
0937 end
0938 ref_i=str2num(get(handles.ref_i,'String'));
0939 if isequal(mode,'pair j1-j2')|isequal(mode,'st_pair j1-j2')
0940 ref_j=0;
0941 else
0942 ref_j=str2num(get(handles.ref_j,'String'));
0943 end
0944 if isequal(get(handles.dt_text,'String'),'dt(ms)=')
0945 ref_i=floor((first_i+last_i)/2);
0946 ref_j=1;
0947 end
0948 time=get(handles.displ_filebase,'UserData');
0949 if isempty(time)
0950 time=[0 1];
0951 end
0952 dt_unit=str2num(get(handles.dt,'String'));
0953 displ_num=get(handles.list_pair_civ1,'UserData');
0954
0955
0956 if isempty(displ_num)
0957 nbpair=0;
0958 else
0959 nbpair=length(displ_num(1,:));
0960 if isequal(mode,'series(Di)') | isequal(mode,'st_series(Di)')
0961 nbpair=min(2*ref_i-1,nbpair);
0962 elseif isequal(mode,'series(Dj)') | isequal(mode,'st_series(Dj)')
0963 nbpair=min(2*ref_j-1,nbpair);
0964 end
0965 end
0966 nbpair=min(200,nbpair);
0967
0968
0969
0970 displ_pair={''};
0971 select=ones(size(1:nbpair));
0972 testpair=0;
0973 if get(handles.CIV1,'Value')==0
0974 dirname=fullfile(filepath,subdir_civ1,ext_dir);
0975 if ~exist(fullfile(filepath,subdir_civ1,ext_dir),'dir')
0976 hwarn=warndlg_uvmat(['no civ1 file available: subdirectory ' subdir_civ1 ' does not exist'],'ERROR');
0977 set(handles.list_pair_civ1,'String',{});
0978 return
0979 end
0980 for ipair=1:nbpair
0981 [filename,select(ipair)]=name_generator(filebase,ref_i+displ_num(3,ipair),ref_j+displ_num(1,ipair),'.nc',nom_type_nc,1,...
0982 ref_i+displ_num(4,ipair),ref_j+displ_num(2,ipair),subdir_civ1);
0983 end
0984 if ~exist('select','var') | isequal(select,zeros(size(1:nbpair)))
0985 if isfield(browse,'incr_pair')
0986 num_i1=ref_i-floor(browse.incr_pair(1)/2);
0987 num_i2=ref_i+ceil(browse.incr_pair(1)/2);
0988 num_j1=ref_j-floor(browse.incr_pair(2)/2);
0989 num_j2=ref_j+ceil(browse.incr_pair(2)/2);
0990 [filename,select(1)]=name_generator(filebase,num_i1,num_j1,'.nc',nom_type_nc,1,num_i2,num_j2,subdir_civ1);
0991 testpair=1;
0992 else
0993 if isequal(mode,'series(Dj)') | isequal(mode,'st_series(Dj)')
0994 hwarn=warndlg_uvmat(['no civ1 file available for the selected reference index j=' num2str(ref_j) ' and subdirectory ' subdir_civ1],'ERROR');
0995 set(hwarn,'WindowStyle','modal');
0996 else
0997 hwarn=warndlg_uvmat(['no civ1 file available for the selected reference index i=' num2str(ref_i) ' and subdirectory ' subdir_civ1],'ERROR');
0998 set(hwarn,'WindowStyle','modal');
0999 end
1000 set(handles.list_pair_civ1,'String',{''});
1001
1002 return
1003 end
1004 end
1005 end
1006 if isequal(mode,'series(Di)') | isequal(mode,'st_series(Di)')
1007 if testpair
1008 displ_pair{1}=['Di= ' num2str(-floor(browse.incr_pair(1)/2)) '|' num2str(ceil(browse.incr_pair(1)/2))];
1009 elseif ~isequal(get(handles.dt_text,'String'),'dt(ms)=')
1010 for ipair=1:nbpair
1011 if select(ipair)
1012 dt=time(ref_i+displ_num(4,ipair),ref_j+displ_num(2,ipair))-time(ref_i+displ_num(3,ipair),ref_j+displ_num(1,ipair));
1013 displ_pair{ipair}=['Di= ' num2str(-floor(ipair/2)) '|' num2str(ceil(ipair/2)) ' :dt= ' num2str(dt*1000)];
1014 else
1015 displ_pair{ipair}='...';
1016 end
1017 end
1018 else
1019 for ipair=1:nbpair
1020 if select(ipair)
1021 displ_pair{ipair}=['Di= ' num2str(-floor(ipair/2)) '|' num2str(ceil(ipair/2)) ' :dt= ' num2str(dt_unit*ipair)];
1022 else
1023 displ_pair{ipair}='...';
1024 end
1025 end
1026 end
1027 elseif isequal(mode,'series(Dj)')|isequal(mode,'st_series(Dj)')
1028 if testpair
1029 displ_pair{1}=['Dj= ' num2str(-floor(browse.incr_pair(1)/2)) '|' num2str(ceil(browse.incr_pair(1)/2))];
1030 else
1031 for ipair=1:nbpair
1032 if select(ipair)
1033 dt=time(ref_i+displ_num(4,ipair),ref_j+displ_num(2,ipair))-time(ref_i+displ_num(3,ipair),ref_j+displ_num(1,ipair));
1034 displ_pair{ipair}=['Dj= ' num2str(-floor(ipair/2)) '|' num2str(ceil(ipair/2)) ' :dt= ' num2str(dt*1000)];
1035 elseif testpair
1036 displ_pair{1}=['Dj= ' num2str(-floor(browse.incr_pair(2)/2)) '|' num2str(ceil(browse.incr_pair(2)/2))];
1037 else
1038 displ_pair{ipair}='...';
1039 end
1040 end
1041 end
1042 elseif isequal(mode,'pair j1-j2')|isequal(mode,'st_pair j1-j2')
1043 for ipair=1:nbpair
1044 if select(ipair)
1045 dt=time(ref_i+displ_num(4,ipair),displ_num(2,ipair))-time(ref_i+displ_num(3,ipair),displ_num(1,ipair));
1046 displ_pair{ipair}=['j= ' num2stra(displ_num(1,ipair),nom_type_ima) '-' num2stra(displ_num(2,ipair),nom_type_ima) ...
1047 ' :dt= ' num2str(dt*1000)];
1048 else
1049 displ_pair{ipair}='...';
1050 end
1051 end
1052 elseif isequal(mode,'displacement')
1053 displ_pair={'Di=Dj=0'};
1054 end
1055 set(handles.list_pair_civ1,'String',displ_pair');
1056 ichoice=min(find(select));
1057 if (isempty(ichoice) | ichoice < 1); ichoice=1; end;
1058 initial=get(handles.list_pair_civ1,'Value');
1059 if initial>nbpair |~isequal(select(initial),1)
1060 set(handles.list_pair_civ1,'Value',ichoice);
1061 end
1062 set(handles.list_pair_civ2,'String',displ_pair');
1063 initial=get(handles.list_pair_civ2,'Value');
1064 if initial>nbpair |~isequal(select(initial),1)
1065 set(handles.list_pair_civ2,'Value',ichoice);
1066 end
1067 set(gcf,'Pointer','arrow')
1068
1069
1070
1071
1072 function find_netcpair_civ2(hObject, eventdata, handles)
1073 set(gcf,'Pointer','watch')
1074
1075 filebase=get(handles.displ_filebase,'String');
1076 [filepath,Nme,ext_dir]=fileparts(filebase);
1077 browse=get(handles.browse_root,'UserData');
1078 mode_list=get(handles.mode,'String');
1079 mode_value=get(handles.mode,'Value');
1080 mode=mode_list{mode_value};
1081
1082
1083 nom_type_ima='ima_num';
1084 if isfield(browse,'nom_type_ima')
1085 nom_type_ima=browse.nom_type_ima;
1086 end
1087 nom_type_nc='_i1-i2';
1088 if isfield(browse,'nom_type_nc')
1089 nom_type_nc=browse.nom_type_nc;
1090 end
1091 if isequal(nom_type_ima,'png_old') | isequal(nom_type_ima,'netc_old')| isequal(nom_type_ima,'raw_SMD')| isequal(nom_type_nc,'netc_old')
1092 nom_type_nc='netc_old';
1093 elseif isequal(nom_type_ima,'none')|isequal(nom_type_nc,'none')
1094 nom_type_nc='none';
1095 elseif isequal(nom_type_ima,'avi')|isequal(nom_type_ima,'_i')|isequal(nom_type_ima,'ima_num')|isequal(nom_type_nc,'_i1-i2')
1096 nom_type_nc='_i1-i2';
1097 else
1098 if isequal(mode,'series(Di)')|isequal(mode,'st_series(Di)')
1099 nom_type_nc='_i1-i2_j';
1100 else
1101 nom_type_nc='_i_j1-j2';
1102 end
1103 end
1104 browse.nom_type_nc=nom_type_nc;
1105 set(handles.browse_root,'UserData',browse)
1106
1107
1108 subdir_civ1=get(handles.subdir_civ1,'String');
1109 subdir_civ2=get(handles.subdir_civ2,'String');
1110 first_i=str2num(get(handles.first_i,'String'));
1111 last_i=str2num(get(handles.last_i,'String'));
1112 incr=str2num(get(handles.incr_i,'String'));
1113 num1=first_i:incr:last_i;
1114 if isempty(num1)
1115 set(handles.list_pair_civ2,'String',{});
1116 return
1117 end
1118 ref_i=str2num(get(handles.ref_i,'String'));
1119 if isequal(mode,'pair j1-j2')|isequal(mode,'st_pair j1-j2')
1120 ref_j=0;
1121 else
1122 ref_j=str2num(get(handles.ref_j,'String'));
1123 end
1124 if isequal(get(handles.dt_text,'String'),'dt(ms)=')
1125 ref_i=ceil((first_i+last_i)/2);
1126 ref_j=1;
1127 end
1128
1129 time=get(handles.displ_filebase,'UserData');
1130 if isempty(time)
1131 time=[0 1];
1132 end
1133 dt_unit=str2num(get(handles.dt,'String'));
1134 displ_num=get(handles.list_pair_civ1,'UserData');
1135
1136
1137
1138 if isempty(displ_num)
1139 nbpair=0;
1140 else
1141 nbpair=length(displ_num(1,:));
1142 if isequal(mode,'series(Di)') | isequal(mode,'st_series(Di)')
1143 nbpair=min(2*ref_i-1,nbpair);
1144 elseif isequal(mode,'series(Dj)') | isequal(mode,'st_series(Dj)')
1145 nbpair=min(2*ref_j-1,nbpair);
1146 end
1147 end
1148 nbpair=min(200,nbpair);
1149
1150
1151
1152 displ_pair={''};
1153 select=ones(size(1:nbpair));
1154 if get(handles.CIV2,'Value')==0 & get(handles.CIV1,'Value')==0 & get(handles.FIX1,'Value')==0 & get(handles.PATCH1,'Value')==0
1155 if ~exist(fullfile(filepath,subdir_civ2,ext_dir),'dir')
1156 errordlg(['no civ2 file available: subdirectory ' subdir_civ2 ' does not exist'])
1157 set(handles.list_pair_civ2,'String',{});
1158 return
1159 end
1160 for ipair=1:nbpair
1161 [filename,select(ipair)]=name_generator(filebase,ref_i+displ_num(3,ipair),ref_j+displ_num(1,ipair),'.nc',nom_type_nc,1,...
1162 ref_i+displ_num(4,ipair),ref_j+displ_num(2,ipair),subdir_civ1);
1163 end
1164 if isequal(select,zeros(size(1:nbpair)))
1165 if isfield(browse,'incr_pair')
1166 num_i1=ref_i-floor(browse.incr_pair(1)/2);
1167 num_i2=ref_i+floor((browse.incr_pair(1)+1)/2);
1168 num_j1=ref_j-floor(browse.incr_pair(2)/2);
1169 num_j2=ref_j+floor((browse.incr_pair(2)+1)/2);
1170 [filename,select(1)]=name_generator(filebase,num_i1,num_j1,'.nc',nom_type_nc,1,num_i2,num_j2,subdir_civ2);
1171 else
1172 if isequal(mode,'series(Dj)') | isequal(mode,'st_series(Dj)')
1173 errordlg(['no civ2 file available for the selected reference index j=' num2str(ref_j) ' and subdirectory ' subdir_civ2])
1174 else
1175 errordlg(['no civ2 file available for the selected reference index i=' num2str(ref_i) ' and subdirectory ' subdir_civ2])
1176 end
1177 set(handles.list_pair_civ2,'String',{});
1178 return
1179 end
1180 end
1181 end
1182 if isequal(mode,'series(Di)') | isequal(mode,'st_series(Di)')
1183 if ~isequal(get(handles.dt_text,'String'),'dt(ms)=')
1184 for ipair=1:nbpair
1185 if select(ipair)
1186 dt=time(ref_i+displ_num(4,ipair),ref_j+displ_num(2,ipair))-time(ref_i+displ_num(3,ipair),ref_j+displ_num(1,ipair));
1187 displ_pair{ipair}=['Di= ' num2str(-floor(ipair/2)) '|' num2str(ceil(ipair/2)) ' :dt= ' num2str(dt*1000)];
1188 else
1189 displ_pair{ipair}='...';
1190 end
1191 end
1192 else
1193 for ipair=1:nbpair
1194 if select(ipair)
1195 displ_pair{ipair}=['Di= ' num2str(-floor(ipair/2)) '|' num2str(ceil(ipair/2)) ' :dt= ' num2str(dt_unit*ipair)];
1196 else
1197 displ_pair{ipair}='...';
1198 end
1199 end
1200 end
1201 elseif isequal(mode,'series(Dj)') | isequal(mode,'st_series(Dj)')
1202 for ipair=1:nbpair
1203 if select(ipair)
1204 dt=time(ref_i+displ_num(4,ipair),ref_j+displ_num(2,ipair))-time(ref_i+displ_num(3,ipair),ref_j+displ_num(1,ipair));
1205 displ_pair{ipair}=['Dj= ' num2str(-floor(ipair/2)) '|' num2str(ceil(ipair/2)) ' :dt= ' num2str(dt*1000)];
1206 else
1207 displ_pair{ipair}='...';
1208 end
1209 end
1210 elseif isequal(mode,'pair j1-j2') | isequal(mode,'st_pair j1-j2')
1211 for ipair=1:nbpair
1212 if select(ipair)
1213 dt=time(ref_i+displ_num(4,ipair),displ_num(2,ipair))-time(ref_i+displ_num(3,ipair),displ_num(1,ipair));
1214 displ_pair{ipair}=['j= ' num2stra(displ_num(1,ipair),nom_type_ima) '-' num2stra(displ_num(2,ipair),nom_type_ima) ...
1215 ' :dt= ' num2str(dt*1000)];
1216 else
1217 displ_pair{ipair}='...';
1218 end
1219 end
1220 elseif isequal(mode,'displacement')
1221 displ_pair={'Di=Dj=0'};
1222 end
1223 set(handles.list_pair_civ2,'String',displ_pair');
1224 ichoice=min(find(select));
1225 if (isempty(ichoice) | ichoice < 1); ichoice=1; end;
1226 if get(handles.CIV2,'Value')==0 & get(handles.CIV1,'Value')==0 & get(handles.FIX1,'Value')==0 & get(handles.PATCH1,'Value')==0
1227 set(handles.list_pair_civ2,'Value',ichoice);
1228 end
1229 set(gcf,'Pointer','arrow')
1230
1231
1232
1233 function [num1_civ1,num2_civ1,num_a_civ1,num_b_civ1,num1_civ2,num2_civ2,num_a_civ2,num_b_civ2]=...
1234 find_pair_indices(handles,mode)
1235 first_i=str2num(get(handles.first_i,'String'));
1236 last_i=str2num(get(handles.last_i,'String'));
1237 incr=str2num(get(handles.incr_i,'String'));
1238 first_j=str2num(get(handles.first_j,'String'));
1239 last_j=str2num(get(handles.last_j,'String'));
1240 incr_j=str2num(get(handles.incr_j,'String'));
1241 list_civ1=get(handles.list_pair_civ1,'String');
1242 index_civ1=get(handles.list_pair_civ1,'Value');
1243 str_civ1=list_civ1{index_civ1};
1244 list_civ2=get(handles.list_pair_civ2,'String');
1245 index_civ2=get(handles.list_pair_civ2,'Value');
1246 str_civ2=list_civ2{index_civ2};
1247 if isequal(first_i,[])|isequal(first_j,[]), errordlg('first field number not defined'),...
1248 set(handles.RUN, 'Enable','On'), set(handles.RUN,'BackgroundColor',[1 0 0]),return,end;
1249 if isequal(last_i,[])| isequal(last_j,[]),errordlg('last field number not defined'),...
1250 set(handles.RUN, 'Enable','On'), set(handles.RUN,'BackgroundColor',[1 0 0]),return,end;
1251 if isequal(incr,[])| isequal(incr_j,[]),errordlg('increment in field number not defined'),...
1252 set(handles.RUN, 'Enable','On'), set(handles.RUN,'BackgroundColor',[1 0 0]),return,end;
1253 if last_i < first_i | last_j < first_j , errordlg('last field number must be larger than the first one'),...
1254 set(handles.RUN, 'Enable','On'), set(handles.RUN,'BackgroundColor',[1 0 0]),return,end;
1255 num1=[first_i:incr:last_i];
1256 num_j=[first_j:incr_j:last_j];
1257 if isequal (mode,'series(Di)') |isequal(mode,'st_series(Di)')
1258
1259 indsel=find((double(str_civ1)<48)|(double(str_civ1)>57));
1260 str_raw=str_civ1(indsel);
1261 indsepar=find(str_raw=='|');
1262 d1=str2num(str_civ1([indsel(indsepar-1)+1:indsel(indsepar)-1]));
1263 if indsepar==length(str_raw)
1264 d2=str2num(str_civ1([indsel(indsepar)+1:end]));
1265 else
1266 d2=str2num(str_civ1([indsel(indsepar)+1:indsel(indsepar+1)-1]));
1267 end
1268
1269 num1_civ1=num1-d1;
1270 num2_civ1=num1+d2;
1271 num_a_civ1=num_j;
1272 num_b_civ1=num_j;
1273 num1_civ2=num1-floor(index_civ2/2)*ones(size(num1));
1274 num2_civ2=num1+ceil(index_civ2/2)*ones(size(num1));
1275 num1_civ2=num1-d1;
1276 num2_civ2=num1+d2;
1277 num_a_civ2=num_j;
1278 num_b_civ2=num_j;
1279
1280 lastfield=str2num(get(handles.nb_field,'String'));
1281 if isequal(lastfield,[])
1282 indsel=find((num1_civ1 >= 1)&(num1_civ2 >= 1));
1283 else
1284 indsel=find((num2_civ1 <= lastfield)&(num2_civ2 <= lastfield)&(num1_civ1 >= 1)&(num1_civ2 >= 1));
1285 end
1286 if length(indsel)>=1
1287 firstind=indsel(1);
1288 lastind=indsel(end);
1289 set(handles.first_i,'String',num2str(num1(firstind)))
1290 set(handles.last_i,'String',num2str(num1(lastind)))
1291 num1=num1(indsel);
1292 num1_civ1=num1_civ1(indsel);
1293 num1_civ2=num1_civ2(indsel);
1294 num2_civ1=num2_civ1(indsel);
1295 num2_civ2=num2_civ2(indsel);
1296 end
1297 elseif isequal (mode,'series(Dj)')|isequal (mode,'st_series(Dj)')
1298 lastfield_j=str2num(get(handles.nb_field2,'String'));
1299 num1_civ1=num1;
1300 num2_civ1=num1;
1301 num_a_civ1=num_j-floor(index_civ1/2)*ones(size(num_j));
1302 num_b_civ1=num_j+ceil(index_civ1/2)*ones(size(num_j));
1303 num1_civ2=num1;
1304 num2_civ2=num1;
1305 num_a_civ2=num_j-floor(index_civ2/2)*ones(size(num_j));
1306 num_b_civ2=num_j+ceil(index_civ2/2)*ones(size(num_j));
1307
1308 if isequal(lastfield_j,[])
1309 indsel=find((num_a_civ1 >= 1)&(num_a_civ2 >= 1));
1310 else
1311 indsel=find((num_b_civ1 <= lastfield_j)&(num_b_civ2 <= lastfield_j)&(num_a_civ1 >= 1)&(num_a_civ2 >= 1));
1312 end
1313 if length(indsel)>=1
1314 firstind=indsel(1);
1315 lastind=indsel(end);
1316 set(handles.first_j,'String',num2str(num_j(firstind)))
1317 set(handles.last_j,'String',num2str(num_j(lastind)))
1318 num_j=num_j(indsel);
1319 num_a_civ1=num_a_civ1(indsel);
1320 num_a_civ2=num_a_civ2(indsel);
1321 num_b_civ1=num_b_civ1(indsel);
1322 num_b_civ2=num_b_civ2(indsel);
1323 end
1324 elseif isequal(mode,'pair j1-j2') | isequal(mode,'st_pair j1-j2')
1325 num1_civ1=num1;
1326 num1_civ2=num1;
1327 displ_num=get(handles.list_pair_civ1,'UserData');
1328 num2_civ1=num1;
1329 num_a_civ1=displ_num(1,index_civ1);
1330 num_b_civ1=displ_num(2,index_civ1);
1331 num2_civ2=num1;
1332 num_a_civ2=displ_num(1,index_civ2);
1333 num_b_civ2=displ_num(2,index_civ2);
1334 elseif isequal(mode,'displacement')
1335 num1_civ1=num1;
1336 num2_civ1=num1;
1337 num_a_civ1=num_j;
1338 num_b_civ1=num_j;
1339 num1_civ2=num1;
1340 num2_civ2=num1;
1341 num_a_civ2=num_j;
1342 num_b_civ2=num_j;
1343 end
1344
1345
1346
1347
1348 function list_pair_civ1_Callback(hObject, eventdata, handles)
1349
1350
1351 list_pair=get(handles.list_pair_civ1,'String');
1352 index_pair=get(handles.list_pair_civ1,'Value');
1353 displ_num=get(handles.list_pair_civ1,'UserData');
1354 num_a=displ_num(1,index_pair);
1355 num_b=displ_num(2,index_pair);
1356 set(handles.list_pair_civ2,'Value',index_pair);
1357
1358
1359 mode_list=get(handles.mode,'String');
1360 mode_value=get(handles.mode,'Value');
1361 mode=mode_list{mode_value};
1362 if isequal(mode,'series(Di)')
1363 first_i=str2num(get(handles.first_i,'String'));
1364 last_i=str2num(get(handles.last_i,'String'));
1365 incr_i=str2num(get(handles.incr_i,'String'));
1366 num1=first_i:incr_i:last_i;
1367 lastfield=str2num(get(handles.nb_field,'String'));
1368 if ~isequal(lastfield,[])
1369 ind=find((num1-floor(index_pair/2)*ones(size(num1))>0)& ...
1370 (num1+ceil(index_pair/2)*ones(size(num1))<=lastfield));
1371 num1=num1(ind);
1372 end
1373 set(handles.first_i,'String',num2str(num1(1)));
1374 set(handles.last_i,'String',num2str(num1(end)));
1375 elseif isequal(mode,'series(Dj)')
1376 first_j=str2num(get(handles.first_j,'String'));
1377 last_j=str2num(get(handles.last_j,'String'));
1378 incr_j=str2num(get(handles.incr_j,'String'));
1379 num_j=first_j:incr_j:last_j;
1380 lastfield2=str2num(get(handles.nb_field2,'String'));
1381 if ~isequal(lastfield2,[])
1382 ind=find((num_j-floor(index_pair/2)*ones(size(num_j))>0)& ...
1383 (num_j+ceil(index_pair/2)*ones(size(num_j))<=lastfield2));
1384 num1=num_j(ind);
1385 end
1386 set(handles.first_j,'String',num2str(num1(1)));
1387 set(handles.last_j,'String',num2str(num1(end)));
1388 end
1389
1390
1391
1392 function list_pair_civ2_Callback(hObject, eventdata, handles)
1393
1394 index_pair=get(handles.list_pair_civ2,'Value');
1395
1396
1397 mode_list=get(handles.mode,'String');
1398 mode_value=get(handles.mode,'Value');
1399 mode=mode_list{mode_value};
1400 if isequal(mode,'series(Di)')
1401 first_i=str2num(get(handles.first_i,'String'));
1402 last_i=str2num(get(handles.last_i,'String'));
1403 incr_i=str2num(get(handles.incr_i,'String'));
1404 num1=first_i:incr_i:last_i;
1405 lastfield=str2num(get(handles.nb_field,'String'));
1406 if ~isequal(lastfield,[])
1407 ind=find((num1-floor(index_pair/2)*ones(size(num1))>0)& ...
1408 (num1+ceil(index_pair/2)*ones(size(num1))<=lastfield));
1409 num1=num1(ind);
1410 end
1411 set(handles.first_i,'String',num2str(num1(1)));
1412 set(handles.last_i,'String',num2str(num1(end)));
1413 elseif isequal(mode,'series(Dj)')
1414 first_j=str2num(get(handles.first_j,'String'));
1415 last_j=str2num(get(handles.last_j,'String'));
1416 incr_j=str2num(get(handles.incr_j,'String'));
1417 num_j=first_j:incr_j:last_j;
1418 lastfield2=str2num(get(handles.nb_field2,'String'));
1419 if ~isequal(lastfield2,[])
1420 ind=find((num_j-floor(index_pair/2)*ones(size(num_j))>0)& ...
1421 (num_j+ceil(index_pair/2)*ones(size(num_j))<=lastfield));
1422 num1=num_j(ind);
1423 end
1424 set(handles.first_j,'String',num2str(num1(1)));
1425 set(handles.last_j,'String',num2str(num1(end)));
1426 end
1427
1428
1429
1430
1431
1432
1433
1434 function BATCH_Callback(hObject, eventdata, handles)
1435 global civ1_exe civ2_exe patch_exe patch_new_exe fix_exe todo_path sge Civ_exe
1436
1437 pxcmx=get(handles.pxcmx,'String');
1438 pxcmy=get(handles.pxcmy,'String');
1439 npx=get(handles.pxcmx,'UserData');
1440 npy=get(handles.pxcmy,'UserData');
1441
1442
1443 operations={'CIV1','FIX1','PATCH1','CIV2','FIX2','PATCH2'};
1444 run_flag=1;
1445 box_test(1)=get(handles.CIV1,'Value');
1446 box_test(2)=get(handles.FIX1,'Value');
1447 box_test(3)=get(handles.PATCH1,'Value');
1448 box_test(4)=get(handles.CIV2,'Value');
1449 box_test(5)=get(handles.FIX2,'Value');
1450 box_test(6)=get(handles.PATCH2,'Value');
1451 index=find(box_test==1);
1452 if isempty(index)
1453 errordlg('no selected operation')
1454 set(handles.BATCH, 'Enable','On')
1455 set(handles.BATCH,'BackgroundColor',[1 0 0])
1456 return
1457 end
1458 index_first=min(index);
1459 index_last=max(index);
1460 box_used=box_test([index_first : index_last]);
1461 [box_missing,ind_missing]=min(box_used);
1462 if isequal(box_missing,0)
1463 errordlg(['missing' cell2mat(operations(ind_missing))]);
1464 set(handles.BATCH, 'Enable','On')
1465 set(handles.BATCH,'BackgroundColor',[1 0 0])
1466 return
1467 end
1468
1469
1470 if isequal(get(handles.get_mask_civ1,'Value'),1)
1471 get_mask_civ1_Callback(hObject, eventdata, handles);
1472 end
1473 if isequal(get(handles.get_mask_fix1,'Value'),1)
1474 get_mask_fix1_Callback(hObject, eventdata, handles);
1475 end
1476 if isequal(get(handles.get_mask_civ2,'Value'),1)
1477 get_mask_civ2_Callback(hObject, eventdata, handles);
1478 end
1479 if isequal(get(handles.get_mask_fix2,'Value'),1)
1480 get_mask_fix2_Callback(hObject, eventdata, handles);
1481 end
1482
1483
1484
1485 path_uvmat=which('uvmat');
1486 path_UVMAT=fileparts(path_uvmat);
1487 if isunix
1488
1489 xmlfile=fullfile(path_UVMAT,'PARAM_LINUX.xml');
1490 if exist(xmlfile,'file')
1491 t=xmltree(xmlfile);
1492 sparam=convert(t);
1493 end
1494 else
1495
1496 xmlfile=fullfile(path_UVMAT,'PARAM_WIN.xml');
1497 if exist(xmlfile,'file')
1498 t=xmltree(xmlfile);
1499 sparam=convert(t);
1500 end
1501 end
1502 sge=0;
1503 if isfield(sparam,'Civ_exe')
1504 Civ_exe=sparam.Civ_exe
1505 end
1506 if isfield(sparam,'Civ1_exe')
1507 civ1_exe=sparam.Civ1_exe
1508 end
1509 if isfield(sparam,'Civ2_exe')
1510 civ2_exe=sparam.Civ2_exe
1511 end
1512 if isfield(sparam,'Patch_exe')
1513 patch_exe=sparam.Patch_exe
1514 end
1515 if isfield(sparam,'PatchNew_exe')
1516 patch_new_exe=sparam.PatchNew_exe
1517 end
1518 if isfield(sparam,'Fix_exe')
1519 fix_exe=sparam.Fix_exe
1520 end
1521 if isfield(sparam,'Todo_path')
1522 todo_path=sparam.Todo_path
1523 end
1524 if isfield(sparam,'SGE')
1525 sge=str2num(sparam.SGE)
1526 end
1527
1528 ind_answer=2;
1529 if sge
1530 [s,w]=unix('qstat -q civ_3D.q|grep job_| wc -l');
1531 if isequal(s,0)
1532 w(end)=[];
1533 str_displ={[w ' jobs in the waiting list'];'Select a priority:'};
1534 str={'urgent';'normal';'low'};
1535 [ind_answer,v] = listdlg('PromptString',str_displ,...
1536 'SelectionMode','single',...
1537 'ListString',str,'ListSize',[200 200],'Name','job priority','InitialValue',3);
1538 if isequal(v,0)
1539 return
1540 end
1541 else
1542 warndlg_uvmat('batch system not available','ERROR')
1543 return
1544 end
1545 end
1546
1547 set(handles.waitbar_1,'Position',[0.946 0.876 0.03 0.001])
1548 set(handles.waitbar_patch1,'Position',[0.946 0.439 0.03 0.001])
1549 set(handles.waitbar_civ2,'Position',[0.946 0.219 0.03 0.001])
1550 set(handles.waitbar_patch2,'Position',[0.946 0.0 0.03 0.001])
1551 set(handles.BATCH, 'Enable','Off')
1552 set(handles.BATCH,'BackgroundColor',[0.831 0.816 0.784])
1553
1554
1555 filebase=get(handles.displ_filebase,'String');
1556
1557 if ~isunix & isequal(todo_path(1:2),'\\') & isequal(filebase(2:3),':\')
1558 cur_dir=pwd;
1559 if ~isequal(cur_dir(2:3),':\')
1560 cd(matlabroot);
1561 end
1562 [ss,ww]=dos(['net use ' filebase(1:2)]);
1563 if isequal(ss,0)
1564 rankpath=findstr(ww,'\\');
1565 if ~isempty(rankpath)
1566 wwrest=ww(rankpath:end);
1567 rankend=min(find(double(wwrest)==10))-1;
1568 filebase=[wwrest(1:rankend) filebase(3:end)];
1569 set(handles.displ_filebase,'String',filebase);
1570 end
1571 else
1572 warndlg_uvmat('for BATCH option, UBC file names, beginning by \\, are needed','ERROR');
1573 set(handles.BATCH, 'Enable','On')
1574 set(handles.BATCH,'BackgroundColor',[1 0 0])
1575 return
1576 end
1577 end
1578 browse=get(handles.browse_root,'UserData')
1579 ext_ima=browse.ext_ima;
1580 nom_type_nc='_i1-i2';
1581 nom_type_ima=browse.nom_type_ima;
1582
1583
1584
1585 mode_list=get(handles.mode,'String');
1586 mode_value=get(handles.mode,'Value');
1587 mode=mode_list{mode_value};
1588 time=get(handles.displ_filebase,'UserData');
1589
1590 [num1_civ1,num2_civ1,num_a_civ1,num_b_civ1,num1_civ2,num2_civ2,num_a_civ2,num_b_civ2]=...
1591 find_pair_indices(handles,mode);
1592
1593
1594 subdir_civ1=get(handles.subdir_civ1,'String');
1595 subdir_civ2=get(handles.subdir_civ2,'String');
1596 if isequal(subdir_civ1,''),subdir_civ1='A'; end
1597 if isequal(subdir_civ2,''),subdir_civ2=subdir_civ1; end
1598 currentdir=pwd;
1599 [Path_ima,Name]=fileparts(filebase);
1600 if ~exist(Path_ima,'dir')
1601 warndlg_uvmat(['path to images ' Path_ima ' not found'],'ERROR')
1602 return
1603 end
1604 cd(Path_ima);
1605 dircur=pwd;
1606 m2='';
1607 [erread,message]=fileattrib(Path_ima);
1608 if ~isempty(message) & ~isequal(message.UserWrite,1)
1609 errordlg(['No writting access to ' Path_ima])
1610 cd(currentdir)
1611 return
1612 end
1613
1614
1615 ref_fix1=get(handles.ref_fix1,'UserData');
1616 ref_fix2=get(handles.ref_fix2,'UserData');
1617 if (~isempty(ref_fix1) & box_test(2)==1)|(~isempty(ref_fix2) & box_test(5)==1)
1618 errordlg('reference file not implemented in BATCH mode, use RUN')
1619 set(handles.BATCH, 'Enable','On')
1620 set(handles.BATCH,'BackgroundColor',[1 0 0])
1621 return
1622 end
1623 nbfield=length(num1_civ1);
1624 nbslice=length(num_a_civ1);
1625
1626
1627
1628 detect=1;
1629 while detect==1
1630 for ifile=1:nbfield
1631
1632 [filename,detect]=name_generator(filebase,num1_civ1(ifile),[],'.nc',...
1633 nom_type_nc,1,num2_civ1(ifile),[],subdir_civ1);
1634 if detect==1
1635 subdir_civ1=[subdir_civ1 '.0'];
1636 subdir_civ2=subdir_civ1;
1637 break
1638 end
1639 filecell_nc1(ifile)={filename};
1640 if detect==1
1641 break
1642 end
1643 end
1644
1645 if ~exist(fullfile(Path_ima,subdir_civ1),'dir')
1646 [m1,m2,m3]=mkdir(subdir_civ1)
1647 if ~isequal(m2,'')
1648 msgbox(m2);
1649 end
1650 end
1651 end
1652
1653 for ifile=1:nbfield
1654 [filecell_ima1_civ1{ifile},idetect]=name_generator(filebase, num1_civ1(ifile),[],ext_ima,nom_type_ima);
1655 [filecell_ima2_civ1{ifile},idetect_1]=name_generator(filebase, num2_civ1(ifile),[],ext_ima,nom_type_ima);
1656 if idetect==0
1657 warndlg_uvmat([filecell_ima1_civ1{ifile} ' not found'],'ERROR')
1658 set(handles.BATCH, 'Enable','On')
1659 set(handles.BATCH,'BackgroundColor',[1 0 0])
1660 cd(currentdir)
1661 return
1662 end
1663 if idetect_1==0,
1664 errordlg([filecell_ima2_civ1{ifile} ' not found'])
1665 set(handles.BATCH, 'Enable','On')
1666 set(handles.BATCH,'BackgroundColor',[1 0 0])
1667 cd(currentdir)
1668 return
1669 end
1670 end
1671
1672 cd(currentdir);
1673
1674
1675
1676 set(handles.subdir_civ1,'String',subdir_civ1);
1677 set(handles.subdir_civ2,'String',subdir_civ2);
1678 browse.nom_type_nc=nom_type_nc;
1679 set(handles.browse_root,'UserData',browse);
1680
1681
1682 if isequal(nom_type_ima,'avi')
1683 nom_type_imanew='_i';
1684 else
1685 nom_type_imanew=nom_type_ima;
1686 end
1687
1688 if ~isequal(ext_ima,'.vol')
1689 if box_test(1)==1
1690 h = waitbar(0,['copy images to the .png format for civ1']);
1691 for ifile=1:nbfield
1692 waitbar(ifile/nbfield);
1693 Atot=[];
1694 [filename_A,idetect_cur]=name_generator(filebase,num1_civ1(ifile),1,'.png','_i');
1695 for j=1:nbslice
1696 if idetect_cur==0
1697 A=read_image(cell2mat(filecell_ima1_civ1(ifile,j)),nom_type_ima2,npx,npy,num1_civ1(ifile));
1698 Atot=[Atot;A];
1699
1700 end
1701 end
1702 imwrite(Atot,filename_A,'BitDepth',16);
1703
1704 Atot=[];
1705 [filename_B,idetect_cur]=name_generator(filebase, num2_civ1(ifile),1,'.png','_i');
1706 for j=1:nbslice
1707 if idetect_cur==0
1708 A=read_image(cell2mat(filecell_ima2_civ1(ifile,j)),nom_type_ima2,npx,npy,num2_civ1(ifile));
1709 Atot=[Atot;A];
1710
1711 end
1712
1713 end
1714 imwrite(Atot,filename_B,'BitDepth',16);
1715 end
1716 close(h)
1717 end
1718 end
1719
1720 if ~sge
1721
1722 name_lock=fullfile(todo_path,'lock');
1723 iwait=0;
1724 while(exist(name_lock) & iwait<15)
1725 pause(1);
1726 iwait=iwait+1;
1727 end
1728 if iwait==15
1729 errordlg(['I''m tired to wait for the lock file, please delete it then click again on BATCH' name_lock ])
1730 set(handles.BATCH, 'Enable','On')
1731 set(handles.BATCH,'BackgroundColor',[1 0 0])
1732 return
1733 end
1734 p0=fopen(name_lock,'w');
1735 name_todo=fullfile(todo_path,'TODO.txt');
1736 p1=fopen(name_todo,'a');
1737 if (p1<0)
1738 errordlg(['error in opening ' name_todo])
1739 set(handles.BATCH, 'Enable','On')
1740 set(handles.BATCH,'BackgroundColor',[1 0 0])
1741 return;
1742 end
1743 end
1744
1745 for ifile=1:nbfield
1746 i_cmd=0;
1747 cmd='';
1748 if sge
1749 cmd='#!/bin/bash';
1750 cmd=char({cmd;'#$ -cwd'});
1751 cmd=char({cmd;'hostname && date'});
1752 end
1753 filename_cmx=cell2mat(filecell_nc1(ifile));
1754 filename_cmx([end-1:end])='cm';
1755 filename_cmx=[filename_cmx 'x'];
1756
1757
1758 if box_test(1)==1
1759
1760 par_civ1=read_param_civ1(handles,cell2mat(filecell_ima1_civ1(1,1)));
1761 p1text=[];
1762 [par_civ1.path,resu_file,resu_ext]=fileparts(filecell_nc1{ifile});
1763 par_civ1.volume1=filecell_ima1_civ1{ifile};
1764 par_civ1.volume2=filecell_ima2_civ1{ifile}
1765 par_civ1.nx=1024;
1766 par_civ1.ny=1024;
1767 par_civ1.nz=par_civ1.gridLimits_Zmax - par_civ1.gridLimits_Zmin;
1768 'TEST'
1769 par_civ1
1770
1771
1772 civAllxml=struct2xml(par_civ1);
1773 civAllxml=set(civAllxml,1,'name','civ3d3c');
1774
1775 par_civ1_3d_xml=fullfile(par_civ1.path,[resu_file '.xml']);
1776 pvalue=num2str((1-ind_answer)*500);
1777 save(civAllxml,par_civ1_3d_xml);
1778 if(isunix && sge)
1779 ['echo /CIVX/bin/MPI/lam-7.1.3_g95/bin/mpirun C /CIVX/bin/civ3d3c -p ' par_civ1_3d_xml '|qsub -p ' pvalue ' -q lam.q -pe lam_loose 16 -e ' par_civ1_3d_xml '.errors -o ' par_civ1_3d_xml '.log' ]
1780 eval ( ['!echo /CIVX/bin/MPI/lam-7.1.3_g95/bin/mpirun C /CIVX/bin/civ3d3c -p ' par_civ1_3d_xml '|qsub -p ' pvalue ' -q lam.q -pe lam_loose 16 -e ' par_civ1_3d_xml '.errors -o ' par_civ1_3d_xml '.log' ])
1781 else
1782 '3D mode is NOT supported without sge'
1783 end
1784 return
1785
1786
1787
1788
1789
1790 civAllCmd=[];
1791 civAllxml=set(civAllxml,1,'name','civ3d3c');
1792 namelog=[filename_cmx([1:end-3]) 'log'];
1793
1794
1795
1796 i_cmd=i_cmd+1;
1797
1798
1799
1800 civAllCmd=[civAllCmd ' civ1 '];
1801 str=BATCH_CIV1_Unified(filename_cmx([1:end-4]),namelog,par_civ1,handles);
1802 fieldnames=fields(str);
1803 [civAllxml,uid_civ1]=add(civAllxml,1,'element','civ1');
1804 for ilist=1:length(fieldnames)
1805 val=eval(['str.' fieldnames{ilist}]);
1806 if ischar(val)
1807 [civAllxml,uid_t]=add(civAllxml,uid_civ1,'element',fieldnames{ilist});
1808 [civAllxml,uid_t2]=add(civAllxml,uid_t,'chardata',val);
1809 end
1810 end
1811
1812 end
1813 if(isunix)
1814 cmd=char({cmd ; ['cp -f ' filename_cmx '2 ' filename_cmx]; cmd_CIV2});
1815 else
1816 cmd=char({cmd ; ['copy /Y ' filename_cmx '2 ' filename_cmx]; cmd_CIV2});
1817 end
1818 end
1819
1820
1821 save(civAllxml,[filename_cmx([1:end-4]) '.xml']);
1822 cmd=char({cmd;[Civ_exe ' -f ' [filename_cmx([1:end-4]) '.xml'] ' ' civAllCmd]});
1823
1824
1825
1826
1827
1828
1829 if sge
1830 [Rootbat,Filebat,extbat]=fileparts(filename_cmx);
1831 filename_bat=fullfile(Rootbat,['job_' Filebat extbat]);
1832 else
1833 filename_bat=filename_cmx;
1834 end
1835 filename_bat(end-2:end)='bat';
1836
1837
1838 dlmwrite(filename_bat,cmd,'');
1839 if sge
1840 pvalue=num2str((1-ind_answer)*500);
1841 namelog=[filename_bat '.patch.log'];
1842 ['!qsub -p ' pvalue ' -q civ_3D.q -e ' filename_cmx(1:end-4) '.errors -o ' filename_cmx(1:end-4) '.log' ' ' filename_bat];
1843 eval( ['!qsub -p ' pvalue ' -q civ_3D.q -e ' filename_cmx(1:end-4) '.errors -o ' filename_cmx(1:end-4) '.log' ' ' filename_bat]);
1844 else
1845 if(isunix)
1846 cmdtodo=['. ' filename_bat ];
1847 else
1848
1849 cmdtodo=[filename_bat];
1850 end
1851 count= fprintf(p1,'%s\n', cmdtodo);
1852 end
1853 if ~sge
1854 fclose(p1);
1855 fclose(p0);
1856 delete(name_lock);
1857 end
1858 set(handles.BATCH, 'Enable','On')
1859 set(handles.BATCH,'BackgroundColor',[1 0 0])
1860
1861 [Path,Name]=fileparts(filebase);
1862 namefig=fullfile(Path,subdir_civ2,Name);
1863 detect=1;
1864 while detect==1
1865 namefigfull=[namefig '.fig'];
1866 hh=dir(namefigfull);
1867 if ~isempty(hh)
1868 detect=1;
1869 namefig=[namefig '.0'];
1870 else
1871 detect=0;
1872 end
1873 end
1874 saveas(gcbf,namefigfull);
1875
1876
1877
1878
1879
1880 function cmd_PATCH=RUN_PATCH(filename_nc,nx_patch,ny_patch,rho_patch,subdomain_patch,thresh_value,test_interp)
1881 global patch_exe patch_new_exe
1882 namelog=[filename_nc([1:end-3]) '_patch.log'];
1883 if test_interp==0
1884 cmd_PATCH=[patch_exe ' -f ' filename_nc ' -m ' nx_patch ' -n ' ny_patch ' -ro ' rho_patch ' -nopt ' subdomain_patch ...
1885 ' > ' namelog ' 2>&1']
1886 else
1887 cmd_PATCH=[patch_new_exe ' -f ' filename_nc ' -m ' nx_patch ' -n ' ny_patch ' -ro ' rho_patch ...
1888 ' -max ' thresh_value ' -nopt ' subdomain_patch ' > ' namelog ' 2>&1'];
1889 end
1890
1891
1892
1893 function first_j_Callback(hObject, eventdata, handles)
1894 last_j_Callback(hObject, eventdata, handles)
1895
1896
1897
1898 function CIV1_Callback(hObject, eventdata, handles)
1899 enable_civ1(handles,get(handles.CIV1,'Value'))
1900 find_netcpair_civ1(hObject, eventdata, handles);
1901
1902
1903
1904 function FIX1_Callback(hObject, eventdata, handles)
1905
1906 if get(handles.FIX1,'Value')==1
1907 enable_fix1(handles)
1908 else
1909 desable_fix1(handles)
1910 end
1911
1912
1913
1914 function PATCH1_Callback(hObject, eventdata, handles)
1915
1916 if get(handles.PATCH1,'Value')==1
1917 enable_patch1(handles)
1918 else
1919 desable_patch1(handles)
1920 end
1921
1922
1923
1924 function CIV2_Callback(hObject, eventdata, handles)
1925 state=get(handles.CIV2,'Value');
1926 enable_civ2(handles,state)
1927 if state
1928 find_netcpair_civ2(hObject, eventdata, handles)
1929 end
1930
1931
1932
1933 function FIX2_Callback(hObject, eventdata, handles)
1934 if get(handles.FIX2,'Value')==1
1935 enable_fix2(handles)
1936 if get(handles.CIV2,'Value')==0
1937 find_netcpair_civ2(hObject, eventdata, handles)
1938 end
1939 else
1940 desable_fix2(handles)
1941 end
1942
1943
1944
1945
1946 function PATCH2_Callback(hObject, eventdata, handles)
1947
1948 if get(handles.PATCH2,'Value')==1
1949 enable_patch2(handles)
1950 if get(handles.CIV2,'Value')==0
1951 find_netcpair_civ2(hObject, eventdata, handles)
1952 end
1953 else
1954 desable_patch2(handles)
1955 end
1956
1957
1958
1959
1960 function first_i_Callback(hObject, eventdata, handles)
1961
1962 last_i_Callback(hObject, eventdata, handles)
1963
1964
1965
1966
1967 function calcul_search_Callback(hObject, eventdata, handles)
1968
1969
1970 list_pair=get(handles.list_pair_civ1,'String');
1971 index=get(handles.list_pair_civ1,'Value');
1972 displ_num=get(handles.list_pair_civ1,'UserData');
1973 time=get(handles.displ_filebase,'UserData');
1974 pxcm_xy=get(handles.calcul_search,'UserData')
1975 pxcmx=pxcm_xy(1);
1976 pxcmy=pxcm_xy(2);
1977 mode_list=get(handles.mode,'String');
1978 mode_value=get(handles.mode,'Value');
1979 mode=mode_list{mode_value};
1980 if isequal (mode, 'series(Di)' )
1981 ref_i=str2num(get(handles.ref_i,'String'));
1982 num1=ref_i-floor(index/2);
1983 num2=ref_i+ceil(index/2);
1984 num_a=1;
1985 num_b=1;
1986 elseif isequal (mode, 'series(Dj)')
1987 num1=1;
1988 num2=1;
1989 ref_j=str2num(get(handles.ref_j,'String'));
1990 num_a=ref_j-floor(index/2);
1991 num_b=ref_j+ceil(index/2);
1992 elseif isequal(mode,'pair j1-j2')
1993 ref_i=str2num(get(handles.ref_i,'String'));
1994 num1=ref_i;
1995 num2=ref_i;
1996 num_a=displ_num(1,index);
1997 num_b=displ_num(2,index);
1998 end
1999 dt=time(num2,num_b)-time(num1,num_a);
2000 ibx=str2num(get(handles.ibx,'String'));
2001 iby=str2num(get(handles.iby,'String'));
2002 umin=dt*pxcmx*str2num(get(handles.umin,'String'));
2003 umax=dt*pxcmx*str2num(get(handles.umax,'String'));
2004 vmin=dt*pxcmy*str2num(get(handles.vmin,'String'));
2005 vmax=dt*pxcmy*str2num(get(handles.vmax,'String'));
2006 shiftx=round((umin+umax)/2);
2007 shifty=round((vmin+vmax)/2);
2008 isx=(umax+2-shiftx)*2+ibx;
2009 isx=2*ceil(isx/2)+1;
2010 isy=(vmax+2-shifty)*2+iby;
2011 isy=2*ceil(isy/2)+1;
2012 set(handles.shiftx,'String',num2str(shiftx));
2013 set(handles.shifty,'String',num2str(shifty));
2014 set(handles.isx,'String',num2str(isx));
2015 set(handles.isy,'String',num2str(isy));
2016
2017
2018
2019
2020
2021 function subdir_civ1_Callback(hObject, eventdata, handles)
2022 subdir=get(handles.subdir_civ1,'String');
2023 set(handles.subdir_civ2,'String',subdir);
2024 if get(handles.CIV1,'Value')==0
2025 find_netcpair_civ1(hObject, eventdata, handles);
2026 end
2027
2028
2029
2030
2031 function subdir_civ2_Callback(hObject, eventdata, handles)
2032
2033 if get(handles.CIV2,'Value')==0 & get(handles.CIV1,'Value')==0 & get(handles.FIX1,'Value')==0 & get(handles.PATCH1,'Value')==0
2034 find_netcpair_civ2(hObject, eventdata, handles);
2035 end
2036
2037
2038
2039
2040 function get_mask_civ1_Callback(hObject, eventdata, handles)
2041 maskval=get(handles.get_mask_civ1,'Value')
2042 if isequal(maskval,0)
2043 set(handles.mask_civ1,'String','')
2044 else
2045 mask_displ='no mask';
2046 filebase=get(handles.displ_filebase,'String');
2047 [ nbslice, flag_mask]=get_mask(filebase,handles)
2048 if isequal(flag_mask,1)
2049 mask_displ=[num2str(nbslice) 'mask'];
2050 end
2051 if get(handles.compare,'Value')==1 & ~isequal(mask_displ,'no mask')
2052 filebase_a=get(handles.displ_filebase2,'String');
2053 [nbslice_a, flag_mask_a]=get_mask(filebase_a,handles)
2054 if isequal(flag_mask_a,0) | ~isequal(nbslice_a,nbslice)
2055 mask_displ='no mask';
2056 end
2057 end
2058 if isequal(mask_displ,'no mask')
2059 set(handles.get_mask_civ1,'Value',0)
2060 set(handles.get_mask_fix1,'Value',0)
2061 set(handles.get_mask_civ2,'Value',0)
2062 set(handles.get_mask_fix2,'Value',0)
2063 else
2064 set(handles.get_mask_fix1,'Value',1)
2065 set(handles.get_mask_civ2,'Value',1)
2066 set(handles.get_mask_fix2,'Value',1)
2067 end
2068 set(handles.mask_civ1,'String',mask_displ)
2069 set(handles.mask_fix1,'String',mask_displ)
2070 set(handles.mask_civ2,'String',mask_displ)
2071 set(handles.mask_fix2,'String',mask_displ)
2072 end
2073
2074
2075 function get_mask_fix1_Callback(hObject, eventdata, handles)
2076 maskval=get(handles.get_mask_fix1,'Value')
2077 if isequal(maskval,0)
2078 set(handles.mask_fix1,'String','')
2079 else
2080 mask_displ='no mask';
2081 filebase=get(handles.displ_filebase,'String');
2082 [nbslice, flag_mask]=get_mask(filebase,handles)
2083 if isequal(flag_mask,1)
2084 mask_displ=[num2str(nbslice) 'mask'];
2085 end
2086 if get(handles.compare,'Value')==1 & ~isequal(mask_displ,'no mask')
2087 filebase_a=get(handles.displ_filebase2,'String');
2088 [nbslice_a, flag_mask_a]=get_mask(filebase_a,handles)
2089 if isequal(flag_mask_a,0) | ~isequal(nbslice_a,nbslice)
2090 mask_displ='no mask';
2091 end
2092 end
2093 if isequal(mask_displ,'no mask')
2094 set(handles.get_mask_fix1,'Value',0)
2095 set(handles.get_mask_civ2,'Value',0)
2096 set(handles.get_mask_fix2,'Value',0)
2097 else
2098 set(handles.get_mask_civ2,'Value',1)
2099 set(handles.get_mask_fix2,'Value',1)
2100 end
2101 set(handles.mask_fix1,'String',mask_displ)
2102 set(handles.mask_civ2,'String',mask_displ)
2103 set(handles.mask_fix2,'String',mask_displ)
2104 end
2105
2106
2107 function get_mask_civ2_Callback(hObject, eventdata, handles)
2108 maskval=get(handles.get_mask_civ2,'Value')
2109 if isequal(maskval,0)
2110 set(handles.mask_civ2,'String','')
2111 else
2112 mask_displ='no mask';
2113 filebase=get(handles.displ_filebase,'String');
2114 [nbslice, flag_mask]=get_mask(filebase,handles)
2115 if isequal(flag_mask,1)
2116 mask_displ=[num2str(nbslice) 'mask'];
2117 end
2118 if get(handles.compare,'Value')==1 & ~isequal(mask_displ,'no mask')
2119 filebase_a=get(handles.displ_filebase2,'String');
2120 [nbslice_a, flag_mask_a]=get_mask(filebase_a,handles)
2121 if isequal(flag_mask_a,0) | ~isequal(nbslice_a,nbslice)
2122 mask_displ='no mask';
2123 end
2124 end
2125 if isequal(mask_displ,'no mask')
2126 set(handles.get_mask_civ2,'Value',0)
2127 set(handles.get_mask_fix2,'Value',0)
2128 else
2129 set(handles.get_mask_fix2,'Value',1)
2130 end
2131 set(handles.mask_civ2,'String',mask_displ)
2132 set(handles.mask_fix2,'String',mask_displ)
2133 end
2134
2135
2136 function get_mask_fix2_Callback(hObject, eventdata, handles)
2137 maskval=get(handles.get_mask_fix2,'Value')
2138 if isequal(maskval,0)
2139 set(handles.mask_fix2,'String','')
2140 else
2141 mask_displ='no mask';
2142 filebase=get(handles.displ_filebase,'String');
2143 [nbslice, flag_mask]=get_mask(filebase,handles)
2144 if isequal(flag_mask,1)
2145 mask_displ=[num2str(nbslice) 'mask'];
2146 end
2147 if get(handles.compare,'Value')==1 & ~isequal(mask_displ,'no mask')
2148 filebase_a=get(handles.displ_filebase2,'String');
2149 [nbslice_a, flag_mask_a]=get_mask(filebase_a,handles)
2150 if isequal(flag_mask_a,0) | ~isequal(nbslice_a,nbslice)
2151 mask_displ='no mask';
2152 end
2153 end
2154 if isequal(mask_displ,'no mask')
2155 set(handles.get_mask_fix2,'Value',0)
2156 end
2157 set(handles.mask_fix2,'String',mask_displ)
2158 end
2159
2160
2161 function [nbslice, flag_mask]=get_mask(filebase,handles)
2162
2163
2164
2165
2166 flag_mask=0;
2167 nbslice=1;
2168
2169
2170 [Path,Name]=fileparts(filebase)
2171 currentdir=pwd;
2172 cd(Path);
2173 maskfiles=dir([Name '_*mask_*.png'])
2174 cd(currentdir);
2175 if isempty(maskfiles)
2176 browse=get(handles.browse_root,'UserData');
2177 varargin{1}='';
2178 [image_name,idetect]=name_generator(filebase,1,1,browse.ext_ima,browse.nom_type_ima);
2179 if idetect==1
2180 varargin{1}=image_name;
2181 end
2182 warndlg_uvmat('no mask available, use TOOL menu in the uvmat interface to create it','ERROR')
2183
2184 else
2185 maskname=maskfiles(1).name;
2186 [Path2,Name,ext]=fileparts(maskname);
2187 Namedouble=double(Name);
2188 val=(48>Namedouble)|(Namedouble>57);
2189 ind_mask=findstr('mask',Name);
2190 i=ind_mask-1;
2191 while val(i)==0 & i>0
2192 i=i-1;
2193 end
2194 nbslice=str2num(Name(i+1:ind_mask-1));
2195 if ~isequal(nbslice,[]) & Name(i)=='_'
2196 flag_mask=1;
2197 else
2198 errordlg(['bad mask file ' Name ext ' found in ' Path2])
2199 return
2200 nbslice=1;
2201 end
2202 end
2203
2204
2205
2206 function grid_civ1_Callback(hObject, eventdata, handles)
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218 function str=num2stra(num,nom_type);
2219 if isequal(nom_type,'png_old') | isequal(nom_type,'netc_old') |isequal(nom_type,'raw_SMD')
2220 str=char(96+num);
2221 elseif isequal(nom_type,'_i')|isequal(nom_type,'_i1-i2')...
2222 |isequal(nom_type,'ima_num')| isequal(nom_type,'avi')| isequal(nom_type,'none')
2223 str='';
2224 else
2225 str=num2str(num);
2226 end
2227
2228 function mask_civ1_Callback(hObject, eventdata, handles)
2229 set(handles.mask_civ1,'UserData',[])
2230 set(handles.mask_civ1,'String','')
2231
2232 function mask_civ2_Callback(hObject, eventdata, handles)
2233 set(handles.mask_civ2,'UserData',[])
2234 set(handles.mask_civ2,'String','')
2235
2236 function mask_fix1_Callback(hObject, eventdata, handles)
2237 set(handles.mask_fix1,'UserData',[])
2238 set(handles.mask_fix1,'String','')
2239
2240 function mask_fix2_Callback(hObject, eventdata, handles)
2241 set(handles.mask_fix2,'UserData',[])
2242 set(handles.mask_fix2,'String','')
2243
2244
2245
2246 function list_subdir_civ1_Callback(hObject, eventdata, handles)
2247
2248 filebase=get(handles.displ_filebase,'String');
2249 dirinput = uigetdir(filebase)
2250 set(handles.subdir_civ1,'String',dirinput)
2251 set(handles.subdir_civ2,'String',dirinput)
2252
2253 displ_filebase_Callback(hObject, eventdata, handles);
2254
2255
2256 function rho_civ2_Callback(hObject, eventdata, handles)
2257
2258
2259
2260
2261
2262
2263
2264
2265 function last_i_Callback(hObject, eventdata, handles)
2266 first_i=str2num(get(handles.first_i,'String'));
2267 last_i=str2num(get(handles.last_i,'String'));
2268 ref_i=ceil((first_i+last_i)/2);
2269 set(handles.ref_i,'String', num2str(ref_i))
2270 ref_i_Callback(hObject, eventdata, handles)
2271
2272
2273 function last_j_Callback(hObject, eventdata, handles)
2274 first_j=str2num(get(handles.first_j,'String'));
2275 last_j=str2num(get(handles.last_j,'String'));
2276 ref_j=ceil((first_j+last_j)/2);
2277 set(handles.ref_j,'String', num2str(ref_j))
2278 ref_j_Callback(hObject, eventdata, handles)
2279
2280
2281
2282 function browse_gridciv1_Callback(hObject, eventdata, handles)
2283 value=get(handles.browse_gridciv1,'Value');
2284 if value
2285 filebase=get(handles.displ_filebase,'String');
2286 [FileName, PathName, filterindex] = uigetfile( ...
2287 {'*.grid', ' (*.grid)';
2288 '*.grid', '.grid files '; ...
2289 '*.*', 'All Files (*.*)'}, ...
2290 'Pick a file',filebase);
2291 filegrid=fullfile(PathName,FileName);
2292 if isempty(FileName)|isempty(PathName)|isequal(FileName,0)|~exist(filegrid,'file')
2293 set(handles.browse_gridciv1,'Value',0);
2294 set(handles.grid_civ1,'string','');
2295 set(handles.dx_civ1,'Visible','on');
2296 set(handles.dy_civ1,'Visible','on');
2297 set(handles.grid_civ2,'string','');
2298 if get(handles.CIV2,'Value')
2299 set(handles.dx_civ2,'Visible','on');
2300 set(handles.dy_civ2,'Visible','on');
2301 end
2302 else
2303 set(handles.grid_civ1,'string',filegrid);
2304 set(handles.dx_civ1,'Visible','off');
2305 set(handles.dy_civ1,'Visible','off');
2306 set(handles.grid_civ2,'string',filegrid);
2307 set(handles.dx_civ2,'Visible','off');
2308 set(handles.dy_civ2,'Visible','off');
2309
2310
2311 end
2312 else
2313 set(handles.grid_civ1,'string','');
2314 set(handles.dx_civ1,'Visible','on');
2315 set(handles.dy_civ1,'Visible','on');
2316 set(handles.grid_civ2,'string','');
2317 if get(handles.CIV2,'Value')
2318 set(handles.dx_civ2,'Visible','on');
2319 set(handles.dy_civ2,'Visible','on');
2320 end
2321 end
2322
2323
2324
2325 function pxcmx_Callback(hObject, eventdata, handles)
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335 function pxcmy_Callback(hObject, eventdata, handles)
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345 function browse_gridciv2_Callback(hObject, eventdata, handles)
2346
2347 filebase=get(handles.displ_filebase,'String');
2348 [FileName, PathName, filterindex] = uigetfile( ...
2349 {'*.grid', ' (*.grid)';
2350 '*.grid', '.grid files '; ...
2351 '*.*', 'All Files (*.*)'}, ...
2352 'Pick a file',filebase);
2353 filegrid=fullfile(PathName,FileName);
2354 set(handles.grid_civ2,'string',filegrid);
2355 set(handles.dx_civ2,'String',' ');
2356 set(handles.dy_civ2,'String',' ');
2357
2358
2359
2360 function get_gridpatch1_Callback(hObject, eventdata, handles)
2361
2362
2363
2364
2365 filebase=get(handles.displ_filebase,'String');
2366 [FileName, PathName, filterindex] = uigetfile( ...
2367 {'*.grid', ' (*.grid)';
2368 '*.grid', '.grid files '; ...
2369 '*.*', 'All Files (*.*)'}, ...
2370 'Pick a file',filebase);
2371 filegrid=fullfile(PathName,FileName);
2372 set(handles.grid_patch1,'string',filegrid);
2373
2374
2375
2376
2377 function get_gridpatch2_Callback(hObject, eventdata, handles)
2378
2379
2380
2381
2382
2383
2384 function enable_civ1(handles,state)
2385 if isequal(state,0)
2386 state='off';
2387 end
2388 if isequal(state,1)
2389 state='on';
2390 end
2391 if isequal(state,'on')
2392 set(handles.frame_civ1,'BackgroundColor',[1 1 0])
2393 set(handles.frame_para_civ1,'BackgroundColor',[1 1 0])
2394 set(handles.frame_grid_civ1,'BackgroundColor',[1 1 0])
2395 else
2396 set(handles.frame_civ1,'BackgroundColor',[0.831 0.816 0.784])
2397 set(handles.frame_para_civ1,'BackgroundColor',[0.831 0.816 0.784])
2398 set(handles.frame_grid_civ1,'BackgroundColor',[0.831 0.816 0.784])
2399 end
2400 set(handles.ibx,'Visible',state)
2401 set(handles.iby,'Visible',state)
2402 set(handles.isx,'Visible',state)
2403 set(handles.isy,'Visible',state)
2404 set(handles.shiftx,'Visible',state)
2405 set(handles.shifty,'Visible',state)
2406 set(handles.rho,'Visible',state)
2407 set(handles.dx_civ1,'Visible',state)
2408 set(handles.dy_civ1,'Visible',state)
2409 set(handles.calcul_search,'Visible',state)
2410 set(handles.u_text,'Visible',state)
2411 set(handles.v_text,'Visible',state)
2412 set(handles.min,'Visible',state)
2413 set(handles.max,'Visible',state)
2414 set(handles.umin,'Visible',state)
2415 set(handles.umax,'Visible',state)
2416 set(handles.vmin,'Visible',state)
2417 set(handles.vmax,'Visible',state)
2418 set(handles.grid_civ1,'Visible',state)
2419 set(handles.mask_civ1,'Visible',state)
2420 set(handles.browse_gridciv1,'Visible',state)
2421 set(handles.get_mask_civ1,'Visible',state)
2422 set(handles.parameters,'Visible',state)
2423 set(handles.grid,'Visible',state)
2424 set(handles.dx_civ1,'Visible',state)
2425 set(handles.dy_civ1,'Visible',state)
2426 set(handles.ImaThreshold,'Visible',state)
2427 if isequal(state,'off')
2428 set(handles.MinIma,'Visible','off')
2429 set(handles.MaxIma,'Visible','off')
2430 set(handles.ImaThreshold,'Value',0)
2431 end
2432 set(handles.dx_civ1_title,'Visible',state)
2433 set(handles.dy_civ1_title,'Visible',state)
2434 set(handles.ImaThreshold_title,'Visible',state)
2435 set(handles.ib_title,'Visible',state)
2436 set(handles.is_title,'Visible',state)
2437 set(handles.shift_title,'Visible',state)
2438 set(handles.rho_title,'Visible',state)
2439
2440
2441 function enable_fix1(handles)
2442 set(handles.frame_fix1,'BackgroundColor',[1 1 0])
2443 set(handles.REMOVE,'Visible','on')
2444 set(handles.vec_Fmin2,'Visible','on')
2445 set(handles.vec_F2,'Visible','on')
2446 set(handles.vec_F3,'Visible','on')
2447 set(handles.thresh_vecC,'Visible','on')
2448 set(handles.thresh_vecC_title,'Visible','on')
2449 set(handles.thresh_vel,'Visible','on')
2450 set(handles.thresh_vel_text,'Visible','on')
2451 set(handles.mask_fix1,'Visible','on')
2452 set(handles.get_mask_fix1,'Visible','on')
2453 set(handles.get_ref_fix1,'Visible','on')
2454 set(handles.ref_fix1,'Visible','on')
2455 set(handles.inf_sup1,'Visible','on')
2456 set(handles.field_ref1,'Visible','on')
2457
2458
2459 function desable_fix1(handles)
2460 set(handles.frame_fix1,'BackgroundColor',[0.831 0.816 0.784])
2461 set(handles.REMOVE,'Visible','off')
2462 set(handles.vec_Fmin2,'Visible','off')
2463 set(handles.vec_F2,'Visible','off')
2464 set(handles.vec_F3,'Visible','off')
2465 set(handles.thresh_vecC,'Visible','off')
2466 set(handles.thresh_vecC_title,'Visible','off')
2467 set(handles.thresh_vel,'Visible','off')
2468 set(handles.thresh_vel_text,'Visible','off')
2469 set(handles.mask_fix1,'Visible','off')
2470 set(handles.get_mask_fix1,'Visible','off')
2471 set(handles.get_ref_fix1,'Visible','off')
2472 set(handles.ref_fix1,'Visible','off')
2473 set(handles.inf_sup1,'Visible','off')
2474 set(handles.field_ref1,'Visible','off')
2475
2476
2477 function enable_patch1(handles)
2478 global patch_new_exe
2479 set(handles.frame_patch1,'BackgroundColor',[1 1 0])
2480 set(handles.rho_patch1,'Visible','on')
2481 set(handles.rho_text1,'Visible','on')
2482 set(handles.thresh_patch1,'Visible','on')
2483 set(handles.thresh_text1,'Visible','on')
2484 set(handles.subdomain_patch1,'Visible','on')
2485 set(handles.subdomain_text1,'Visible','on')
2486 set(handles.nx_patch1,'Visible','on')
2487 set(handles.ny_patch1,'Visible','on')
2488 set(handles.nx_patch1_title,'Visible','on')
2489 set(handles.ny_patch1_title,'Visible','on')
2490 if (~isequal(patch_new_exe,[]) & ~isequal(patch_new_exe,[]))
2491 set(handles.test_interp,'Visible','on');
2492 end
2493 set(handles.get_gridpatch1,'Visible','on')
2494 set(handles.grid_patch1,'string','none');
2495 set(handles.grid_patch1,'Visible','on')
2496
2497
2498 function desable_patch1(handles)
2499 set(handles.frame_patch1,'BackgroundColor',[0.831 0.816 0.784])
2500 set(handles.rho_patch1,'Visible','off')
2501 set(handles.rho_text1,'Visible','off')
2502 set(handles.thresh_patch1,'Visible','off')
2503 set(handles.thresh_text1,'Visible','off')
2504 set(handles.subdomain_patch1,'Visible','off')
2505 set(handles.subdomain_text1,'Visible','off')
2506 set(handles.nx_patch1,'Visible','off')
2507 set(handles.ny_patch1,'Visible','off')
2508 set(handles.nx_patch1_title,'Visible','off')
2509 set(handles.ny_patch1_title,'Visible','off')
2510 set(handles.test_interp,'Visible','off')
2511 set(handles.get_gridpatch1,'Visible','off')
2512 set(handles.grid_patch1,'Visible','off')
2513
2514
2515 function enable_civ2(handles,state)
2516 if isequal(state,0)
2517 state='off';
2518 end
2519 if isequal(state,1)
2520 state='on';
2521 end
2522 if isequal(state,'on')
2523 set(handles.frame_civ2,'BackgroundColor',[1 1 0])
2524 set(handles.frame_para_civ2,'BackgroundColor',[1 1 0])
2525 set(handles.frame_grid_civ2,'BackgroundColor',[1 1 0])
2526 set(handles.frame_subdirciv2,'BackgroundColor',[1 1 0])
2527 else
2528 set(handles.frame_civ2,'BackgroundColor',[0.831 0.816 0.784])
2529 set(handles.frame_para_civ2,'BackgroundColor',[0.831 0.816 0.784])
2530 set(handles.frame_grid_civ2,'BackgroundColor',[0.831 0.816 0.784])
2531 set(handles.frame_subdirciv2,'BackgroundColor',[0.831 0.816 0.784])
2532 end
2533 set(handles.ibx_civ2,'Visible',state)
2534 set(handles.iby_civ2,'Visible',state)
2535 set(handles.decimal,'Visible',state)
2536 set(handles.deformation,'Visible',state)
2537 set(handles.rho_civ2,'Visible',state)
2538 set(handles.dx_civ2,'Visible',state)
2539 set(handles.dy_civ2,'Visible',state)
2540 set(handles.browse_gridciv2,'Visible',state)
2541 set(handles.get_mask_civ2,'Visible',state)
2542 set(handles.parameters,'Visible',state)
2543 set(handles.grid,'Visible',state)
2544 set(handles.parameters_text,'Visible',state)
2545 set(handles.grid_text,'Visible',state)
2546 set(handles.grid_civ2,'Visible',state)
2547 set(handles.mask_civ2,'Visible',state)
2548 set(handles.dx_civ2_title,'Visible',state)
2549 set(handles.dy_civ2_title,'Visible',state)
2550 set(handles.ibx_civ2_text,'Visible',state)
2551 set(handles.rho_civ2_title,'Visible',state)
2552 set(handles.ImaThreshold2,'Visible',state)
2553 set(handles.ImaThreshold_title2,'Visible',state)
2554 if isequal(state,'off')
2555 set(handles.MinIma2,'Visible','off')
2556 set(handles.MaxIma2,'Visible','off')
2557 set(handles.ImaThreshold2,'Value',0)
2558 if isequal(get(handles.FIX2,'Value'),0) & isequal(get(handles.PATCH2,'Value'),0)
2559 set(handles.list_pair_civ2,'Visible','off')
2560 set(handles.subdir_civ2,'Visible','off')
2561 set(handles.subdir_civ2_text,'Visible','off')
2562 end
2563 else
2564 set(handles.list_pair_civ2,'Visible','on')
2565 set(handles.subdir_civ2,'Visible','on')
2566 set(handles.subdir_civ2_text,'Visible','on')
2567 end
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602 function enable_fix2(handles)
2603 set(handles.frame_fix2,'BackgroundColor',[1 1 0])
2604 set(handles.REMOVE2,'Visible','on')
2605 set(handles.vec_Fmin2_2,'Visible','on')
2606 set(handles.vec_F4,'Visible','on')
2607 set(handles.vec_F3_2,'Visible','on')
2608 set(handles.thresh_vec2C,'Visible','on')
2609 set(handles.thresh_vec2C_text,'Visible','on')
2610 set(handles.thresh_vel2,'Visible','on')
2611 set(handles.thresh_vel2_text,'Visible','on')
2612 set(handles.mask_fix2,'Visible','on')
2613 set(handles.get_mask_fix2,'Visible','on')
2614 set(handles.list_pair_civ2,'Visible','on')
2615 set(handles.subdir_civ2,'Visible','on')
2616 set(handles.subdir_civ2_text,'Visible','on')
2617 set(handles.get_ref_fix2,'Visible','on')
2618 set(handles.ref_fix2,'Visible','on')
2619 set(handles.inf_sup2,'Visible','on')
2620 set(handles.field_ref2,'Visible','on')
2621
2622
2623 function desable_fix2(handles)
2624 set(handles.frame_fix2,'BackgroundColor',[0.831 0.816 0.784])
2625 set(handles.REMOVE2,'Visible','off')
2626 set(handles.vec_Fmin2_2,'Visible','off')
2627 set(handles.vec_F4,'Visible','off')
2628 set(handles.vec_F3_2,'Visible','off')
2629 set(handles.thresh_vec2C,'Visible','off')
2630 set(handles.thresh_vec2C_text,'Visible','off')
2631 set(handles.thresh_vel2,'Visible','off')
2632 set(handles.thresh_vel2_text,'Visible','off')
2633 set(handles.mask_fix2,'Visible','off')
2634 set(handles.get_mask_fix2,'Visible','off')
2635 set(handles.get_ref_fix2,'Visible','off')
2636 set(handles.ref_fix2,'Visible','off')
2637 set(handles.inf_sup2,'Visible','off')
2638 set(handles.field_ref2,'Visible','off')
2639 if isequal(get(handles.CIV2,'Value'),0) & isequal(get(handles.PATCH2,'Value'),0)
2640 set(handles.list_pair_civ2,'Visible','off')
2641 set(handles.subdir_civ2,'Visible','off')
2642 set(handles.subdir_civ2_text,'Visible','off')
2643 end
2644
2645
2646 function enable_patch2(handles)
2647 set(handles.frame_patch2,'BackgroundColor',[1 1 0])
2648 set(handles.rho_patch2,'Visible','on')
2649 set(handles.rho_text2,'Visible','on')
2650 set(handles.thresh_patch2,'Visible','on')
2651 set(handles.thresh_text2,'Visible','on')
2652 set(handles.subdomain_patch2,'Visible','on')
2653 set(handles.subdomain_text2,'Visible','on')
2654 set(handles.nx_patch2,'Visible','on')
2655 set(handles.ny_patch2,'Visible','on')
2656 set(handles.nx_patch2_title,'Visible','on')
2657 set(handles.ny_patch2_title,'Visible','on')
2658 set(handles.get_gridpatch2,'Visible','on')
2659 set(handles.grid_patch2,'Visible','on')
2660 set(handles.list_pair_civ2,'Visible','on')
2661 set(handles.subdir_civ2,'Visible','on')
2662 set(handles.subdir_civ2_text,'Visible','on')
2663
2664
2665 function desable_patch2(handles)
2666 set(handles.frame_patch2,'BackgroundColor',[0.831 0.816 0.784])
2667 set(handles.rho_patch2,'Visible','off')
2668 set(handles.rho_text2,'Visible','off')
2669 set(handles.thresh_patch2,'Visible','off')
2670 set(handles.thresh_text2,'Visible','off')
2671 set(handles.subdomain_patch2,'Visible','off')
2672 set(handles.subdomain_text2,'Visible','off')
2673 set(handles.nx_patch2,'Visible','off')
2674 set(handles.ny_patch2,'Visible','off')
2675 set(handles.nx_patch2_title,'Visible','off')
2676 set(handles.ny_patch2_title,'Visible','off')
2677 set(handles.get_gridpatch2,'Visible','off')
2678 set(handles.grid_patch2,'Visible','off')
2679 if isequal(get(handles.CIV2,'Value'),0) & isequal(get(handles.FIX2,'Value'),0)
2680 set(handles.list_pair_civ2,'Visible','off')
2681 set(handles.subdir_civ2,'Visible','off')
2682 set(handles.subdir_civ2_text,'Visible','off')
2683 end
2684
2685
2686 function test_interp_Callback(hObject, eventdata, handles)
2687
2688
2689
2690
2691
2692 function par=read_param_civ1(handles,file_ima)
2693
2694 ibx_val=str2num(get(handles.ibx,'String'));
2695 par.correlationBoxesSize_X=num2str(ibx_val);
2696 iby_val=str2num(get(handles.iby,'String'));
2697 par.correlationBoxesSize_Y=num2str(iby_val);
2698 ibz_val=str2num(get(handles.ibz,'String'));
2699 par.correlationBoxesSize_Z=num2str(ibz_val);
2700 isx=get(handles.isx,'String');
2701 if isempty(str2num(isx)), isx='41'; set(handles.isx,'String','41'), end;
2702 maxDisplacement_X=floor((str2num(isx)-ibx_val)/2);
2703 par.maxDisplacement_X=num2str(maxDisplacement_X);
2704 isy=get(handles.isy,'String');
2705 if isempty(str2num(isy)), isy='41'; set(handles.isy,'String','41'), end;
2706 maxDisplacement_Y=floor((str2num(isy)-iby_val)/2);
2707 par.maxDisplacement_Y=num2str(maxDisplacement_Y);
2708 isz=get(handles.isz,'String');
2709 if isempty(str2num(isz)), isz='41'; set(handles.isz,'String','41'), end;
2710 maxDisplacement_Z=floor((str2num(isz)-ibz_val)/2);
2711 par.maxDisplacement_Z=num2str(maxDisplacement_Z);
2712
2713 par.gridSpacing_X=get(handles.dx_civ1,'String');
2714 par.gridSpacing_Y=get(handles.dy_civ1,'String');
2715 par.gridSpacing_Z=get(handles.dz_civ1,'String');
2716
2717 Zmax=str2num(get(handles.nb_field2,'String'));
2718 par.gridLimits_Xmin=0;
2719 par.gridLimits_Ymin=0;
2720 par.gridLimits_Zmin=0;
2721
2722
2723 par.gridLimits_Xmax=1024;
2724 par.gridLimits_Ymax=1024;
2725 par.gridLimits_Zmax=Zmax;
2726 par.grid='grille';
2727 par.grid_division=4;
2728 par.hart=0;
2729 par.ratioHoverZ=1;
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781 function cmd_CIV1=BATCH_CIV1(filename,namelog,par,handles)
2782
2783 global civ1_exe Civ_exe sge
2784
2785
2786
2787 if isequal(par.Dt,'0')
2788 par.Dt='1' ;
2789 end
2790
2791 textcmx={'############## CMX file';...
2792 ['FirstImage ' par.filename_ima_a];...
2793 ['LastImage ' par.filename_ima_b];...
2794 'XX' ;...
2795 ['Mask ' par.maskflag] ;...
2796 ['MaskName ' par.maskname];...
2797 ['ImageSize ' par.npx ' ' par.npy];...
2798 ['CorrelationBoxesSize ' par.ibx ' ' par.iby];...
2799 ['SearchBoxeSize ' par.isx ' ' par.isy];...
2800 ['RO ' par.rho];...
2801 ['GridSpacing ' par.dx ' ' par.dy];...
2802 'XX 1.0';...
2803 ['Dt_TO ' par.Dt ' ' par.T0];...
2804 ['PixCmXY ' par.pxcmx ' ' par.pxcmy];...
2805 'XX 1';...
2806 ['ShiftXY ' par.shiftx ' ' par.shifty];...
2807 ['Grid ' par.gridflag];...
2808 ['GridName ' par.gridname] ;...
2809 'XX 85';...
2810 'XX 1.0';...
2811 'XX 1.0';...
2812 'Hart 1';...
2813 'DecimalShift 0';...
2814 'Deformation 0';...
2815 'CorrelationMin 0';...
2816 'IntensityMin 0';...
2817 'SeuilImage n';...
2818 'SeuilImageValues 0 4096';...
2819 ['ImageToUse ' par.term_a ' ' par.term_b];...
2820 'ImageUsedBefore null null'};
2821
2822 textout=char(textcmx);
2823
2824 dlmwrite([filename '.cmx'],textout,'');
2825
2826
2827 if sge
2828 cmd_CIV1=[civ1_exe ' -f ' filename '.cmx' ];
2829 else
2830 cmd_CIV1=[civ1_exe ' -f ' filename_cmx ' > ' namelog ' 2>&1'];
2831 end
2832 if(isunix)
2833 [Rootbat,Filebat,extbat]=fileparts(namelog);
2834 ncName=fullfile(Rootbat,[ Filebat '.nc']);
2835 cmd_CIV1=char({cmd_CIV1 ; ['mv ' namelog ' ' namelog '.civ1.log'];['chmod g+w ' ncName]});
2836 else
2837 cmd_CIV1=char({cmd_CIV1 ; ['copy /Y ' namelog ' ' namelog '.civ1.log']});
2838 end
2839
2840
2841
2842
2843 function xml_civ1_parameters=BATCH_CIV1_Unified(filename,namelog,par,handles)
2844
2845 global civ1_exe Civ_exe
2846
2847 civ1.image1=par.filename_ima_a;
2848 civ1.image2=par.filename_ima_b;
2849 civ1.imageSize_X=par.npx;
2850 civ1.imageSize_Y=par.npy;
2851 civ1.outputFileName=[filename '.nc'];
2852 civ1.correlationBoxesSize_X=par.ibx;
2853 civ1.correlationBoxesSize_Y=par.iby;
2854 civ1.searchBoxesSize_X=par.isx;
2855 civ1.searchBoxesSize_Y=par.isy;
2856 civ1.globalShift_X=par.shiftx;
2857 civ1.globalShift_Y=par.shifty;
2858 civ1.ro=par.rho;
2859 civ1.hart='y';
2860 if isequal(par.gridflag,'y')
2861 civ1.grid=par.gridname;
2862 end
2863 civ1.gridSpacing_X=par.dx;
2864 civ1.gridSpacing_Y=par.dy;
2865 if isequal(par.maskflag,'y')
2866 civ1.mask=par.maskname;
2867 end
2868 civ1.dt=par.Dt;
2869 civ1.unit='pixel';
2870 civ1.absolut_time_T0=par.T0;
2871 civ1.pixcmx=par.pxcmx;
2872 civ1.pixcmy=par.pxcmy;
2873 civ1.convectFlow='n';
2874
2875 xml_civ1_parameters=civ1;
2876
2877
2878
2879
2880 function cmd_CIV2=BATCH_CIV2(filename_cmx,namelog,par)
2881
2882 global civ2_exe sge
2883 if isequal(par.Dt,'0')
2884 par.Dt='1' ;
2885 end
2886 textcmx={'############## CMX file';...
2887 ['FirstImage ' par.filename_ima_a];...
2888 ['LastImage ' par.filename_ima_b];...
2889 'XX' ;...
2890 ['Mask ' par.maskflag];...
2891 ['MaskName ' par.maskname];...
2892 ['ImageSize ' par.npx ' ' par.npy];...
2893 ['CorrelationBoxesSize ' par.ibx ' ' par.iby];...
2894 ['SearchBoxeSize ' par.ibx ' ' par.iby];...
2895 ['RO ' par.rho];...
2896 ['GridSpacing ' par.dx ' ' par.dy];...
2897 'XX 1.0';...
2898 ['Dt_TO ' par.Dt ' ' par.T0];...
2899 ['PixCmXY ' par.pxcmx ' ' par.pxcmy];...
2900 'XX 1';...
2901 ['ShiftXY 0 0'];...
2902 ['Grid ' par.gridflag];...
2903 ['GridName ' par.gridname];...
2904 'XX 85';...
2905 'XX 1.0';...
2906 'XX 1.0';...
2907 'Hart 1';...
2908 ['DecimalShift ' par.decimal];...
2909 ['Deformation ' par.deformation];...
2910 'CorrelationMin 0';...
2911 'IntensityMin 0';...
2912 'SeuilImage n';...
2913 'SeuilImageValues 0 4096';...
2914 ['ImageToUse ' par.term_a ' ' par.term_b];...
2915 ['ImageUsedBefore ' par.filename_nc1]};
2916 textout=char(textcmx);
2917 dlmwrite([filename_cmx '2'] ,textout,'');
2918 if sge
2919 cmd_CIV2=[civ2_exe ' -f ' filename_cmx ];
2920 else
2921 cmd_CIV2=[civ2_exe ' -f ' filename_cmx ' > ' namelog ' 2>&1'];
2922 end
2923
2924
2925
2926 function HELP_Callback(hObject, eventdata, handles)
2927 path_to_uvmat=which ('uvmat');
2928 pathelp=fileparts(path_to_uvmat);
2929 helpfile=fullfile(pathelp,'UVMAT_DOC','uvmat_doc.html');
2930 if isempty(dir(helpfile)), errordlg('Please put the help file uvmat_doc.html in the directory UVMAT/UVMAT_DOC')
2931 else
2932 web([helpfile '#civ_3D'])
2933 end
2934
2935
2936
2937
2938 function A=read_image(filename,nom_type,npx,npy,num);
2939
2940
2941 if isequal(nom_type,'avi')
2942 mov=aviread(filename,num);
2943 A=frame2im(mov(1));
2944 A=sum(double(A),3);
2945 A=uint16(A);
2946 elseif isequal(nom_type,'raw_SMD')
2947 [fid,message]=fopen(filename,'r');
2948 B=fread(fid,Inf,'int16',0,'ieee-le');
2949 A=(reshape(B,npx,npy))';
2950 A=uint16(A);
2951 fclose(fid);
2952 else
2953 A=imread(filename);
2954 siz=size(A);
2955 if length(siz)==3;
2956 A=sum(double(A),3);
2957 end
2958 A=uint16(A);
2959 end
2960
2961
2962
2963
2964 function dt_Callback(hObject, eventdata, handles)
2965
2966
2967 dt=(1/1000)*str2num(get(handles.dt,'String'));
2968 nbfield=str2num(get(handles.nb_field,'String'));
2969 time=(dt*[0:nbfield-1])';
2970
2971 set(handles.displ_filebase,'UserData',time);
2972 for index=1:min(nbfield-1,200)
2973 displ_num(1,index)=1;
2974 displ_num(2,index)=1;
2975 displ_num(3,index)=-floor(index/2);
2976 displ_num(4,index)=ceil(index/2);
2977 end
2978 set(handles.list_pair_civ1,'Value',1);
2979 set(handles.list_pair_civ1,'UserData',displ_num);
2980 set(handles.list_pair_civ2,'Value',1);
2981
2982 find_netcpair_civ1(hObject, eventdata, handles)
2983 find_netcpair_civ2(hObject, eventdata, handles)
2984
2985
2986 function ref_i_Callback(hObject, eventdata, handles)
2987 mode_list=get(handles.mode,'String');
2988 mode_value=get(handles.mode,'Value');
2989 mode=mode_list{mode_value};
2990 if isequal(get(handles.CIV1,'Value'),0)| isequal(mode,'series(Di)')
2991 find_netcpair_civ1(hObject, eventdata, handles);
2992 end
2993 if isequal(mode,'series(Di)') | ...
2994 (get(handles.CIV2,'Value')==0 & get(handles.CIV1,'Value')==0 & get(handles.FIX1,'Value')==0 & get(handles.PATCH1,'Value')==0)
2995 find_netcpair_civ2(hObject, eventdata, handles);
2996 end
2997
2998
2999 function ref_j_Callback(hObject, eventdata, handles)
3000 mode_list=get(handles.mode,'String');
3001 mode_value=get(handles.mode,'Value');
3002 mode=mode_list{mode_value};
3003 if isequal(get(handles.CIV1,'Value'),0)| isequal(mode,'series(Dj)')
3004 find_netcpair_civ1(hObject, eventdata, handles);
3005 end
3006 if isequal(mode,'series(Dj)') | ...
3007 (get(handles.CIV2,'Value')==0 & get(handles.CIV1,'Value')==0 & get(handles.FIX1,'Value')==0 & get(handles.PATCH1,'Value')==0)
3008 find_netcpair_civ2(hObject, eventdata, handles);
3009 end
3010
3011
3012 function compare_Callback(hObject, eventdata, handles)
3013 test=get(handles.compare,'Value');
3014 if test
3015 filebase=get(handles.displ_filebase,'String');
3016 browse=get(handles.browse_root,'Userdata');
3017 browse.nom_type_ima1=browse.nom_type_ima;
3018 set(handles.browse_root,'UserData',browse);
3019 set(handles.displ_filebase2,'Visible','On');
3020 set(handles.displ_filebase2,'String',filebase);
3021 mode_store=get(handles.mode,'String');
3022 set(handles.compare,'UserData',mode_store);
3023 set(handles.mode,'Value',1)
3024 set(handles.mode,'String',{'displacement';'st_pair j1-j2'})
3025 else
3026 set(handles.displ_filebase2,'Visible','Off');
3027 set(handles.displ_filebase2,'String',[]);
3028 mode_store=get(handles.compare,'UserData');
3029 set(handles.mode,'String',mode_store)
3030 set(handles.test_stereo1,'Value',0)
3031 set(handles.test_stereo2,'Value',0)
3032 end
3033 mode_Callback(hObject, eventdata, handles)
3034
3035
3036
3037 function get_ref_fix1_Callback(hObject, eventdata, handles)
3038 filebase=get(handles.displ_filebase,'String');
3039 [FileName, PathName, filterindex] = uigetfile( ...
3040 {'*.nc', ' (*.nc)';
3041 '*.nc', 'netcdf files '; ...
3042 '*.*', 'All Files (*.*)'}, ...
3043 'Pick a file',filebase);
3044
3045 fileinput=[PathName FileName];
3046 sizf=size(fileinput);
3047 if (~ischar(fileinput)|~isequal(sizf(1),1)),return;end
3048
3049 [Path,File,field_count,str2,str_a,str_b,ref.ext,ref.nom_type,ref.subdir]=name2display(fileinput);
3050
3051
3052
3053 ref.filebase=fullfile(Path,File);
3054 ref.num_a=stra2num(str_a);
3055 ref.num_b=stra2num(str_b);
3056 ref.num1=str2num(field_count);
3057 ref.num2=str2num(str2);
3058 browse=[];
3059 if ~isequal(ref.ext,'.nc')
3060 errordlg('the reference file must be in netcdf format (*.nc)')
3061 return
3062 end
3063
3064 set(handles.ref_fix1,'String',[fullfile(ref.subdir,File) '....nc']);
3065 set(handles.ref_fix1,'UserData',ref)
3066 menu_field{1}='civ1';
3067 Data=nc2struct(fileinput,[]);
3068 if isfield(Data,'patch') & isequal(Data.patch,1)
3069 menu_field{2}='filter1';
3070 end
3071 if isfield(Data,'civ2') & isequal(Data.civ2,1)
3072 menu_field{3}='civ2';
3073 end
3074 if isfield(Data,'patch2') & isequal(Data.patch2,1)
3075 menu_field{4}='filter2';
3076 end
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087 set(handles.field_ref1,'String',menu_field);
3088 set(handles.field_ref1,'Value',length(menu_field));
3089 set(handles.inf_sup1,'Value',2);
3090 set(handles.thresh_vel,'String','1');
3091 set(handles.ref_fix1,'Enable','on')
3092
3093
3094
3095 function get_ref_fix2_Callback(hObject, eventdata, handles)
3096 if isequal(get(handles.get_ref_fix2,'Value'),1)
3097 filebase=get(handles.displ_filebase,'String');
3098 [FileName, PathName, filterindex] = uigetfile( ...
3099 {'*.nc', ' (*.nc)';
3100 '*.nc', 'netcdf files '; ...
3101 '*.*', 'All Files (*.*)'}, ...
3102 'Pick a file',filebase);
3103 fileinput=[PathName FileName];
3104 sizf=size(fileinput);
3105 if (~ischar(fileinput)|~isequal(sizf(1),1)),return;end
3106
3107 [Path,File,field_count,str2,str_a,str_b,ref.ext,ref.nom_type,ref.subdir]=name2display(fileinput);
3108
3109
3110 ref.filebase=fullfile(Path,File)
3111 ref.num_a=stra2num(str_a);
3112 ref.num_b=stra2num(str_b);
3113 ref.num1=str2num(field_count);
3114 ref.num2=str2num(str2);
3115 browse=[];
3116 if ~isequal(ref.ext,'.nc')
3117 errordlg('the reference file must be in netcdf format (*.nc)')
3118 return
3119 end
3120
3121 set(handles.ref_fix2,'String',[fullfile(ref.subdir,File) '....nc']);
3122 set(handles.ref_fix2,'UserData',ref)
3123 menu_field{1}='civ1';
3124
3125 Data=nc2struct(fileinput,[]);
3126 if isfield(Data,'patch') & isequal(Data.patch,1)
3127 menu_field{2}='filter1';
3128 end
3129 if isfield(Data,'civ2') & isequal(Data.civ2,1)
3130 menu_field{3}='civ2';
3131 end
3132 if isfield(Data,'patch2') & isequal(Data.patch2,1)
3133 menu_field{4}='filter2';
3134 end
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145 set(handles.field_ref2,'String',menu_field);
3146 set(handles.field_ref2,'Value',length(menu_field));
3147 set(handles.inf_sup2,'Value',2);
3148 set(handles.thresh_vel2,'String','1');
3149 set(handles.ref_fix2,'Enable','on')
3150 set(handles.ref_fix2,'Visible','on')
3151 set(handles.field_ref2,'Visible','on')
3152 else
3153 set(handles.ref_fix2,'Visible','off')
3154 set(handles.field_ref2,'Visible','off')
3155 end
3156
3157
3158 function ref_fix1_Callback(hObject, eventdata, handles)
3159 set(handles.inf_sup1,'Value',1);
3160 set(handles.field_ref1,'Value',1)
3161 set(handles.field_ref1,'String',{' '})
3162 set(handles.ref_fix1,'UserData',[]);
3163 set(handles.ref_fix1,'String','');
3164 set(handles.thresh_vel1,'String','0');
3165
3166
3167
3168
3169 function ref_fix2_Callback(hObject, eventdata, handles)
3170 set(handles.inf_sup2,'Value',1);
3171 set(handles.field_ref2,'Value',1)
3172 set(handles.field_ref2,'String',{' '})
3173 set(handles.ref_fix2,'UserData',[]);
3174 set(handles.ref_fix2,'String','');
3175 set(handles.thresh_vel2,'String','0');
3176
3177
3178
3179 function inf_sup1_Callback(hObject, eventdata, handles)
3180
3181
3182
3183
3184
3185 function field_ref_Callback(hObject, eventdata, handles)
3186
3187
3188
3189
3190 function field_ref2_Callback(hObject, eventdata, handles)
3191
3192
3193
3194
3195 function numres=stra2num(str)
3196 numres=double(str)-96;
3197 if double(str) >= 48 & double(str) <= 57
3198 numres=str2num(str);
3199 end
3200
3201
3202
3203 function test_stereo1_Callback(hObject, eventdata, handles)
3204 if isequal(get(handles.test_stereo1,'Value'),0)
3205 set(handles.subdomain_patch1,'Visible','on')
3206 set(handles.rho_patch1,'Visible','on')
3207 else
3208 set(handles.subdomain_patch1,'Visible','off')
3209 set(handles.rho_patch1,'Visible','off')
3210 end
3211
3212
3213 function test_stereo2_Callback(hObject, eventdata, handles)
3214 if isequal(get(handles.test_stereo2,'Value'),0)
3215 set(handles.subdomain_patch2,'Visible','on')
3216 set(handles.rho_patch2,'Visible','on')
3217 else
3218 set(handles.subdomain_patch2,'Visible','off')
3219 set(handles.rho_patch2,'Visible','off')
3220 end
3221
3222
3223 function ImaThreshold_Callback(hObject, eventdata, handles)
3224 if isequal(get(handles.ImaThreshold,'Value'),1)
3225 set(handles.MinIma,'Visible','on')
3226 set(handles.MaxIma,'Visible','on')
3227 else
3228 set(handles.MinIma,'Visible','off')
3229 set(handles.MaxIma,'Visible','off')
3230 end
3231
3232
3233
3234 function ImaThreshold2_Callback(hObject, eventdata, handles)
3235 if isequal(get(handles.ImaThreshold2,'Value'),1)
3236 set(handles.MinIma2,'Visible','on')
3237 set(handles.MaxIma2,'Visible','on')
3238 else
3239 set(handles.MinIma2,'Visible','off')
3240 set(handles.MaxIma2,'Visible','off')
3241 end
3242
3243
3244
3245
3246 function Experimental_Callback(hObject, eventdata, handles)
3247
3248
3249
3250 function ibz_Callback(hObject, eventdata, handles)
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260 function ibz_CreateFcn(hObject, eventdata, handles)
3261
3262
3263
3264
3265
3266
3267 if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
3268 set(hObject,'BackgroundColor','white');
3269 end
3270
3271
3272
3273 function edit74_Callback(hObject, eventdata, handles)
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283 function edit74_CreateFcn(hObject, eventdata, handles)
3284
3285
3286
3287
3288
3289
3290 if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
3291 set(hObject,'BackgroundColor','white');
3292 end
3293
3294
3295
3296 function edit75_Callback(hObject, eventdata, handles)
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306 function edit75_CreateFcn(hObject, eventdata, handles)
3307
3308
3309
3310
3311
3312
3313 if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
3314 set(hObject,'BackgroundColor','white');
3315 end
3316
3317
3318
3319 function dz_civ1_Callback(hObject, eventdata, handles)
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329 function dz_civ1_CreateFcn(hObject, eventdata, handles)
3330
3331
3332
3333
3334
3335
3336 if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
3337 set(hObject,'BackgroundColor','white');
3338 end
3339
3340