- Timestamp:
- Jun 21, 2012, 7:16:22 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/civ.m
r461 r465 1130 1130 %% check if the binaries exist 1131 1131 ListProgram=get(handles.ListProgram,'String'); 1132 CivMode=ListProgram{get(handles.ListProgram,'Value')};1132 Param.CivMode=ListProgram{get(handles.ListProgram,'Value')}; 1133 1133 binary_list={}; 1134 switch CivMode1134 switch Param.CivMode 1135 1135 case 'CivX' 1136 1136 binary_list={'Civ1Bin','Civ2Bin','PatchBin','FixBin'}; … … 1158 1158 return 1159 1159 end 1160 1160 1161 else %look for the full path if the file name has been defined with a relative path in PARAM.xm 1161 1162 fullname=fullfile(path_civ,Param.xml.(bin_name{1})); … … 1182 1183 return 1183 1184 end 1184 % if isempty(filecell)% (error message displayed in fct set_civ_filenames)1185 % return1186 % end1187 Rootbat=fileparts(filecell.nc.civ1{1,1});%output netcdf file (without extention)1188 1185 set(handles.civ,'UserData',filecell);%store for futur use of status callback 1186 1187 1188 %% create subfolders for log, cmx, nml, xml, bat 1189 RootBat=fileparts(filecell.nc.civ1{1,1}) 1190 dir_list={'0_BAT','0_CMX','0_XML','0_LOG',} 1191 for k=1:length(dir_list) 1192 if ~exist(fullfile(RootBat,dir_list{k}),'dir') 1193 mkdir(fullfile(RootBat,dir_list{k})); 1194 end 1195 end 1196 1197 1198 %% PARTIE A VERIFIER 1199 %output netcdf file (without extention) Joel what does this mean ? 1189 1200 nbfield=numel(i1_civ1); 1190 1201 nbslice=numel(j1_civ1); 1191 if ~strcmp( CivMode,'CivX')1202 if ~strcmp(Param.CivMode,'CivX') 1192 1203 if Param.CheckCiv1 1193 1204 [Param.Civ1.FileTypeA,FileInfo,Param.Civ1.ImageA]=get_file_type(filecell.ima1.civ1{1}); … … 1208 1219 for ifile=1:nbfield 1209 1220 for j=1:nbslice 1210 % initiate system command 1211 switch CivMode 1212 case 'CivX' 1213 if isunix % check: necessaire aussi en RUN? 1214 cmd=['#!/bin/bash \n '... 1215 '#$ -cwd \n '... 1216 'hostname && date \n '... 1217 'umask 002 \n'];%allow writting access to created files for user group 1218 else 1219 cmd=[]; 1220 end 1221 case 'CivAll' 1222 CivAllxml=xmltree;% xml contents, all parameters 1223 CivAllCmd=''; 1224 CivAllxml=set(CivAllxml,1,'name','CivDoc'); 1225 end 1221 1226 1222 1227 1223 % define output file name 1228 1224 if Param.CheckCiv2==1 || Param.CheckFix2==1 || Param.CheckPatch2==1 1229 OutputFile=filecell.nc.civ2{ifile,j};1225 Param.OutputFile=filecell.nc.civ2{ifile,j}; 1230 1226 else 1231 OutputFile=filecell.nc.civ1{ifile,j};1232 end 1233 OutputFile=regexprep(OutputFile,'.nc','');1234 1227 Param.OutputFile=filecell.nc.civ1{ifile,j}; 1228 end 1229 Param.OutputFile=regexprep(Param.OutputFile,'.nc',''); 1230 1235 1231 if Param.CheckCiv1 1236 1232 % read image-dependent parameters … … 1242 1238 end 1243 1239 Param.Civ1.Time=((time(i2_civ1(ifile)+1,j2_civ1(j)+1)+time(i1_civ1(ifile)+1,j1_civ1(j)+1))/2); 1244 if strcmp( CivMode,'CivX')1240 if strcmp(Param.CivMode,'CivX') 1245 1241 Param.Civ1.term_a=num2stra(j1_civ1(j),nom_type_nc);%UTILITE? 1246 1242 Param.Civ1.term_b=num2stra(j2_civ1(j),nom_type_nc);% … … 1296 1292 end 1297 1293 1298 % send command1299 switch CivMode1300 case 'CivX'1301 [cmd_civ,errormsg]=cmd_civ1(filecell.nc.civ1{ifile,j},Param);1302 cmd=[cmd cmd_civ '\n'];1303 if ~isempty(errormsg)1304 return1305 end1306 case 'CivAll'1307 CivAllCmd=[CivAllCmd ' civ1 '];1308 str=CIV1_CMD_Unified(filecell.nc.civ1{ifile,j},'',Param.Civ1);1309 fieldnames=fields(str);1310 [CivAllxml,uid_civ1]=add(CivAllxml,1,'element','civ1');1311 for ilist=1:length(fieldnames)1312 val=eval(['str.' fieldnames{ilist}]);1313 if ischar(val)1314 [CivAllxml,uid_t]=add(CivAllxml,uid_civ1,'element',fieldnames{ilist});1315 [CivAllxml,uid_t2]=add(CivAllxml,uid_t,'chardata',val);1316 end1317 end1318 end1319 1294 end 1320 1295 1321 if Param.CheckFix11322 switch CivMode1323 case 'CivX'1324 cmd=[cmd...1325 cmd_fix(filecell.nc.civ1{ifile,j},Param,'Fix1') '\n'];1326 case 'CivAll'%to abandon1327 fix1.inputFileName=filecell.nc.civ1{ifile,j} ;1328 fix1.fi1=num2str(param.fix1.flagindex1(1));1329 fix1.fi2=num2str(param.fix1.flagindex1(2));1330 fix1.fi3=num2str(param.fix1.flagindex1(3));1331 fix1.threshC=num2str(param.fix1.thresh_vecC1);1332 fix1.threshV=num2str(param.fix1.thresh_vel1);1333 fieldnames=fields(fix1);1334 [CivAllxml,uid_fix1]=add(CivAllxml,1,'element','fix1');1335 for ilist=1:length(fieldnames)1336 val=eval(['fix1.' fieldnames{ilist}]);1337 if ischar(val)1338 [CivAllxml,uid_t]=add(CivAllxml,uid_fix1,'element',fieldnames{ilist});1339 [CivAllxml,uid_t2]=add(CivAllxml,uid_t,'chardata',val);1340 end1341 end1342 CivAllCmd=[CivAllCmd ' fix1 '];1343 end1344 end1345 1346 %CheckPatch11347 if Param.CheckPatch1==11348 switch CivMode1349 case 'CivX'1350 cmd=[cmd...1351 cmd_patch(filecell.nc.civ1{ifile,j},Param,'Patch1') '\n'];1352 case 'CivAll'1353 patch1.inputFileName=filecell.nc.civ1{ifile,j} ;1354 patch1.nopt=subdomain_patch1;1355 patch1.maxdiff=thresh_patch1;1356 patch1.ro=rho_patch1;1357 test_grid=get(handles.get_gridpatch1,'Value');1358 if test_grid1359 patch1.gridflag='y';1360 gridname=get(handles.grid_patch1,'String');1361 if isequal(gridname(end-3:end),'grid')1362 nbslice_grid=str2double(gridname(1:end-4)); %1363 if ~isnan(nbslice_grid)1364 i1_grid=mod(i1_civ1(ifile)-1,nbslice_grid)+1;1365 patch1.gridPatch=[filecell.filebase '_' fullfile_uvmat('','',gridname,'.grid','_1',i1_grid)];1366 % patch1.gridPatch=[filecell.filebase '_' name_generator(gridname,i1_grid,1,'.grid','_i')];1367 if ~exist(patch1.gridPatch,'file')1368 errormsg='grid file absent for patch1';1369 return1370 end1371 elseif exist(gridname,'file')1372 patch1.gridPatch=gridname;1373 else1374 errormsg='grid file absent for patch1';1375 return1376 end1377 end1378 else1379 patch1.gridPatch='none';1380 patch1.gridflag='n';1381 patch1.m=nx_patch1;1382 patch1.n=ny_patch1;1383 end1384 patch1.convectFlow='n';1385 fieldnames=fields(patch1);1386 [CivAllxml,uid_patch1]=add(CivAllxml,1,'element','patch1');1387 for ilist=1:length(fieldnames)1388 val=eval(['patch1.' fieldnames{ilist}]);1389 if ischar(val)1390 [CivAllxml,uid_t]=add(CivAllxml,uid_patch1,'element',fieldnames{ilist});1391 [CivAllxml,uid_t2]=add(CivAllxml,uid_t,'chardata',val);1392 end1393 end1394 CivAllCmd=[CivAllCmd ' patch1 '];1395 end1396 end1397 1296 if Param.CheckCiv2==1 1398 1297 if isfield(Param.Civ2,'FileTypeA') &&(strcmp(Param.Civ2.FileTypeA,'video')|| strcmp(Param.Civ2.FileTypeA,'mmreader')) … … 1420 1319 end 1421 1320 Param.Civ2.Time=(time(i2_civ2(ifile)+1,j2_civ2(j)+1)+time(i1_civ2(ifile)+1,j1_civ2(j)+1))/2; 1422 if strcmp( CivMode,'CivX')1423 Param.Civ2.term_a=num2stra(j1_civ2(j),nom_type_nc);1424 Param.Civ2.term_b=num2stra(j2_civ2(j),nom_type_nc);1321 if strcmp(Param.CivMode,'CivX') 1322 Param.Civ2.term_a=num2stra(j1_civ2(j),nom_type_nc); 1323 Param.Civ2.term_b=num2stra(j2_civ2(j),nom_type_nc); 1425 1324 end 1426 1325 Param.Civ2.filename_nc1=filecell.nc.civ1{ifile,j}; 1427 1326 Param.Civ2.filename_nc1(end-2:end)=[]; % remove '.nc' 1428 1327 1429 % mask 1328 % mask 1430 1329 if Param.Civ2.CheckMask 1431 1330 if ~exist(Param.Civ2.Mask,'file') … … 1435 1334 [RootPathMask,RootFileMask]=fileparts(maskbase); 1436 1335 Param.Civ2.Mask=fullfile_uvmat(RootPathMask,[],RootFileMask,'.png','_1',i1_mask); 1437 % Param.Civ2.Mask=name_generator(maskbase,i1_mask,1,'.png','_i');1336 % Param.Civ2.Mask=name_generator(maskbase,i1_mask,1,'.png','_i'); 1438 1337 end 1439 1338 end … … 1445 1344 i1_grid=mod(i1_civ2(ifile)-1,nbslice_grid)+1; 1446 1345 Param.Civ2.Grid=[filecell.filebase '_' fullfile_uvmat('','',gridname,'.grid','_1',i1_grid)]; 1447 % Param.Civ2.Grid=[filecell.filebase '_' name_generator(gridname,i1_grid,1,'.grid','_i')];1346 % Param.Civ2.Grid=[filecell.filebase '_' name_generator(gridname,i1_grid,1,'.grid','_i')]; 1448 1347 end 1449 1348 end … … 1451 1350 form=imformats(regexprep(get(handles.ImaExt,'String'),'^.',''));%look for image formats 1452 1351 if isempty(form) 1453 % ImageInfo=get(VideoReader(fullfile());1352 % ImageInfo=get(VideoReader(fullfile()); 1454 1353 Param.Civ2.ImageBitDepth=ImageInfo.BitsPerPixel/3; 1455 1354 else … … 1460 1359 Param.Civ2.ImageHeight=ImageInfo.Height; 1461 1360 Param.Civ2.FrameIndexA=i1_civ2(ifile); 1462 Param.Civ2.FrameIndexB=i2_civ2(ifile); 1463 % Param.Civ2.i1=i1_civ2(ifile); 1464 % Param.Civ2.i2=i2_civ2(ifile); 1465 switch CivMode 1466 case 'CivX' 1467 cmd=[cmd... 1468 cmd_civ2(filecell.nc.civ2{ifile,j},Param) '\n']; 1469 case 'CivAll' 1470 CivAllCmd=[CivAllCmd ' civ2 ']; 1471 str=CIV2_CMD_Unified(filecell.nc.civ2{ifile,j},'',Param.Civ2); 1472 fieldnames=fields(str); 1473 [CivAllxml,uid_civ2]=add(CivAllxml,1,'element','civ2'); 1474 for ilist=1:length(fieldnames) 1475 val=eval(['str.' fieldnames{ilist}]); 1476 if ischar(val) 1477 [CivAllxml,uid_t]=add(CivAllxml,uid_civ2,'element',fieldnames{ilist}); 1478 [CivAllxml,uid_t2]=add(CivAllxml,uid_t,'chardata',val); 1479 end 1480 end 1481 end 1361 Param.Civ2.FrameIndexB=i2_civ2(ifile); 1362 1482 1363 end 1483 1364 1484 % CheckFix21485 if Param.CheckFix2==11486 switch CivMode1487 case 'CivX'1488 cmd=[cmd...1489 cmd_fix(filecell.nc.civ2{ifile,j},Param,'Fix2') '\n'];1490 case 'CivAll'1491 fix2.inputFileName=filecell.nc.civ2{ifile,j} ;1492 fix2.fi1=num2str(flagindex2(1));1493 fix2.fi2=num2str(flagindex2(2));1494 fix2.fi3=num2str(flagindex2(3));1495 fix2.threshC=num2str(thresh_vec2C);1496 fix2.threshV=num2str(thresh_vel2);1497 fieldnames=fields(fix2);1498 [CivAllxml,uid_fix2]=add(CivAllxml,1,'element','fix2');1499 for ilist=1:length(fieldnames)1500 val=eval(['fix2.' fieldnames{ilist}]);1501 if ischar(val)1502 [CivAllxml,uid_t]=add(CivAllxml,uid_fix2,'element',fieldnames{ilist});1503 [CivAllxml,uid_t2]=add(CivAllxml,uid_t,'chardata',val);1504 end1505 end1506 CivAllCmd=[CivAllCmd ' fix2 '];1507 end1508 end1509 1365 1510 %CheckPatch2 1511 if Param.CheckPatch2==1 1512 1513 switch CivMode 1514 1515 case 'CivX' 1516 cmd=[cmd... 1517 cmd_patch(filecell.nc.civ1{ifile,j},Param,'Patch2') '\n']; 1518 1519 case 'CivAll' 1520 patch2.inputFileName=filecell.nc.civ1{ifile,j} ; 1521 patch2.nopt=subdomain_patch2; 1522 patch2.maxdiff=thresh_patch2; 1523 patch2.ro=rho_patch2; 1524 test_grid=get(handles.get_gridpatch2,'Value'); 1525 if test_grid 1526 patch2.gridflag='y'; 1527 gridname=get(handles.grid_patch2,'String'); 1528 if isequal(gridname(end-3:end),'grid') 1529 nbslice_grid=str2double(gridname(1:end-4)); % 1530 if ~isnan(nbslice_grid) 1531 i1_grid=mod(i1_civ2(ifile)-1,nbslice_grid)+1; 1532 patch2.gridPatch=[filecell.filebase '_' fullfile_uvmat('','',gridname,'.grid','_1',i1_grid)]; 1533 % patch2.gridPatch=[filecell.filebase '_' name_generator(gridname,i1_grid,1,'.grid','_i')]; 1534 if ~exist(patch2.gridPatch,'file') 1535 errormsg='grid file absent for patch2'; 1536 return 1537 end 1538 elseif exist(gridname,'file') 1539 patch2.gridPatch=gridname; 1540 else 1541 errormsg='grid file absent for patch2'; 1542 return 1543 end 1544 end 1545 else 1546 patch2.gridPatch='none'; 1547 patch2.gridflag='n'; 1548 patch2.m=nx_patch2; 1549 patch2.n=ny_patch2; 1550 end 1551 patch2.convectFlow='n'; 1552 fieldnames=fields(patch2); 1553 [CivAllxml,uid_patch2]=add(CivAllxml,1,'element','patch2'); 1554 for ilist=1:length(fieldnames) 1555 val=eval(['patch2.' fieldnames{ilist}]); 1556 if ischar(val) 1557 [CivAllxml,uid_t]=add(CivAllxml,uid_patch2,'element',fieldnames{ilist}); 1558 [CivAllxml,uid_t2]=add(CivAllxml,uid_t,'chardata',val); 1559 end 1560 end 1561 CivAllCmd=[CivAllCmd ' patch2 ']; 1562 end 1563 end 1366 % write the command and eventually the cmx, xml or nml files 1367 cmd=write_cmd(Param,batch); 1368 write_param(Param); 1564 1369 1565 switch CivMode 1566 1370 1371 1372 % create the file used in run or batch 1373 switch Param.CivMode 1374 case 'Matlab' 1375 filename_bat=regexprep(Param.OutputFile,'(\w+)([/\\])(\w+$)','$1$20_BAT$2$3.m'); 1567 1376 case {'CivX','CivAll'} 1568 if isequal(CivMode,'CivAll') 1569 save(CivAllxml,[OutputFile '.xml']); 1570 cmd=[cmd sparam.CivBin ' -f ' OutputFile '.xml ' CivAllCmd ' >' OutputFile '.log' '\n']; 1571 end 1572 % create the .bat file used in run or batch 1573 filename_bat=[OutputFile '.bat']; 1574 [fid,message]=fopen(filename_bat,'w'); 1575 if isequal(fid,-1) 1576 errormsg=['creation of .bat file: ' message]; 1577 return 1578 end 1579 fprintf(fid,cmd); 1580 fclose(fid); 1581 if isunix 1582 system(['chmod +x ' filename_bat]); 1583 end 1584 batch_file_list{length(batch_file_list)+1}=filename_bat; 1585 1586 case 'Matlab' 1587 drawnow 1588 if ~strcmp(compare,'stereo PIV') 1589 filename_xml=[OutputFile '.civ.xml']; 1590 t=struct2xml(Param); 1591 save(t,filename_xml) 1592 if batch 1593 path_civ=fileparts(which('civ')); 1594 filename_bat=[OutputFile '.bat']; 1595 [fid,message]=fopen(filename_bat,'w'); 1596 if isequal(fid,-1) 1597 errormsg= ['creation of .bat file: ' message]; 1598 return 1599 end 1600 % text_matlabscript=[... 1601 % '#!/bin/bash \n'... 1602 % '. /etc/sysprofile \n'... 1603 % 'matlab -nodisplay -nosplash -nojvm <<END_MATLAB \n'... 1604 % 'cd(''' path_civ '''); \n'... 1605 % 'civ_matlab(''' filename_xml ''',''' OutputFile '.nc''); \n'... 1606 % 'exit \n'... 1607 % 'END_MATLAB \n']; 1608 cmd=['#!/bin/bash \n '... 1609 '#$ -cwd \n '... 1610 'hostname && date \n '... 1611 'umask 002 \n'... 1612 Param.xml.CivmBin ' ' Param.xml.RunTime ' ' filename_xml ' ' OutputFile '.nc'];%allow writting access to created files for user group 1613 1614 fprintf(fid,cmd); 1615 fclose(fid); 1616 if isunix 1617 system(['chmod +x ' filename_bat]); 1618 end 1619 batch_file_list{length(batch_file_list)+1}=filename_bat; 1620 else 1621 [tild,errormsg]=civ_matlab(Param,filecell.nc.civ1{ifile,j}); 1622 if isempty(errormsg) 1623 display([filecell.nc.civ1{ifile,j} ' written']) 1624 end 1625 end 1626 end 1627 end 1628 end 1629 end 1377 filename_bat=regexprep(Param.OutputFile,'(\w+)([/\\])(\w+$)','$1$20_BAT$2$3.bat'); 1378 end 1379 1380 % print the command in the file 1381 [fid,message]=fopen(filename_bat,'w'); 1382 if isequal(fid,-1) 1383 errormsg=['creation of .bat file: ' message]; 1384 return 1385 end 1386 fprintf(fid,cmd); 1387 fclose(fid); 1388 if isunix 1389 system(['chmod +x ' filename_bat]); 1390 end 1391 batch_file_list{length(batch_file_list)+1}=filename_bat; 1392 1393 end 1394 end 1395 1396 %% start calculation 1630 1397 1631 1398 if batch 1632 1399 switch batch_mode 1633 1634 1400 case 'sge' %at the moment only psmn ENS Lyon uses it 1635 1401 for p=1:length(batch_file_list) … … 1666 1432 extra_oar=answer{2}; 1667 1433 walltime_onejob=600;%seconds 1668 filename_joblist=fullfile(Root bat,'job_list.txt');1434 filename_joblist=fullfile(RootBat,'job_list.txt'); 1669 1435 fid=fopen(filename_joblist,'w'); 1670 1436 for p=1:length(batch_file_list) … … 1681 1447 '"oar-parexec -s -f ' filename_joblist ' '... 1682 1448 '-l ' filename_joblist '.log"']; 1683 filename_oarcommand=fullfile(Root bat,'oar_command');1449 filename_oarcommand=fullfile(RootBat,'oar_command'); 1684 1450 fid=fopen(filename_oarcommand,'w'); 1685 1451 fprintf(fid,[oar_command '\n']); … … 1692 1458 ); 1693 1459 walltime_onejob=600;%seconds 1694 filename_joblist=fullfile(Root bat,'job_list.txt');1460 filename_joblist=fullfile(RootBat,'job_list.txt'); 1695 1461 fid=fopen(filename_joblist,'w'); 1696 1462 for p=1:length(batch_file_list) … … 1707 1473 '-O ' regexprep(filename_joblist,'\.txt\>','.stdout') ' '... 1708 1474 '"oar-dispatch -f ' filename_joblist '"']; 1709 filename_oarcommand=fullfile(Root bat,'oar_command');1475 filename_oarcommand=fullfile(RootBat,'oar_command'); 1710 1476 fid=fopen(filename_oarcommand,'w'); 1711 1477 fprintf(fid,[oar_command '\n']); … … 1714 1480 eval(['! . ' filename_oarcommand]) 1715 1481 case 'mpilauncher' 1716 filename_joblist=fullfile(Root bat,'job_list.txt');1482 filename_joblist=fullfile(RootBat,'job_list.txt'); 1717 1483 fid=fopen(filename_joblist,'w'); 1718 1484 … … 1725 1491 '#OAR -n Mylauncher \n'... 1726 1492 '#OAR -l node=4/core=5,walltime=0:15:00 \n'... 1727 '#OAR -E ' fullfile(Root bat,'stderrfile.log') ' \n'...1728 '#OAR -O ' fullfile(Root bat,'stdoutfile.log') ' \n'...1493 '#OAR -E ' fullfile(RootBat,'stderrfile.log') ' \n'... 1494 '#OAR -O ' fullfile(RootBat,'stdoutfile.log') ' \n'... 1729 1495 '# ========================================================= \n'... 1730 1496 '# This simple program launch a multinode parallel OpenMPI mpilauncher \n'... … … 1754 1520 ]; 1755 1521 % oarsub -S ./oar.sub 1756 filename_oarscript=fullfile(Root bat,'oar_command');1522 filename_oarscript=fullfile(RootBat,'oar_command'); 1757 1523 fid=fopen(filename_oarscript,'w'); 1758 1524 fprintf(fid,[text_oarscript]); … … 1763 1529 end 1764 1530 else 1765 if ~isequal(CivMode,'Matlab') 1766 filename_superbat=fullfile(Rootbat,'job_list.bat'); 1767 fid=fopen(filename_superbat,'w'); 1768 if fid==-1 1769 msgbox_uvmat('ERROR',['cannot create the command file ' filename_superbat]) 1770 return 1771 end 1772 for p=1:length(batch_file_list) 1773 if isunix 1774 fprintf(fid,['sh ' batch_file_list{p} '\n']); 1531 switch Param.CivMode 1532 case 'Matlab' 1533 1534 background=1; 1535 if background 1536 filename_superbat=fullfile(RootBat,'job_list.m'); 1537 fid=fopen(filename_superbat,'w'); 1538 if fid==-1 1539 msgbox_uvmat('ERROR',['cannot create the command file ' filename_superbat]) 1540 return 1541 end 1542 fprintf(fid,['addpath(''' path_civ ''');\n']); 1543 for p=1:length(batch_file_list) 1544 % if isunix 1545 % fprintf(fid,['sh ' batch_file_list{p} '\n']); 1546 % else 1547 % fprintf(fid,['@call "' regexprep(batch_file_list{p},'\\','\\\\') '"' '\n']); 1548 % end 1549 fprintf(fid,['run ' batch_file_list{p} '\n']); 1550 1551 end 1552 fclose(fid); 1553 eval(['run ' filename_superbat]); 1775 1554 else 1776 fprintf(fid,['@call "' regexprep(batch_file_list{p},'\\','\\\\') '"' '\n']); 1777 end 1778 end 1779 fclose(fid); 1780 if(isunix) 1781 system(['chmod +x ' filename_superbat]); 1782 end 1783 system([filename_superbat ' &']);% execute main commmand 1555 for p=1:length(batch_file_list) 1556 fid=fopen( batch_file_list{p}); 1557 eval(fscanf(fid,'%s')); 1558 fclose(fid); 1559 end 1560 end 1561 1562 1563 case {'CivX','CivAll'} 1564 filename_superbat=fullfile(RootBat,'job_list.bat'); 1565 fid=fopen(filename_superbat,'w'); 1566 if fid==-1 1567 msgbox_uvmat('ERROR',['cannot create the command file ' filename_superbat]) 1568 return 1569 end 1570 for p=1:length(batch_file_list) 1571 if isunix 1572 fprintf(fid,['sh ' batch_file_list{p} '\n']); 1573 else 1574 fprintf(fid,['@call "' regexprep(batch_file_list{p},'\\','\\\\') '"' '\n']); 1575 end 1576 end 1577 fclose(fid); 1578 if(isunix) 1579 system(['chmod +x ' filename_superbat]); 1580 end 1581 background=0; 1582 if background 1583 system([filename_superbat ' &']);% execute main commmand 1584 else 1585 system(filename_superbat); 1586 end 1784 1587 end 1785 1588 end … … 1812 1615 t=set(t,1,'name','Civ');% set the head label 1813 1616 save(t,[namedoc '.civ.xml']); %save GUI parameters as xml file 1814 saveas(gcbf,namefigfull);%save the interface with name namefigfull (A CHANGER EN FICHIER .xml)1617 % saveas(gcbf,namefigfull);%save the interface with name namefigfull (A CHANGER EN FICHIER .xml) 1815 1618 1816 1619 %Save info in personal profile (initiate browser next time) TODO … … 4026 3829 end 4027 3830 4028 %------------------------------------------------------------------------ 4029 function [cmd,errormsg]=cmd_civ1(filename,Param) 4030 %------------------------------------------------------------------------ 4031 %pixels per cm and matrix of the image times, read from the .civ file by uvmat 4032 %changes : filename_cmx -> filename ( no extension ) 4033 cmd=''; 4034 filename=regexprep(filename,'.nc',''); %file name for the result 4035 if isequal(Param.Civ1.Dt,0) 4036 Param.Civ1.Dt=1 ;%case of 'displacement' mode 4037 end 4038 Param.Civ1.ImageA=regexprep(Param.Civ1.ImageA,'.png',''); 4039 Param.Civ1.ImageB=regexprep(Param.Civ1.ImageB,'.png',''); 4040 [fid,errormsg]=fopen([filename '.civ1.cmx'],'w'); 4041 if isequal(fid,-1) 4042 errormsg=['cmd file ' filename ' cannot be created: ' errormsg]; 4043 return 4044 end 4045 fprintf(fid,['############## CMX file' '\n' ]); 4046 fprintf(fid, ['FirstImage ' regexprep(Param.Civ1.ImageA,'\\','\\\\') '\n' ]);% for windows compatibility 4047 fprintf(fid, ['LastImage ' regexprep(Param.Civ1.ImageB,'\\','\\\\') '\n' ]);% for windows compatibility 4048 fprintf(fid, ['XX' '\n' ]); 4049 if isfield(Param.Civ1,'Mask') 4050 fprintf(fid, ['Mask ' 'y' '\n' ]); 4051 fprintf(fid, ['MaskName ' regexprep(Param.Civ1.Mask,'\\','\\\\') '\n' ]); 4052 else 4053 fprintf(fid, ['Mask ' 'n' '\n' ]); 4054 fprintf(fid, ['MaskName ' 'noFile use default' '\n' ]); 4055 end 4056 fprintf(fid, ['ImageSize ' num2str(Param.Civ1.ImageWidth) ' ' num2str(Param.Civ1.ImageHeight) '\n' ]); %VERIFIER CAS GENERAL ? 4057 fprintf(fid, ['CorrelationBoxesSize ' num2str(Param.Civ1.CorrBoxSize(1)) ' ' num2str(Param.Civ1.CorrBoxSize(2)) '\n' ]); 4058 fprintf(fid, ['SearchBoxeSize ' num2str(Param.Civ1.SearchBoxSize(1)) ' ' num2str(Param.Civ1.SearchBoxSize(2)) '\n' ]); 4059 fprintf(fid, ['RO ' num2str(Param.Civ1.CorrSmooth) '\n' ]); 4060 if isfield(Param.Civ1,'Grid') 4061 fprintf(fid, ['GridSpacing ' '25' ' ' '25' '\n' ]); 4062 else 4063 fprintf(fid, ['GridSpacing ' num2str(Param.Civ1.Dx) ' ' num2str(Param.Civ1.Dy) '\n' ]); 4064 end 4065 fprintf(fid, ['XX 1.0' '\n' ]); 4066 fprintf(fid, ['Dt_TO ' num2str(Param.Civ1.Dt) ' ' num2str(Param.Civ1.Time) '\n' ]); 4067 fprintf(fid, ['PixCmXY ' '1' ' ' '1' '\n' ]); 4068 fprintf(fid, ['XX 1' '\n' ]); 4069 fprintf(fid, ['ShiftXY ' num2str(Param.Civ1.SearchBoxShift(1)) ' ' num2str(Param.Civ1.SearchBoxShift(2)) '\n' ]); 4070 if isfield(Param.Civ1,'Grid') 4071 fprintf(fid, ['Grid ' 'y' '\n' ]); 4072 fprintf(fid, ['GridName ' regexprep(Param.Civ1.Grid,'\\','\\\\') '\n' ]); 4073 else 4074 fprintf(fid, ['Grid ' 'n' '\n' ]); 4075 fprintf(fid, ['GridName ' 'noFile use default' '\n' ]); 4076 end 4077 fprintf(fid, ['XX 85' '\n' ]); 4078 fprintf(fid, ['XX 1.0' '\n' ]); 4079 fprintf(fid, ['XX 1.0' '\n' ]); 4080 fprintf(fid, ['Hart 1' '\n' ]); 4081 fprintf(fid, [ 'DecimalShift 0' '\n' ]); 4082 fprintf(fid, ['Deformation 0' '\n' ]); 4083 fprintf(fid, ['CorrelationMin 0' '\n' ]); 4084 fprintf(fid, ['IntensityMin 0' '\n' ]); 4085 if ~isfield(Param.Civ1,'MinIma')% Image threshold not activated 4086 fprintf(fid, ['SeuilImage n' '\n' ]); 4087 fprintf(fid, ['SeuilImageValues 0 4096' '\n' ]);%not used in principle 4088 else% Image threshold activated 4089 if isempty(Param.Civ1.MaxIma)||isnan(Param.Civ1.MaxIma) 4090 Param.Civ1.MaxIma=2^Param.Civ1.ImageBitDepth;%take the max image value as upper bound by default 4091 end 4092 fprintf(fid, ['SeuilImage y' '\n' ]); 4093 fprintf(fid, ['SeuilImageValues ' num2str(Param.Civ1.MinIma) ' ' num2str(Param.Civ1.MaxIma) '\n' ]); 4094 end 4095 fprintf(fid, ['ImageToUse ' Param.Civ1.term_a ' ' Param.Civ1.term_b '\n' ]); % VERIFIER ? 4096 fprintf(fid, ['ImageUsedBefore null null' '\n' ]); 4097 fclose(fid); 4098 4099 if(isunix) %unix (or Mac) system 4100 cmd=['cp -f ' filename '.civ1.cmx ' filename '.cmx \n '];% the cmx file gives the name to the nc file 4101 cmd=[cmd Param.xml.Civ1Bin ' -f ' filename '.cmx >' filename '.civ1.log \n ' ]; % redirect standard output to the log file, the result file is named [filename '.nc'] by CIVx 4102 cmd=[cmd 'rm ' filename '.cmx']; 4103 else %Windows system 4104 filename=regexprep(filename,'\\','\\\\'); 4105 cmd=['copy /Y "' filename '.civ1.cmx" "' filename '.cmx" \n ']; 4106 cmd=[cmd '"' regexprep(Param.xml.Civ1Bin,'\\','\\\\')... 4107 '" -f "' filename '.cmx" >"' filename '.civ1.log" \n ' ]; % redirect standard output to the log file 4108 cmd=[cmd 'del "' filename '.cmx"']; 4109 end 4110 4111 4112 function cmd=cmd_fix(filename,Param,fixname) 4113 %% 4114 switch fixname 4115 case 'Fix1' 4116 fi2_value=num2str(Param.(fixname).CheckF2); 4117 case 'Fix2' 4118 fi2_value=num2str(Param.(fixname).CheckF4);%need to understand why... 4119 end 4120 filename=regexprep(filename,'.nc',''); 4121 MaskName_string='';%default 4122 MaxVel_string='';%default 4123 if ~isempty(Param.(fixname).MinVel) 4124 MaxVel_string=[' -threshV ' num2str(Param.(fixname).MinVel)]; 4125 end 4126 if isunix 4127 cmd=[Param.xml.FixBin ' -f ' filename '.nc -fi1 ' num2str(Param.(fixname).CheckFmin2) ... 4128 ' -fi2 ' fi2_value ' -fi3 ' num2str(Param.(fixname).CheckF3) ... 4129 ' -threshC ' num2str(Param.(fixname).MinCorr) MaxVel_string MaskName_string... 4130 ' >' filename '.' lower(fixname) '.log 2>&1']; 4131 else 4132 cmd=['"' Param.xml.FixBin '" -f "' filename '.nc" -fi1 ' num2str(Param.(fixname).CheckFmin2)... 4133 ' -fi2 ' fi2_value ' -fi3 ' num2str(Param.(fixname).CheckF3) ... 4134 ' -threshC ' num2str(Param.(fixname).MinCorr) MaxVel_string MaskName_string... 4135 ' > "' filename '.' lower(fixname) '.log"']; 4136 cmd=regexprep(cmd,'\\','\\\\'); 4137 end 4138 4139 4140 function cmd=cmd_patch(filename,Param,patchname) 4141 %% ------------------------------------------------------------------------ 4142 filename=regexprep(filename,'.nc',''); 4143 if isunix 4144 cmd=[Param.xml.PatchBin... 4145 ' -f ' filename '.nc -m ' num2str(Param.(patchname).Nx)... 4146 ' -n ' num2str(Param.(patchname).Ny) ' -ro ' num2str(Param.(patchname).FieldSmooth)... 4147 ' -nopt ' num2str(Param.(patchname).SubdomainSize) ... 4148 ' > ' filename '.' lower(patchname) '.log 2>&1']; % redirect standard output to the log file 4149 else 4150 cmd=['"' Param.xml.PatchBin... 4151 '" -f "' filename '.nc" -m ' num2str(Param.(patchname).Nx)... 4152 ' -n ' num2str(Param.(patchname).Ny) ' -ro ' num2str(Param.(patchname).FieldSmooth)... 4153 ' -nopt ' num2str(Param.(patchname).SubdomainSize)... 4154 ' > "' filename '.' lower(patchname) '.log" 2>&1']; % redirect standard output to the log file 4155 cmd=regexprep(cmd,'\\','\\\\'); 4156 end 4157 4158 %------------------------------------------------------------------------ 4159 % --- CheckCiv2 CheckCiv2 CheckCiv2 CheckCiv2 4160 function [cmd,errormsg]=cmd_civ2(filename,Param) 4161 %------------------------------------------------------------------------ 4162 %pixels per cm and matrix of the image times, read from the .civ file by uvmat 4163 % global civ2Bin sge%name of the executable for checkciv1 calculation 4164 cmd=''; 4165 filename=regexprep(filename,'.nc',''); 4166 if isequal(Param.Civ2.Dt,'0') 4167 Param.Civ2.Dt='1' ;%case of 'displacement' mode 4168 end 4169 Param.Civ2.ImageA=regexprep(Param.Civ2.ImageA,'.png',''); 4170 Param.Civ2.ImageB=regexprep(Param.Civ2.ImageB,'.png','');% bug : .png appears two times ? 4171 [fid,errormsg]=fopen([filename '.civ2.cmx'],'w'); 4172 if isequal(fid,-1) 4173 return 4174 end 4175 fprintf(fid,['############## CMX file' '\n' ]); 4176 fprintf(fid, ['FirstImage ' regexprep(Param.Civ2.ImageA,'\\','\\\\') '\n' ]);% for windows compatibility 4177 fprintf(fid, ['LastImage ' regexprep(Param.Civ2.ImageB,'\\','\\\\') '\n' ]);% for windows compatibility 4178 fprintf(fid, ['XX' '\n' ]); 4179 if isfield(Param.Civ2,'Mask') 4180 fprintf(fid, ['Mask ' 'y' '\n' ]); 4181 fprintf(fid, ['MaskName ' regexprep(Param.Civ2.Mask,'\\','\\\\') '\n' ]); 4182 else 4183 fprintf(fid, ['Mask ' 'n' '\n' ]); 4184 fprintf(fid, ['MaskName ' 'noFile use default' '\n' ]); 4185 end 4186 % fprintf(fid, ['Mask ' Param.Civ2.MaskFlag '\n' ]); 4187 % fprintf(fid, ['MaskName ' regexprep(Param.Civ2.MaskName,'\\','\\\\') '\n' ]);% for windows compatibility 4188 fprintf(fid, ['ImageSize ' num2str(Param.Civ2.ImageWidth) ' ' num2str(Param.Civ2.ImageHeight) '\n' ]); 4189 % fprintf(fid, ['ImageSize ' num2str(Param.Civ2.npx) ' ' num2str(Param.Civ2.npy) '\n' ]); %VERIFIER CAS GENERAL ? 4190 fprintf(fid, ['CorrelationBoxesSize ' num2str(Param.Civ2.CorrBoxSize(1)) ' ' num2str(Param.Civ2.CorrBoxSize(2)) '\n' ]); 4191 fprintf(fid, ['SearchBoxeSize ' num2str(Param.Civ2.CorrBoxSize(1)) ' ' num2str(Param.Civ2.CorrBoxSize(2)) '\n']); 4192 fprintf(fid, ['RO ' num2str(Param.Civ2.CorrSmooth) '\n']); 4193 if isfield(Param.Civ2,'Grid') 4194 fprintf(fid, ['GridSpacing ' '25' ' ' '25' '\n' ]); 4195 else 4196 fprintf(fid, ['GridSpacing ' num2str(Param.Civ2.Dx) ' ' num2str(Param.Civ2.Dy) '\n' ]); 4197 end 4198 % fprintf(fid, ['GridSpacing ' num2str(Param.Civ2.Dx) ' ' num2str(Param.Civ2.Dy) '\n']); 4199 fprintf(fid, ['XX 1.0' '\n' ]); 4200 fprintf(fid, ['Dt_TO ' num2str(Param.Civ2.Dt) ' ' num2str(Param.Civ2.Time) '\n' ]); 4201 fprintf(fid, ['PixCmXY ' '1' ' ' '1' '\n' ]); 4202 fprintf(fid, ['XX 1' '\n' ]); 4203 fprintf(fid, 'ShiftXY 0 0\n'); 4204 if isfield(Param.Civ2,'Grid') 4205 fprintf(fid, ['Grid ' 'y' '\n' ]); 4206 fprintf(fid, ['GridName ' regexprep(Param.Civ2.Grid,'\\','\\\\') '\n' ]); 4207 else 4208 fprintf(fid, ['Grid ' 'n' '\n' ]); 4209 fprintf(fid, ['GridName ' 'noFile use default' '\n' ]); 4210 end 4211 % fprintf(fid, ['Grid ' Param.Civ2.GridFlag '\n' ]); 4212 % fprintf(fid, ['GridName ' regexprep(Param.Civ2.GridName,'\\','\\\\') '\n']); 4213 fprintf(fid, ['XX 85' '\n' ]); 4214 fprintf(fid, ['XX 1.0' '\n' ]); 4215 fprintf(fid, ['XX 1.0' '\n' ]); 4216 fprintf(fid, ['Hart 1' '\n' ]); 4217 fprintf(fid, ['DecimalShift ' num2str(Param.Civ2.CheckDecimal) '\n']); 4218 fprintf(fid, ['Deformation ' num2str(Param.Civ2.CheckDeformation) '\n']); 4219 fprintf(fid, ['CorrelationMin 0' '\n' ]); 4220 fprintf(fid, ['IntensityMin 0' '\n' ]); 4221 4222 if ~isfield(Param.Civ2,'MinIma')% Image threshold not activated 4223 fprintf(fid, ['SeuilImage n' '\n' ]); 4224 fprintf(fid, ['SeuilImageValues 0 4096' '\n' ]);%not used in principle 4225 else% Image threshold activated 4226 if isempty(Param.Civ2.MaxIma)||isnan(Param.Civ2.MaxIma) 4227 Param.Civ2.MaxIma=2^Param.Civ2.ImageBitDepth;%take the max image value as upper bound by default 4228 end 4229 fprintf(fid, ['SeuilImage y' '\n' ]); 4230 fprintf(fid, ['SeuilImageValues ' num2str(Param.Civ2.MinIma) ' ' num2str(Param.Civ2.MaxIma) '\n' ]); 4231 end 4232 fprintf(fid, ['ImageToUse ' Param.Civ2.term_a ' ' Param.Civ2.term_b '\n' ]); % VERIFIER ? 4233 fprintf(fid, ['ImageUsedBefore ' regexprep(Param.Civ2.filename_nc1,'\\','\\\\') '\n']); 4234 fclose(fid); 4235 4236 if(isunix) 4237 cmd=['cp -f ' filename '.civ2.cmx ' filename '.cmx\n'... 4238 Param.xml.Civ2Bin ' -f ' filename '.cmx >' filename '.civ2.log \n '... % redirect standard output to the log file, the result file is named [filename '.nc'] by CIVx 4239 'rm ' filename '.cmx \n'];%rename .cmx as .checkciv2.cmx, the result file is named [filename '.nc'] by CIVx 4240 else 4241 filename=regexprep(filename,'\\','\\\\'); 4242 cmd=['copy /Y "' filename '.civ2.cmx" "' filename '.cmx" \n'... 4243 '"' regexprep(Param.xml.Civ2Bin,'\\','\\\\') '" -f "' filename '.cmx" >"' filename '.civ2.log" \n'... 4244 'del "' filename '.cmx" \n']; 4245 end 4246 4247 %------------------------------------------------------------------------ 4248 % --- CheckCiv1 Unified: TO ABADON 4249 function xml_civ1_parameters=CIV1_CMD_Unified(filename,namelog,par) 4250 %------------------------------------------------------------------------ 4251 %pixels per cm and matrix of the image times, read from the .civ file by uvmat 4252 %global CivBin%name of the executable for checkciv1 calculation 4253 4254 civ1.image1=par.ImageA; 4255 civ1.image2=par.ImageB; 4256 civ1.imageSize_X=par.npx; 4257 civ1.imageSize_Y=par.npy; 4258 civ1.outputFileName=[filename '.nc']; 4259 civ1.correlationBoxesSize_X=par.ibx; 4260 civ1.correlationBoxesSize_Y=par.iby; 4261 civ1.searchBoxesSize_X=par.isx; 4262 civ1.searchBoxesSize_Y=par.isy; 4263 civ1.globalShift_X=par.shiftx; 4264 civ1.globalShift_Y=par.shifty; 4265 civ1.ro=par.rho; 4266 civ1.hart='y'; 4267 if isequal(par.gridflag,'y') 4268 civ1.grid=par.gridname; 4269 else 4270 civ1.grid='n'; 4271 civ1.gridSpacing_X=par.dx; 4272 civ1.gridSpacing_Y=par.dy; 4273 end 4274 if isequal(par.maskflag,'y') 4275 civ1.mask=par.maskname; 4276 end 4277 civ1.dt=par.Dt; 4278 civ1.unit='pixel'; 4279 civ1.absolut_time_T0=par.Time; 4280 civ1.pixcmx='1'; 4281 civ1.pixcmy='1'; 4282 civ1.convectFlow='n'; 4283 4284 xml_civ1_parameters=civ1; 4285 4286 %------------------------------------------------------------------------ 4287 % --- CheckCiv2 Unified: TO ABADON 4288 function civ2=CIV2_CMD_Unified(filename,namelog,par) 4289 %------------------------------------------------------------------------ 4290 %pixels per cm and matrix of the image times, read from the .civ file by uvmat 4291 %global CivBin%name of the executable for checkciv1 calculation 4292 4293 filename=regexprep(filename,'.nc',''); 4294 4295 civ2.image1=par.ImageA; 4296 civ2.image2=par.ImageB; 4297 civ2.imageSize_X=par.npx; 4298 civ2.imageSize_Y=par.npy; 4299 civ2.inputFileName=[par.filename_nc1 '.nc']; 4300 civ2.outputFileName=[filename '.nc']; 4301 civ2.correlationBoxesSize_X=par.ibx; 4302 civ2.correlationBoxesSize_Y=par.iby; 4303 civ2.ro=par.rho; 4304 %checkciv2.decimalShift=par.CheckDecimal; 4305 %checkciv2.CheckDeformation=par.CheckDeformation; 4306 if isequal(par.decimal,'1') 4307 civ2.decimalShift='y'; 4308 else 4309 civ2.decimalShift='n'; 4310 end 4311 if isequal(par.deformation,'1') 4312 civ2.deformation='y'; 4313 else 4314 civ2.deformation='n'; 4315 end 4316 if isequal(par.gridflag,'y') 4317 civ2.grid=par.gridname; 4318 else 4319 civ2.grid='n'; 4320 civ2.gridSpacing_X=par.dx; 4321 civ2.gridSpacing_Y=par.dy; 4322 end 4323 civ2.gridSpacing_X='10'; 4324 civ2.gridSpacing_Y='10';%NOTE: faut mettre gridSpacing pourque ca tourne, meme si c'est la grille qui est utilisee 4325 if isequal(par.maskflag,'y') 4326 civ2.mask=par.maskname; 4327 else 4328 civ2.mask='n'; 4329 end 4330 civ2.dt=par.Dt; 4331 civ2.unit='pixel'; 4332 civ2.absolut_time_T0=par.Time; 4333 civ2.pixcmx='1'; 4334 civ2.pixcmy='1'; 4335 civ2.convectFlow='n'; 4336 4337 4338 % --- Executes on button press in TestPatch1. 4339 function TestPatch1_Callback(hObject, eventdata, handles) 4340 set(handles.TestPatch1,'BackgroundColor',[1 1 0]) 4341 drawnow 4342 if get(handles.TestPatch1,'Value') 4343 ref_i=str2double(get(handles.ref_i,'String')); 4344 if strcmp(get(handles.ref_j,'Visible'),'on') 4345 ref_j=str2double(get(handles.ref_j,'String')); 4346 else 4347 ref_j=1;%default 4348 end 4349 filecell=set_civ_filenames(handles,ref_i,ref_j,[0 0 1 0 0 0]); 4350 Data.ListVarName={'ny','nx','A'}; 4351 Data.VarDimName= {'ny','nx',{'ny','nx'}}; 4352 param_patch1=read_GUI(handles.Patch1); 4353 param_patch1.CivFile=filecell.nc.civ1{1}; 4354 Param.Patch1=param_patch1; 4355 for irho=1:7 4356 [Data,errormsg]=civ_matlab(Param);% get the grid of x, y positions set for PIV 4357 if ~isempty(errormsg) 4358 msgbox_uvmat('ERROR',errormsg) 4359 return 4360 end 4361 SmoothingParam(irho)=Param.Patch1.FieldSmooth; 4362 Data.Civ1_U_Diff=Data.Civ1_U_Diff(Data.Civ1_FF==0); 4363 Data.Civ1_V_Diff=Data.Civ1_V_Diff(Data.Civ1_FF==0); 4364 DiffVel(irho)=sqrt(mean(Data.Civ1_U_Diff.*Data.Civ1_U_Diff+Data.Civ1_V_Diff.*Data.Civ1_V_Diff)) 4365 NbSites(irho,:)=Data.Civ1_NbSites*numel(Data.Civ1_NbSites)/numel(Data.Civ1_U_Diff); 4366 Param.Patch1.SmoothingParam=2*Param.Patch1.FieldSmooth; 4367 end 4368 figure 4369 plot(SmoothingParam,DiffVel,'b',SmoothingParam,NbSites,'r') 4370 set(handles.TestPatch1,'BackgroundColor',[1 0 0]) 4371 else 4372 corrfig=findobj(allchild(0),'tag','corrfig');% look for a current figure for image correlation display 4373 if ~isempty(corrfig) 4374 delete(corrfig) 4375 end 4376 hview_field=findobj(allchild(0),'tag','view_field');% look for view_field 4377 if ~isempty(hview_field) 4378 delete(hview_field) 4379 end 4380 end 3831 3832 3833 4381 3834 %'nomtype2pair': creates nomencalture for index pairs knowing the image nomenclature 4382 3835 %--------------------------------------------------------------------- 4383 % [nom_type_pair]=nomtype2pair(nom_type,Dti,Dtj); 3836 function NomTypeNc=nomtype2pair(NomTypeIma,mode) 4384 3837 %--------------------------------------------------------------------- 4385 4386 3838 % OUTPUT: 4387 %nom_type_nc 4388 3839 % NomTypeNc 4389 3840 %--------------------------------------------------------------------- 4390 3841 % INPUT: 4391 % 'nom_type': string defining the kind of nomenclature used: 4392 %nom_type='': constant name [filebase ext] (default output if 'nom_type' is undefined) 4393 %nom_type='*': the same file [filebase ext] contains successive fields (ex avi movies) 4394 %nom_type='_i': series of files with a single index i preceded by '_'(e.g. 'aa_45.png'). 4395 %nom_type='#' series of indexed images wich is not series_i [filebase index ext], e.g. 'aa045.jpg' or 'aa45.tif' 4396 %nom_type='_i_j' matrix of files with two indices i and j separated by '_'(e.g. 'aa_45_2.png') 4397 %nom_type='_i1-i2' from pairs from a single index (e.g. 'aa_45-47.nc') 4398 %nom_type='_i_j1-j2'pairs of j indices (e.g. 'aa_45_2-3.nc') 4399 %nom_type='_i1-i2_j' pairs of i indices (e.g. 'aa_45-46_2.nc') 4400 %nom_type='#a','#A', with a numerical index and an index letter(e.g.'aa045b.png'), OBSOLETE (replaced by 'series_i_j') 4401 %nom_type='%03d' or '%04d', series of indexed images with numbers completed with zeros to 3 or 4 digits, e.g.'aa045.tif' 4402 %nom_type='_%03d', '_%04d', or '_%05d', series of indexed images with _ and numbers completed with zeros to 3, 4 or 5 digits, e.g.'aa_045.tif' 4403 %nom_type='raw_SMD', same as '#a' but with no extension ext='', OBSOLETE 4404 %nom_type='#_ab' from pairs of '#a' images (e.g. 'aa045bc.nc'), ext='.nc', OBSOLETE (replaced by 'netc_2D') 4405 %nom_type='%3dab' from pairs of '%3da' images (e.g. 'aa045bc.nc'), ext='.nc', OBSOLETE (replaced by 'netc_2D') 4406 % Dti: ~=0 if i index pairs are used 4407 % Dtj: ~=0 if i index pairs are used 4408 4409 function NomTypeNc=nomtype2pair(NomTypeIma,mode) 4410 4411 %determine nom_type_nc: 3842 % 'NomTypeIma': string defining the kind of nomenclature used for images 3843 4412 3844 NomTypeNc=NomTypeIma;%default 4413 3845 switch mode … … 4438 3870 4439 3871 function NomType_Callback(hObject, eventdata, handles) 4440 %set(handles.RootPath,'BackgroundColor',[1 1 0])%paint RootName edit box in yellow to indicate that the file input is proceeding4441 %RootPath=get(handles.RootPath,'String');4442 %RootFile=get(handles.RootFile,'String');4443 %ref_i=str2num(get(handles.ref_i,'String'));4444 %ref_j=str2num(get(handles.ref_j,'String'));4445 %NomType=get(handles.NomType,'String');4446 %ImaExt=get(handles.ImaExt,'String');4447 %fileinput=fullfile_uvmat(RootPath,'',RootFile,ImaExt,NomType,ref_i,[],ref_j);4448 %errormsg=display_file_name(handles,fileinput);4449 %if ~isempty(errormsg)4450 %msgbox_uvmat('ERROR',errormsg)4451 %end4452 %set(handles.RootPath,'BackgroundColor',[1 1 1])%paint RootName back to white to indicate that the file input is finished3872 set(handles.RootPath,'BackgroundColor',[1 1 0])%paint RootName edit box in yellow to indicate that the file input is proceeding 3873 RootPath=get(handles.RootPath,'String'); 3874 RootFile=get(handles.RootFile,'String'); 3875 ref_i=str2num(get(handles.ref_i,'String')); 3876 ref_j=str2num(get(handles.ref_j,'String')); 3877 NomType=get(handles.NomType,'String'); 3878 ImaExt=get(handles.ImaExt,'String'); 3879 fileinput=fullfile_uvmat(RootPath,'',RootFile,ImaExt,NomType,ref_i,[],ref_j); 3880 errormsg=display_file_name(handles,fileinput); 3881 if ~isempty(errormsg) 3882 msgbox_uvmat('ERROR',errormsg) 3883 end 3884 set(handles.RootPath,'BackgroundColor',[1 1 1])%paint RootName back to white to indicate that the file input is finished 4453 3885 4454 3886 % --- Executes on selection change in ListProgram. … … 4489 3921 end 4490 3922 3923 % --- Executes on button press in TestPatch1. 3924 function TestPatch1_Callback(hObject, eventdata, handles) 3925 set(handles.TestPatch1,'BackgroundColor',[1 1 0]) 3926 drawnow 3927 if get(handles.TestPatch1,'Value') 3928 ref_i=str2double(get(handles.ref_i,'String')); 3929 if strcmp(get(handles.ref_j,'Visible'),'on') 3930 ref_j=str2double(get(handles.ref_j,'String')); 3931 else 3932 ref_j=1;%default 3933 end 3934 filecell=set_civ_filenames(handles,ref_i,ref_j,[0 0 1 0 0 0]); 3935 Data.ListVarName={'ny','nx','A'}; 3936 Data.VarDimName= {'ny','nx',{'ny','nx'}}; 3937 param_patch1=read_GUI(handles.Patch1); 3938 param_patch1.CivFile=filecell.nc.civ1{1}; 3939 Param.Patch1=param_patch1; 3940 for irho=1:7 3941 [Data,errormsg]=civ_matlab(Param);% get the grid of x, y positions set for PIV 3942 if ~isempty(errormsg) 3943 msgbox_uvmat('ERROR',errormsg) 3944 return 3945 end 3946 SmoothingParam(irho)=Param.Patch1.FieldSmooth; 3947 Data.Civ1_U_Diff=Data.Civ1_U_Diff(Data.Civ1_FF==0); 3948 Data.Civ1_V_Diff=Data.Civ1_V_Diff(Data.Civ1_FF==0); 3949 DiffVel(irho)=sqrt(mean(Data.Civ1_U_Diff.*Data.Civ1_U_Diff+Data.Civ1_V_Diff.*Data.Civ1_V_Diff)) 3950 NbSites(irho,:)=Data.Civ1_NbSites*numel(Data.Civ1_NbSites)/numel(Data.Civ1_U_Diff); 3951 Param.Patch1.SmoothingParam=2*Param.Patch1.FieldSmooth; 3952 end 3953 figure 3954 plot(SmoothingParam,DiffVel,'b',SmoothingParam,NbSites,'r') 3955 set(handles.TestPatch1,'BackgroundColor',[1 0 0]) 3956 else 3957 corrfig=findobj(allchild(0),'tag','corrfig');% look for a current figure for image correlation display 3958 if ~isempty(corrfig) 3959 delete(corrfig) 3960 end 3961 hview_field=findobj(allchild(0),'tag','view_field');% look for view_field 3962 if ~isempty(hview_field) 3963 delete(hview_field) 3964 end 3965 end 3966 4491 3967 4492 3968 % --- Executes on button press in TestCiv2. 4493 3969 function TestCiv2_Callback(hObject, eventdata, handles) 4494 3970 4495 4496 4497 3971 function RootFile_Callback(hObject, eventdata, handles) 4498 3972 4499 4500 4501 3973 function SubdirImages_Callback(hObject, eventdata, handles) 3974 3975 3976 3977 function errormsg=write_param(Param) 3978 %------------------------------------------------------------------------ 3979 %pixels per cm and matrix of the image times, read from the .civ file by uvmat 3980 %changes : filename_cmx -> filename ( no extension ) 3981 errormsg=''; 3982 switch Param.CivMode 3983 case 'CivX' 3984 if Param.CheckCiv1 3985 filename=regexprep(Param.OutputFile,'(\w+)([/\\])(\w+$)','$1$20_CMX$2$3.civ1.cmx'); 3986 if isequal(Param.Civ1.Dt,0) 3987 Param.Civ1.Dt=1 ;%case of 'displacement' mode 3988 end 3989 Param.Civ1.ImageA=regexprep(Param.Civ1.ImageA,'.png',''); 3990 Param.Civ1.ImageB=regexprep(Param.Civ1.ImageB,'.png',''); 3991 [fid,errormsg]=fopen(filename,'w'); 3992 if isequal(fid,-1) 3993 errormsg=['cmd file ' filename ' cannot be created: ' errormsg]; 3994 return 3995 end 3996 fprintf(fid,['############## CMX file' '\n' ]); 3997 fprintf(fid, ['FirstImage ' regexprep(Param.Civ1.ImageA,'\\','\\\\') '\n' ]);% for windows compatibility 3998 fprintf(fid, ['LastImage ' regexprep(Param.Civ1.ImageB,'\\','\\\\') '\n' ]);% for windows compatibility 3999 fprintf(fid, ['XX' '\n' ]); 4000 if isfield(Param.Civ1,'Mask') 4001 fprintf(fid, ['Mask ' 'y' '\n' ]); 4002 fprintf(fid, ['MaskName ' regexprep(Param.Civ1.Mask,'\\','\\\\') '\n' ]); 4003 else 4004 fprintf(fid, ['Mask ' 'n' '\n' ]); 4005 fprintf(fid, ['MaskName ' 'noFile use default' '\n' ]); 4006 end 4007 fprintf(fid, ['ImageSize ' num2str(Param.Civ1.ImageWidth) ' ' num2str(Param.Civ1.ImageHeight) '\n' ]); %VERIFIER CAS GENERAL ? 4008 fprintf(fid, ['CorrelationBoxesSize ' num2str(Param.Civ1.CorrBoxSize(1)) ' ' num2str(Param.Civ1.CorrBoxSize(2)) '\n' ]); 4009 fprintf(fid, ['SearchBoxeSize ' num2str(Param.Civ1.SearchBoxSize(1)) ' ' num2str(Param.Civ1.SearchBoxSize(2)) '\n' ]); 4010 fprintf(fid, ['RO ' num2str(Param.Civ1.CorrSmooth) '\n' ]); 4011 if isfield(Param.Civ1,'Grid') 4012 fprintf(fid, ['GridSpacing ' '25' ' ' '25' '\n' ]); 4013 else 4014 fprintf(fid, ['GridSpacing ' num2str(Param.Civ1.Dx) ' ' num2str(Param.Civ1.Dy) '\n' ]); 4015 end 4016 fprintf(fid, ['XX 1.0' '\n' ]); 4017 fprintf(fid, ['Dt_TO ' num2str(Param.Civ1.Dt) ' ' num2str(Param.Civ1.Time) '\n' ]); 4018 fprintf(fid, ['PixCmXY ' '1' ' ' '1' '\n' ]); 4019 fprintf(fid, ['XX 1' '\n' ]); 4020 fprintf(fid, ['ShiftXY ' num2str(Param.Civ1.SearchBoxShift(1)) ' ' num2str(Param.Civ1.SearchBoxShift(2)) '\n' ]); 4021 if isfield(Param.Civ1,'Grid') 4022 fprintf(fid, ['Grid ' 'y' '\n' ]); 4023 fprintf(fid, ['GridName ' regexprep(Param.Civ1.Grid,'\\','\\\\') '\n' ]); 4024 else 4025 fprintf(fid, ['Grid ' 'n' '\n' ]); 4026 fprintf(fid, ['GridName ' 'noFile use default' '\n' ]); 4027 end 4028 fprintf(fid, ['XX 85' '\n' ]); 4029 fprintf(fid, ['XX 1.0' '\n' ]); 4030 fprintf(fid, ['XX 1.0' '\n' ]); 4031 fprintf(fid, ['Hart 1' '\n' ]); 4032 fprintf(fid, [ 'DecimalShift 0' '\n' ]); 4033 fprintf(fid, ['Deformation 0' '\n' ]); 4034 fprintf(fid, ['CorrelationMin 0' '\n' ]); 4035 fprintf(fid, ['IntensityMin 0' '\n' ]); 4036 if ~isfield(Param.Civ1,'MinIma')% Image threshold not activated 4037 fprintf(fid, ['SeuilImage n' '\n' ]); 4038 fprintf(fid, ['SeuilImageValues 0 4096' '\n' ]);%not used in principle 4039 else% Image threshold activated 4040 if isempty(Param.Civ1.MaxIma)||isnan(Param.Civ1.MaxIma) 4041 Param.Civ1.MaxIma=2^Param.Civ1.ImageBitDepth;%take the max image value as upper bound by default 4042 end 4043 fprintf(fid, ['SeuilImage y' '\n' ]); 4044 fprintf(fid, ['SeuilImageValues ' num2str(Param.Civ1.MinIma) ' ' num2str(Param.Civ1.MaxIma) '\n' ]); 4045 end 4046 fprintf(fid, ['ImageToUse ' Param.Civ1.term_a ' ' Param.Civ1.term_b '\n' ]); % VERIFIER ? 4047 fprintf(fid, ['ImageUsedBefore null null' '\n' ]); 4048 fclose(fid); 4049 end 4050 4051 if Param.CheckCiv2 4052 filename=regexprep(Param.OutputFile,'(\w+)([/\\])(\w+$)','$1$20_CMX$2$3.civ2.cmx'); 4053 4054 if isequal(Param.Civ2.Dt,'0') 4055 Param.Civ2.Dt='1' ;%case of 'displacement' mode 4056 end 4057 Param.Civ2.ImageA=regexprep(Param.Civ2.ImageA,'.png',''); 4058 Param.Civ2.ImageB=regexprep(Param.Civ2.ImageB,'.png','');% bug : .png appears two times ? 4059 [fid,errormsg]=fopen(filename,'w'); 4060 if isequal(fid,-1) 4061 return 4062 end 4063 fprintf(fid,['############## CMX file' '\n' ]); 4064 fprintf(fid, ['FirstImage ' regexprep(Param.Civ2.ImageA,'\\','\\\\') '\n' ]);% for windows compatibility 4065 fprintf(fid, ['LastImage ' regexprep(Param.Civ2.ImageB,'\\','\\\\') '\n' ]);% for windows compatibility 4066 fprintf(fid, ['XX' '\n' ]); 4067 if isfield(Param.Civ2,'Mask') 4068 fprintf(fid, ['Mask ' 'y' '\n' ]); 4069 fprintf(fid, ['MaskName ' regexprep(Param.Civ2.Mask,'\\','\\\\') '\n' ]); 4070 else 4071 fprintf(fid, ['Mask ' 'n' '\n' ]); 4072 fprintf(fid, ['MaskName ' 'noFile use default' '\n' ]); 4073 end 4074 % fprintf(fid, ['Mask ' Param.Civ2.MaskFlag '\n' ]); 4075 % fprintf(fid, ['MaskName ' regexprep(Param.Civ2.MaskName,'\\','\\\\') '\n' ]);% for windows compatibility 4076 fprintf(fid, ['ImageSize ' num2str(Param.Civ2.ImageWidth) ' ' num2str(Param.Civ2.ImageHeight) '\n' ]); 4077 % fprintf(fid, ['ImageSize ' num2str(Param.Civ2.npx) ' ' num2str(Param.Civ2.npy) '\n' ]); %VERIFIER CAS GENERAL ? 4078 fprintf(fid, ['CorrelationBoxesSize ' num2str(Param.Civ2.CorrBoxSize(1)) ' ' num2str(Param.Civ2.CorrBoxSize(2)) '\n' ]); 4079 fprintf(fid, ['SearchBoxeSize ' num2str(Param.Civ2.CorrBoxSize(1)) ' ' num2str(Param.Civ2.CorrBoxSize(2)) '\n']); 4080 fprintf(fid, ['RO ' num2str(Param.Civ2.CorrSmooth) '\n']); 4081 if isfield(Param.Civ2,'Grid') 4082 fprintf(fid, ['GridSpacing ' '25' ' ' '25' '\n' ]); 4083 else 4084 fprintf(fid, ['GridSpacing ' num2str(Param.Civ2.Dx) ' ' num2str(Param.Civ2.Dy) '\n' ]); 4085 end 4086 % fprintf(fid, ['GridSpacing ' num2str(Param.Civ2.Dx) ' ' num2str(Param.Civ2.Dy) '\n']); 4087 fprintf(fid, ['XX 1.0' '\n' ]); 4088 fprintf(fid, ['Dt_TO ' num2str(Param.Civ2.Dt) ' ' num2str(Param.Civ2.Time) '\n' ]); 4089 fprintf(fid, ['PixCmXY ' '1' ' ' '1' '\n' ]); 4090 fprintf(fid, ['XX 1' '\n' ]); 4091 fprintf(fid, 'ShiftXY 0 0\n'); 4092 if isfield(Param.Civ2,'Grid') 4093 fprintf(fid, ['Grid ' 'y' '\n' ]); 4094 fprintf(fid, ['GridName ' regexprep(Param.Civ2.Grid,'\\','\\\\') '\n' ]); 4095 else 4096 fprintf(fid, ['Grid ' 'n' '\n' ]); 4097 fprintf(fid, ['GridName ' 'noFile use default' '\n' ]); 4098 end 4099 % fprintf(fid, ['Grid ' Param.Civ2.GridFlag '\n' ]); 4100 % fprintf(fid, ['GridName ' regexprep(Param.Civ2.GridName,'\\','\\\\') '\n']); 4101 fprintf(fid, ['XX 85' '\n' ]); 4102 fprintf(fid, ['XX 1.0' '\n' ]); 4103 fprintf(fid, ['XX 1.0' '\n' ]); 4104 fprintf(fid, ['Hart 1' '\n' ]); 4105 fprintf(fid, ['DecimalShift ' num2str(Param.Civ2.CheckDecimal) '\n']); 4106 fprintf(fid, ['Deformation ' num2str(Param.Civ2.CheckDeformation) '\n']); 4107 fprintf(fid, ['CorrelationMin 0' '\n' ]); 4108 fprintf(fid, ['IntensityMin 0' '\n' ]); 4109 4110 if ~isfield(Param.Civ2,'MinIma')% Image threshold not activated 4111 fprintf(fid, ['SeuilImage n' '\n' ]); 4112 fprintf(fid, ['SeuilImageValues 0 4096' '\n' ]);%not used in principle 4113 else% Image threshold activated 4114 if isempty(Param.Civ2.MaxIma)||isnan(Param.Civ2.MaxIma) 4115 Param.Civ2.MaxIma=2^Param.Civ2.ImageBitDepth;%take the max image value as upper bound by default 4116 end 4117 fprintf(fid, ['SeuilImage y' '\n' ]); 4118 fprintf(fid, ['SeuilImageValues ' num2str(Param.Civ2.MinIma) ' ' num2str(Param.Civ2.MaxIma) '\n' ]); 4119 end 4120 fprintf(fid, ['ImageToUse ' Param.Civ2.term_a ' ' Param.Civ2.term_b '\n' ]); % VERIFIER ? 4121 fprintf(fid, ['ImageUsedBefore ' regexprep(Param.Civ2.filename_nc1,'\\','\\\\') '\n']); 4122 fclose(fid); 4123 end 4124 case 'Matlab' 4125 filename=regexprep(Param.OutputFile,'(\w+)([/\\])(\w+$)','$1$20_XML$2$3.xml'); 4126 save(struct2xml(Param),filename); 4127 end 4128 4129 4130 function cmd=write_cmd(Param,batch) 4131 4132 % initiate system command 4133 cmd=[]; 4134 4135 switch Param.CivMode 4136 case 'CivX' 4137 if isunix % check: necessaire aussi en RUN? 4138 cmd=[cmd '#!/bin/bash \n '... 4139 '#$ -cwd \n '... 4140 'hostname && date \n '... 4141 'umask 002 \n'];%allow writting access to created files for user group 4142 end 4143 case 'CivAll' 4144 if isunix % check: necessaire aussi en RUN? 4145 cmd=[cmd '#!/bin/bash \n '... 4146 '#$ -cwd \n '... 4147 'hostname && date \n '... 4148 'umask 002 \n'];%allow writting access to created files for user group 4149 end 4150 end 4151 4152 filename=regexprep(Param.OutputFile,'.nc',''); 4153 4154 if Param.CheckCiv1 4155 switch Param.CivMode 4156 case 'CivX' 4157 if(isunix) %unix (or Mac) system 4158 cmd=[cmd 'cp -f ' regexprep(filename,'(\w+)/(\w+$)','$1/0_CMX/$2.civ1.cmx ') regexprep(filename,'(\w+)/(\w+$)','$1/$2.cmx \n')...% the cmx file gives the name to the nc file 4159 Param.xml.Civ1Bin ' -f ' regexprep(filename,'(\w+)/(\w+$)','$1/$2.cmx >') regexprep(filename,'(\w+)/(\w+$)','$1/0_LOG/$2.civ1.log \n')... % redirect standard output to the log file, the result file is named [filename '.nc'] by CIVx 4160 'rm ' regexprep(filename,'(\w+)/(\w+$)','$1/$2.cmx \n')]; 4161 else %Windows system 4162 filename=regexprep(filename,'\\','\\\\'); 4163 cmd=['copy /Y ' regexprep(filename,'(\w+)\\\\(\w+$)','"$1\\\\0_CMX\\\\$2.civ1.cmx" ') regexprep(filename,'(\w+)\\\\(\w+$)','"$1\\\\$2.civ1.cmx" \n')... 4164 '"' regexprep(Param.xml.Civ1Bin,'\\','\\\\') '" -f ' regexprep(filename,'(\w+)\\\\(\w+$)','"$1\\\\$2.cmx" > ')... 4165 regexprep(filename,'(\w+)\\\\(\w+$)','"$1\\\\0_LOG\\\\$2.civ1.log" \n')... % redirect standard output to the log file 4166 'del ' regexprep(filename,'(\w+)\\\\(\w+$)','"$1\\\\$2.cmx" \n')]; 4167 end 4168 case 'CivAll' 4169 CivAllCmd=[CivAllCmd ' civ1 ']; 4170 str=CIV1_CMD_Unified(filecell.nc.civ1{ifile,j},'',Param.Civ1); 4171 fieldnames=fields(str); 4172 [CivAllxml,uid_civ1]=add(CivAllxml,1,'element','civ1'); 4173 for ilist=1:length(fieldnames) 4174 val=eval(['str.' fieldnames{ilist}]); 4175 if ischar(val) 4176 [CivAllxml,uid_t]=add(CivAllxml,uid_civ1,'element',fieldnames{ilist}); 4177 [CivAllxml,uid_t2]=add(CivAllxml,uid_t,'chardata',val); 4178 end 4179 end 4180 end 4181 end 4182 4183 if Param.CheckFix1 4184 switch Param.CivMode 4185 case 'CivX' 4186 cmd=[cmd... 4187 cmd_fix(Param,'Fix1') '\n']; 4188 case 'CivAll'%to abandon 4189 fix1.inputFileName=filecell.nc.civ1{ifile,j} ; 4190 fix1.fi1=num2str(param.fix1.flagindex1(1)); 4191 fix1.fi2=num2str(param.fix1.flagindex1(2)); 4192 fix1.fi3=num2str(param.fix1.flagindex1(3)); 4193 fix1.threshC=num2str(param.fix1.thresh_vecC1); 4194 fix1.threshV=num2str(param.fix1.thresh_vel1); 4195 fieldnames=fields(fix1); 4196 [CivAllxml,uid_fix1]=add(CivAllxml,1,'element','fix1'); 4197 for ilist=1:length(fieldnames) 4198 val=eval(['fix1.' fieldnames{ilist}]); 4199 if ischar(val) 4200 [CivAllxml,uid_t]=add(CivAllxml,uid_fix1,'element',fieldnames{ilist}); 4201 [CivAllxml,uid_t2]=add(CivAllxml,uid_t,'chardata',val); 4202 end 4203 end 4204 CivAllCmd=[CivAllCmd ' fix1 ']; 4205 end 4206 end 4207 4208 4209 %CheckPatch1 4210 if Param.CheckPatch1 4211 switch Param.CivMode 4212 case 'CivX' 4213 cmd=[cmd... 4214 cmd_patch(Param,'Patch1') '\n']; 4215 case 'CivAll' 4216 patch1.inputFileName=filecell.nc.civ1{ifile,j} ; 4217 patch1.nopt=subdomain_patch1; 4218 patch1.maxdiff=thresh_patch1; 4219 patch1.ro=rho_patch1; 4220 test_grid=get(handles.get_gridpatch1,'Value'); 4221 if test_grid 4222 patch1.gridflag='y'; 4223 gridname=get(handles.grid_patch1,'String'); 4224 if isequal(gridname(end-3:end),'grid') 4225 nbslice_grid=str2double(gridname(1:end-4)); % 4226 if ~isnan(nbslice_grid) 4227 i1_grid=mod(i1_civ1(ifile)-1,nbslice_grid)+1; 4228 patch1.gridPatch=[filecell.filebase '_' fullfile_uvmat('','',gridname,'.grid','_1',i1_grid)]; 4229 % patch1.gridPatch=[filecell.filebase '_' name_generator(gridname,i1_grid,1,'.grid','_i')]; 4230 if ~exist(patch1.gridPatch,'file') 4231 errormsg='grid file absent for patch1'; 4232 return 4233 end 4234 elseif exist(gridname,'file') 4235 patch1.gridPatch=gridname; 4236 else 4237 errormsg='grid file absent for patch1'; 4238 return 4239 end 4240 end 4241 else 4242 patch1.gridPatch='none'; 4243 patch1.gridflag='n'; 4244 patch1.m=nx_patch1; 4245 patch1.n=ny_patch1; 4246 end 4247 patch1.convectFlow='n'; 4248 fieldnames=fields(patch1); 4249 [CivAllxml,uid_patch1]=add(CivAllxml,1,'element','patch1'); 4250 for ilist=1:length(fieldnames) 4251 val=eval(['patch1.' fieldnames{ilist}]); 4252 if ischar(val) 4253 [CivAllxml,uid_t]=add(CivAllxml,uid_patch1,'element',fieldnames{ilist}); 4254 [CivAllxml,uid_t2]=add(CivAllxml,uid_t,'chardata',val); 4255 end 4256 end 4257 CivAllCmd=[CivAllCmd ' patch1 ']; 4258 end 4259 end 4260 4261 if Param.CheckCiv2 4262 switch Param.CivMode 4263 case 'CivX' 4264 if(isunix) 4265 cmd=[cmd 'cp -f ' regexprep(filename,'(\w+)/(\w+$)','$1/0_CMX/$2.civ2.cmx ') regexprep(filename,'(\w+)/(\w+$)','$1/$2.cmx \n')... 4266 Param.xml.Civ2Bin ' -f ' regexprep(filename,'(\w+)/(\w+$)','$1/$2.cmx >') regexprep(filename,'(\w+)/(\w+$)','$1/0_LOG/$2.civ2.log \n')...% redirect standard output to the log file, the result file is named [filename '.nc'] by CIVx 4267 'rm ' regexprep(filename,'(\w+)/(\w+$)','$1/$2.cmx \n')];%rename .cmx as .checkciv2.cmx, the result file is named [filename '.nc'] by CIVx 4268 else 4269 filename=regexprep(filename,'\\','\\\\'); 4270 cmd=[cmd 'copy /Y ' regexprep(filename,'(\w+)\\\\(\w+$)','"$1\\\\0_CMX\\\\$2.civ2.cmx" ') regexprep(filename,'(\w+)\\\\(\w+$)','"$1\\\\$2.cmx" \n')... 4271 '"' regexprep(Param.xml.Civ2Bin,'\\','\\\\') '" -f "' regexprep(filename,'(\w+)\\\\(\w+$)','"$1\\\\$2.cmx" > ')... 4272 regexprep(filename,'(\w+)\\\\(\w+$)','"$1\\\\0_LOG\\\\$2.civ2.log" \n')... % redirect standard output to the log file 4273 'del ' regexprep(filename,'(\w+)\\\\(\w+$)','"$1\\\\$2.cmx" \n')]; 4274 end 4275 case 'CivAll' 4276 CivAllCmd=[CivAllCmd ' civ2 ']; 4277 str=CIV2_CMD_Unified(filecell.nc.civ2{ifile,j},'',Param.Civ2); 4278 fieldnames=fields(str); 4279 [CivAllxml,uid_civ2]=add(CivAllxml,1,'element','civ2'); 4280 for ilist=1:length(fieldnames) 4281 val=eval(['str.' fieldnames{ilist}]); 4282 if ischar(val) 4283 [CivAllxml,uid_t]=add(CivAllxml,uid_civ2,'element',fieldnames{ilist}); 4284 [CivAllxml,uid_t2]=add(CivAllxml,uid_t,'chardata',val); 4285 end 4286 end 4287 end 4288 end 4289 4290 % CheckFix2 4291 if Param.CheckFix2==1 4292 switch Param.CivMode 4293 case 'CivX' 4294 cmd=[cmd... 4295 cmd_fix(Param,'Fix2') '\n']; 4296 case 'CivAll' 4297 fix2.inputFileName=filecell.nc.civ2{ifile,j} ; 4298 fix2.fi1=num2str(flagindex2(1)); 4299 fix2.fi2=num2str(flagindex2(2)); 4300 fix2.fi3=num2str(flagindex2(3)); 4301 fix2.threshC=num2str(thresh_vec2C); 4302 fix2.threshV=num2str(thresh_vel2); 4303 fieldnames=fields(fix2); 4304 [CivAllxml,uid_fix2]=add(CivAllxml,1,'element','fix2'); 4305 for ilist=1:length(fieldnames) 4306 val=eval(['fix2.' fieldnames{ilist}]); 4307 if ischar(val) 4308 [CivAllxml,uid_t]=add(CivAllxml,uid_fix2,'element',fieldnames{ilist}); 4309 [CivAllxml,uid_t2]=add(CivAllxml,uid_t,'chardata',val); 4310 end 4311 end 4312 CivAllCmd=[CivAllCmd ' fix2 ']; 4313 end 4314 end 4315 4316 %CheckPatch2 4317 if Param.CheckPatch2==1 4318 4319 switch Param.CivMode 4320 4321 case 'CivX' 4322 cmd=[cmd... 4323 cmd_patch(Param,'Patch2') '\n']; 4324 case 'CivAll' 4325 patch2.inputFileName=filecell.nc.civ1{ifile,j} ; 4326 patch2.nopt=subdomain_patch2; 4327 patch2.maxdiff=thresh_patch2; 4328 patch2.ro=rho_patch2; 4329 test_grid=get(handles.get_gridpatch2,'Value'); 4330 if test_grid 4331 patch2.gridflag='y'; 4332 gridname=get(handles.grid_patch2,'String'); 4333 if isequal(gridname(end-3:end),'grid') 4334 nbslice_grid=str2double(gridname(1:end-4)); % 4335 if ~isnan(nbslice_grid) 4336 i1_grid=mod(i1_civ2(ifile)-1,nbslice_grid)+1; 4337 patch2.gridPatch=[filecell.filebase '_' fullfile_uvmat('','',gridname,'.grid','_1',i1_grid)]; 4338 % patch2.gridPatch=[filecell.filebase '_' name_generator(gridname,i1_grid,1,'.grid','_i')]; 4339 if ~exist(patch2.gridPatch,'file') 4340 errormsg='grid file absent for patch2'; 4341 return 4342 end 4343 elseif exist(gridname,'file') 4344 patch2.gridPatch=gridname; 4345 else 4346 errormsg='grid file absent for patch2'; 4347 return 4348 end 4349 end 4350 else 4351 patch2.gridPatch='none'; 4352 patch2.gridflag='n'; 4353 patch2.m=nx_patch2; 4354 patch2.n=ny_patch2; 4355 end 4356 patch2.convectFlow='n'; 4357 fieldnames=fields(patch2); 4358 [CivAllxml,uid_patch2]=add(CivAllxml,1,'element','patch2'); 4359 for ilist=1:length(fieldnames) 4360 val=eval(['patch2.' fieldnames{ilist}]); 4361 if ischar(val) 4362 [CivAllxml,uid_t]=add(CivAllxml,uid_patch2,'element',fieldnames{ilist}); 4363 [CivAllxml,uid_t2]=add(CivAllxml,uid_t,'chardata',val); 4364 end 4365 end 4366 CivAllCmd=[CivAllCmd ' patch2 ']; 4367 end 4368 end 4369 4370 if isequal(Param.CivMode,'CivAll') 4371 save(CivAllxml,[Param.OutputFile '.xml']); 4372 cmd=[cmd sparam.CivBin ' -f ' Param.OutputFile '.xml ' CivAllCmd ' >' Param.OutputFile '.log' '\n']; 4373 end 4374 4375 if isequal(Param.CivMode,'Matlab') 4376 if batch 4377 cmd=['#!/bin/bash \n '... 4378 '#$ -cwd \n '... 4379 'hostname && date \n '... 4380 'umask 002 \n'... 4381 Param.xml.CivmBin ' ' Param.xml.RunTime ' ' filename_xml ' ' Param.OutputFile '.nc'];%allow writting access to created files for user group 4382 4383 fprintf(fid,cmd); 4384 fclose(fid); 4385 if isunix 4386 system(['chmod +x ' filename_bat]); 4387 end 4388 batch_file_list{length(batch_file_list)+1}=filename_bat; 4389 else 4390 cmd=['civ_matlab(''' regexprep(filename,'(\w+)([/\\])(\w+$)','$1$20_XML$2$3.xml') ''','''... 4391 filename '.nc'');'] 4392 % [tild,errormsg]=civ_matlab(Param,filecell.nc.civ1{ifile,j}); 4393 end 4394 end 4395 4396 4397 if isequal(Param.CivMode,'MatlabCompile') 4398 cmd=['#!/bin/bash \n '... 4399 '#$ -cwd \n '... 4400 'hostname && date \n '... 4401 'umask 002 \n'... 4402 Param.xml.CivmBin ' ' Param.xml.RunTime ' ' filename_xml ' ' Param.OutputFile '.nc'];%allow writting access to created files for user group 4403 end 4404 4405 4406 if isequal(Param.CivMode,'MatlabNonCompile') 4407 % cmd=[regexprep(which(civ_matlab),'.m$','')... 4408 % '(' regexprep(filename,'(\w+)/(\w+$)','$1/0_XML$2.xml,')... 4409 % filename '.nc);']; 4410 % [tild,errormsg]=civ_matlab(Param,filecell.nc.civ1{ifile,j}); 4411 end 4412 4413 4414 4415 4416 4417 4418 function cmd=cmd_fix(Param,fixname) 4419 %% 4420 switch fixname 4421 case 'Fix1' 4422 fi2_value=num2str(Param.(fixname).CheckF2); 4423 filename=regexprep(Param.OutputFile,'.nc',''); 4424 case 'Fix2' 4425 fi2_value=num2str(Param.(fixname).CheckF4);%need to understand why... 4426 filename=regexprep(Param.OutputFile,'.nc',''); 4427 end 4428 4429 % filename=regexprep(Param.(fixname).OutFileName,'.nc',''); 4430 MaskName_string='';%default 4431 MaxVel_string='';%default 4432 if ~isempty(Param.(fixname).MinVel) 4433 MaxVel_string=[' -threshV ' num2str(Param.(fixname).MinVel)]; 4434 end 4435 if isunix 4436 cmd=[Param.xml.FixBin ' -f ' filename '.nc -fi1 ' num2str(Param.(fixname).CheckFmin2) ... 4437 ' -fi2 ' fi2_value ' -fi3 ' num2str(Param.(fixname).CheckF3) ... 4438 ' -threshC ' num2str(Param.(fixname).MinCorr) MaxVel_string MaskName_string... 4439 ' >' regexprep(filename,'(\w+)/(\w+$)','$1/0_LOG/$2.') lower(fixname) '.log 2>&1']; 4440 else 4441 cmd=['"' Param.xml.FixBin '" -f "' filename '.nc" -fi1 ' num2str(Param.(fixname).CheckFmin2)... 4442 ' -fi2 ' fi2_value ' -fi3 ' num2str(Param.(fixname).CheckF3) ... 4443 ' -threshC ' num2str(Param.(fixname).MinCorr) MaxVel_string MaskName_string... 4444 ' > "' regexprep(filename,'(\w+)\\(\w+$)','$1\\0_LOG\\$2.') lower(fixname) '.log"']; 4445 cmd=regexprep(cmd,'\\','\\\\'); 4446 end 4447 4448 4449 function cmd=cmd_patch(Param,patchname) 4450 %% ------------------------------------------------------------------------ 4451 switch patchname 4452 case 'Patch1' 4453 filename=regexprep(Param.OutputFile,'.nc',''); 4454 case 'Patch2' 4455 filename=regexprep(Param.OutputFile,'.nc',''); 4456 end 4457 % filename=regexprep(Param.(patchname).OutFileName,'.nc',''); 4458 if isunix 4459 cmd=[Param.xml.PatchBin... 4460 ' -f ' filename '.nc -m ' num2str(Param.(patchname).Nx)... 4461 ' -n ' num2str(Param.(patchname).Ny) ' -ro ' num2str(Param.(patchname).FieldSmooth)... 4462 ' -nopt ' num2str(Param.(patchname).SubdomainSize) ... 4463 ' > ' regexprep(filename,'(\w+)/(\w+$)','$1/0_LOG/$2.') lower(patchname) '.log 2>&1']; % redirect standard output to the log file 4464 else 4465 cmd=['"' Param.xml.PatchBin... 4466 '" -f "' filename '.nc" -m ' num2str(Param.(patchname).Nx)... 4467 ' -n ' num2str(Param.(patchname).Ny) ' -ro ' num2str(Param.(patchname).FieldSmooth)... 4468 ' -nopt ' num2str(Param.(patchname).SubdomainSize)... 4469 ' > "' filename '.' lower(patchname) '.log" 2>&1']; % redirect standard output to the log file 4470 cmd=regexprep(cmd,'\\','\\\\'); 4471 end 4472 4473 4474 4475 4476 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 4477 % USELESS FUNCTIONS BELOW HERE, TO CLEAN 4478 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 4479 4480 4481 4482 4483 4484 %------------------------------------------------------------------------ 4485 % --- CheckCiv1 Unified: TO ABADON 4486 function xml_civ1_parameters=CIV1_CMD_Unified(filename,namelog,par) 4487 %------------------------------------------------------------------------ 4488 %pixels per cm and matrix of the image times, read from the .civ file by uvmat 4489 %global CivBin%name of the executable for checkciv1 calculation 4490 4491 civ1.image1=par.ImageA; 4492 civ1.image2=par.ImageB; 4493 civ1.imageSize_X=par.npx; 4494 civ1.imageSize_Y=par.npy; 4495 civ1.outputFileName=[filename '.nc']; 4496 civ1.correlationBoxesSize_X=par.ibx; 4497 civ1.correlationBoxesSize_Y=par.iby; 4498 civ1.searchBoxesSize_X=par.isx; 4499 civ1.searchBoxesSize_Y=par.isy; 4500 civ1.globalShift_X=par.shiftx; 4501 civ1.globalShift_Y=par.shifty; 4502 civ1.ro=par.rho; 4503 civ1.hart='y'; 4504 if isequal(par.gridflag,'y') 4505 civ1.grid=par.gridname; 4506 else 4507 civ1.grid='n'; 4508 civ1.gridSpacing_X=par.dx; 4509 civ1.gridSpacing_Y=par.dy; 4510 end 4511 if isequal(par.maskflag,'y') 4512 civ1.mask=par.maskname; 4513 end 4514 civ1.dt=par.Dt; 4515 civ1.unit='pixel'; 4516 civ1.absolut_time_T0=par.Time; 4517 civ1.pixcmx='1'; 4518 civ1.pixcmy='1'; 4519 civ1.convectFlow='n'; 4520 4521 xml_civ1_parameters=civ1; 4522 4523 %------------------------------------------------------------------------ 4524 % --- CheckCiv2 Unified: TO ABADON 4525 function civ2=CIV2_CMD_Unified(filename,namelog,par) 4526 %------------------------------------------------------------------------ 4527 %pixels per cm and matrix of the image times, read from the .civ file by uvmat 4528 %global CivBin%name of the executable for checkciv1 calculation 4529 4530 filename=regexprep(filename,'.nc',''); 4531 4532 civ2.image1=par.ImageA; 4533 civ2.image2=par.ImageB; 4534 civ2.imageSize_X=par.npx; 4535 civ2.imageSize_Y=par.npy; 4536 civ2.inputFileName=[par.filename_nc1 '.nc']; 4537 civ2.outputFileName=[filename '.nc']; 4538 civ2.correlationBoxesSize_X=par.ibx; 4539 civ2.correlationBoxesSize_Y=par.iby; 4540 civ2.ro=par.rho; 4541 %checkciv2.decimalShift=par.CheckDecimal; 4542 %checkciv2.CheckDeformation=par.CheckDeformation; 4543 if isequal(par.decimal,'1') 4544 civ2.decimalShift='y'; 4545 else 4546 civ2.decimalShift='n'; 4547 end 4548 if isequal(par.deformation,'1') 4549 civ2.deformation='y'; 4550 else 4551 civ2.deformation='n'; 4552 end 4553 if isequal(par.gridflag,'y') 4554 civ2.grid=par.gridname; 4555 else 4556 civ2.grid='n'; 4557 civ2.gridSpacing_X=par.dx; 4558 civ2.gridSpacing_Y=par.dy; 4559 end 4560 civ2.gridSpacing_X='10'; 4561 civ2.gridSpacing_Y='10';%NOTE: faut mettre gridSpacing pourque ca tourne, meme si c'est la grille qui est utilisee 4562 if isequal(par.maskflag,'y') 4563 civ2.mask=par.maskname; 4564 else 4565 civ2.mask='n'; 4566 end 4567 civ2.dt=par.Dt; 4568 civ2.unit='pixel'; 4569 civ2.absolut_time_T0=par.Time; 4570 civ2.pixcmx='1'; 4571 civ2.pixcmy='1'; 4572 civ2.convectFlow='n'; 4573 4574 4575
Note: See TracChangeset
for help on using the changeset viewer.