Changeset 456


Ignore:
Timestamp:
Jun 17, 2012, 10:50:20 PM (9 years ago)
Author:
sommeria
Message:

various bugs corrected

Location:
trunk/src
Files:
1 deleted
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/find_file_series.m

    r445 r456  
    235235    end
    236236    %[tild,ifile_min]=min(ref_ij(ref_ij>0));
    237     ifile_min=find(ref_ij>0 , 1);
    238     if isempty(ifile_min)
     237    ind_select=find(ref_ij>0);
     238    if isempty(ind_select)
    239239        %         RootPath='';
    240240        RootFile='';
    241241        NomType='';
    242242    else
     243        [tild,ifile_min]=min(ref_ij(ind_select));
    243244        [tild,tild,tild,tild,tild,tild,tild,tild,NomType]=fileparts_uvmat(dirpair(ifile_min).name);% update the representation of indices (number of 0 before the number)
    244245        NomType=regexprep(NomType,['^' NomTypePref],'');
  • trunk/src/imadoc2struct.m

    r215 r456  
    2828
    2929%% opening the xml file
    30 if exist(ImaDoc,'file')~=2, errormsg=[ ImaDoc ' does not exist']; return;end;%input file does not exist
     30[tild,tild,FileExt]=fileparts(ImaDoc);
     31if strcmp(FileExt,'.civ')
     32    [errormsg,time,TimeUnit,mode,npx,npy,XmlData{iview}.GeometryCalib]=read_imatext(ImaDoc);
     33    return
     34end
    3135try
    3236    t=xmltree(ImaDoc);
    33 catch
    34     errormsg={[ImaDoc ' is not a valid xml file']; lasterr};
     37catch ME
     38    errormsg={['error reading ' ImaDoc ': ']; ME.message};
    3539    display(errormsg);
    3640    return
    3741end
    3842uid_root=find(t,'/ImaDoc');
    39 if isempty(uid_root), errormsg=[ImaDoc ' is not an image documentation file ImaDoc']; return; end;%not an ImaDoc .xml file
    40 
     43if isempty(uid_root), return; end;%not an ImaDoc .xml file
    4144
    4245%% Heading
     
    283286   end
    284287end
     288
     289%------------------------------------------------------------------------
     290%'read_imatext': reads the .civ file for image documentation (obsolete)
     291% fileinput: name of the documentation file
     292% time: matrix of times for the set of images
     293%pxcmx: scale along x in pixels/cm
     294%pxcmy: scale along y in pixels/cm
     295function [error,time,TimeUnit,mode,npx,npy,GeometryCalib]=read_imatext(fileinput)
     296%------------------------------------------------------------------------
     297error=0;%default
     298time=[]; %default
     299TimeUnit='s';
     300mode='pairs';
     301npx=[]; %default
     302npy=[]; %default
     303pxcmx=1;%default
     304pxcmy=1;%default
     305if exist(fileinput,'file')~=2, error=2, return;end;%input file does not exist
     306dotciv=textread(fileinput);
     307sizdot=size(dotciv);
     308if ~isequal(sizdot(1)-8,dotciv(1,1));
     309    error=1; %inconsistent number of bursts
     310end
     311nbfield=sizdot(1)-8;
     312npx=(dotciv(2,1));
     313npy=(dotciv(2,2));
     314pxcmx=(dotciv(6,1));% pixels/cm in the .civ file
     315pxcmy=(dotciv(6,2));
     316% nburst=dotciv(3,1); % nbre of bursts
     317abs_time1=dotciv([9:nbfield+8],2);
     318dtime=dotciv(5,1)*(dotciv([9:nbfield+8],[3:end-1])+1);
     319timeshift=[abs_time1 dtime];
     320time=cumsum(timeshift,2);
     321
     322GeometryCalib.R=[pxcmx 0 0; 0 pxcmy 0;0 0 0];
     323GeometryCalib.Tx=0;
     324GeometryCalib.Ty=0;
     325GeometryCalib.Tz=1;
     326GeometryCalib.dpx=1;
     327GeometryCalib.dpy=1;
     328GeometryCalib.sx=1;
     329GeometryCalib.Cx=0;
     330GeometryCalib.Cy=0;
     331GeometryCalib.f=1;
     332GeometryCalib.kappa1=0;
     333GeometryCalib.CoordUnit='cm';
  • trunk/src/mouse_down.m

    r432 r456  
    132132                if isequal(get(hObject,'SelectionType'),'alt')  && isequal(get(hchild,'Visible'),'on') && ~isequal(get(hchild,'tag'),'frame_object')&&...
    133133                        ~isequal(get(hchild,'tag'),'ListObject')
    134 %                     if strcmp(get(hchild,'Visible'),'on')
    135134                    if ~strcmp(get(hchild,'Style'),'frame')%do not visualisaze frames
    136135                        msg_pos(1:2)=GUI_pos(1:2)+obj_pos(1:2).*GUI_pos(3:4);
     
    159158                end
    160159        end
     160        if ~isempty(output_str)
     161            break   %leave the current loop if a uicontrol has been selected
     162        end
    161163    end
    162164end
  • trunk/src/series.m

    r453 r456  
    539539MinIndex=get(handles.MinIndex,'Data');%retrieve the min indices in the table MinIndex
    540540MaxIndex=get(handles.MaxIndex,'Data');%retrieve the max indices in the table MaxIndex
    541 i_sum=sum(sum(i1_series,2),3);
     541i_sum=sum(sum(i1_series,2),3);%sum of i1_series on the last index
    542542MaxIndex_i=max(find(i_sum>0))-1;
    543 MinIndex_i=min(find(i_sum>0))-1;
    544 j_sum=sum(sum(i1_series,1),3);
     543if isequal(i1_series(1),0)
     544    MinIndex_i=0;
     545else
     546    MinIndex_i=min(find(i_sum>0))-1;
     547end
     548j_sum=sum(sum(j1_series,1),3);
    545549MaxIndex_j=max(find(j_sum>0))-1;
    546550MinIndex_j=min(find(j_sum>0))-1;
     
    650654
    651655%% update time table
     656if ~isempty(time)
    652657TimeTable=get(handles.TimeTable,'Data');
    653658if isempty(MinIndex_j)
     659    if MinIndex_i>0
    654660    TimeTable{iview,1}=time(MinIndex_i);
     661    end
    655662    TimeTable{iview,2}=time(first_i);
    656663    TimeTable{iview,3}=time(last_i);
    657664    TimeTable{iview,4}=time(MaxIndex_i);
    658665elseif ~isempty(time)
     666    if MinIndex_i>0
    659667    TimeTable{iview,1}=time(MinIndex_i,MinIndex_j);
     668    end
    660669    TimeTable{iview,2}=time(first_i,first_j);
    661670    TimeTable{iview,3}=time(last_i,last_j);
     
    663672end
    664673set(handles.TimeTable,'Data',TimeTable)
     674end
    665675
    666676%% number of slices
     
    11081118else
    11091119    enable_i(handles,'On')
    1110     enable_j(handles,'On')
     1120    if isempty(j1_series)
     1121         enable_j(handles,'Off')
     1122    else
     1123        enable_j(handles,'On')
     1124    end
    11111125end
    11121126fill_ListPair(handles,i1_series,i2_series,j1_series,j2_series,time)
     
    12591273set(handles.RUN, 'Enable','Off')
    12601274set(handles.RUN,'BackgroundColor',[0.831 0.816 0.784])
     1275drawnow
    12611276[h_fun,Series,filexml,errormsg]=prepare_jobs(handles);
    12621277if ~isempty(errormsg)
    12631278    msgbox_uvmat('ERROR',errormsg)
    12641279else
    1265    Series.Specific=h_fun(Series,0);   
     1280  %Series.Specific=h_fun(Series);   
     1281   Series=h_fun(Series); 
    12661282   t=struct2xml(Series);
    12671283    t=set(t,1,'name','Series');
    12681284    save(t,filexml);
    1269     h_fun(Series);
     1285%     h_fun(Series);
    12701286end
    12711287set(handles.RUN, 'Enable','On')
     
    12931309end
    12941310% update the xml file after interactive input with the function
    1295 Series.Specific=h_fun(Series,0);   
     1311Series.Specific=h_fun('input?');   
    12961312t=struct2xml(Series);
    12971313t=set(t,1,'name','Series');
     
    13051321    return
    13061322end
    1307 fctpath=get(handles.ActionPath,'String');
     1323path_fct=get(handles.ActionPath,'String');
    13081324text_matlabscript=[...
    13091325    '#!/bin/bash \n'...
     
    13111327    'matlab -nodisplay -nosplash -nojvm <<END_MATLAB \n'...
    13121328    'cd(''' path_series '''); \n'...
    1313     'addpath(''' fctpath '''); \n'...
     1329    'addpath(''' path_fct '''); \n'...
    13141330    '' Series.Action  '( ''' filename_xml '''); \n'...
    13151331    'exit \n'...
     
    13181334fclose(fid);
    13191335if isunix
    1320     system(['chmod +x ' filename_bat]);
     1336    system(['chmod +x ' filename_bat]);% set the file to executable
     1337    system(['. ' filename_bat]);%execute fct
    13211338end
    13221339set(handles.BATCH, 'Enable','On')
    13231340set(handles.BATCH,'BackgroundColor',[1 0 0])
     1341
    13241342%------------------------------------------------------------------------
    13251343% --- Executes on button press in BIN.
     
    13331351   
    13341352%------------------------------------------------------------------------
    1335 % --- Main lauch command, called by RUN and BATCH
     1353% --- Main launch command, called by RUN and BATCH
    13361354function [h_fun,Series,filexml,errormsg]=prepare_jobs(handles)
    13371355%------------------------------------------------------------------------
     1356filexml='';
    13381357errormsg='';
    13391358%% Read parameters from series
     
    13431362end
    13441363
    1345 %% read root name and field type
     1364%% read index ranges
    13461365first_i=1;
    13471366last_i=1;
     
    14631482    end
    14641483    filexml=fullfile(Series.OutputDir,[Series.InputTable{1,3} '.xml']);% name of the parameter xml file set in this directory
    1465     t=struct2xml(Series);
    1466     t=set(t,1,'name','Series');
    1467     save(t,filexml);
     1484%     t=struct2xml(Series);
     1485%     t=set(t,1,'name','Series');
     1486%     save(t,filexml);
    14681487end
    14691488
     
    15731592    InputText=textscan(fid,'%s',1,'delimiter','\n');
    15741593    fclose(fid)
    1575     set(handles.ActionName,'ToolTipString',InputText{1}{1})
     1594    set(handles.ActionName,'ToolTipString',InputText{1}{1})% put the first line of the selected function as tooltip help
    15761595end
    15771596if ~isequal(path_series,PathName)
     
    16171636                SeriesData.AllowInputSort=1;
    16181637                set(handles.series,'UserData',SeriesData)
    1619             end             
     1638            end                     
     1639        case 'WholeIndexRange'
     1640            if isequal(lower(varargout{ilist+1}),'on')% sort the input table by alphabetical order of the SubDir
     1641                MinIndex=get(handles.MinIndex,'Data');
     1642                MaxIndex=get(handles.MaxIndex,'Data');
     1643                if ~isempty(MinIndex)
     1644                    set(handles.num_first_i,'String',num2str(MinIndex{1}))
     1645                    set(handles.num_last_i,'String',num2str(MaxIndex{1}))
     1646                    set(handles.num_incr_i,'String','1')
     1647                    if size(MinIndex,2)>=2
     1648                        set(handles.num_first_j,'String',num2str(MinIndex{1,2}))
     1649                        set(handles.num_last_j,'String',num2str(MaxIndex{1,2}))
     1650                        set(handles.num_incr_j,'String','1')
     1651                    end
     1652                end
     1653            end           
    16201654        case 'NbSlice'   %hidden by default
    16211655            if isequal(lower(varargout{ilist+1}),'on')
  • trunk/src/uvmat.m

    r452 r456  
    597597% read the current input file name:
    598598[RootPath,SubDir,RootFile,FileIndices,FileExt]=read_file_boxes(handles);
     599if ~exist(fullfile(RootPath,SubDir),'dir')
     600    msgbox_uvmat('ERROR',['directory ' fullfile(RootPath,SubDir) ' does not exist'])
     601    return
     602end
    599603% detect the file type, get the movie object if relevant, and look for the corresponding file series:
    600604[RootPath,SubDir,RootFile,i1_series,i2_series,j1_series,j2_series,tild,FileType,MovieObject]=find_file_series(fullfile(RootPath,SubDir),[RootFile FileIndices FileExt]);
     
    608612% update_rootinfo_1(hObject,eventdata,handles)
    609613[RootPath,SubDir,RootFile,FileIndices,FileExt]=read_file_boxes_1(handles);
     614if ~exist(fullfile(RootPath,SubDir),'dir')
     615    msgbox_uvmat('ERROR',['directory ' fullfile(RootPath,SubDir) ' does not exist'])
     616    return
     617end
    610618% detect the file type, get the movie object if relevant, and look for the corresponding file series:
    611619[RootPath,SubDir,RootFile,i1_series,i2_series,j1_series,j2_series,tild,FileType,MovieObject]=find_file_series(fullfile(RootPath,SubDir),[RootFile FileIndices FileExt]);
     
    908916SubDirBase=regexprep(SubDir,'\..*','');%take the root part of SubDir, before the first dot '.'
    909917filexml=fullfile(RootPath,[SubDirBase '.xml']);% new convention: xml above the image dir
     918DocExt='.xml';
    910919if ~exist(filexml,'file')
    911920    filexml=fullfile(RootPath,SubDir,[RootFile '.xml']);%old convention: xml within the image directroy
     921    if ~exist(filexml,'file')
     922        filexml=fullfile(RootPath,SubDir,[RootFile '.civ']); % very old convention: .civ file
     923        if ~exist(filexml,'file')
     924            DocExt='.civ';
     925        else
     926            filexml='';
     927        end
     928    end
    912929end
    913930warntext='';%default warning message
    914931NbSlice=1;%default
    915932set(handles.RootPath,'BackgroundColor',[1 1 1])
    916 if exist(filexml,'file')
     933if ~isempty(filexml)
    917934    set(handles.view_xml,'Visible','on')
    918935    set(handles.view_xml,'BackgroundColor',[1 1 0])
    919936    set(handles.view_xml,'String','view .xml')
    920937    drawnow
    921     [XmlData,warntext]=imadoc2struct(filexml);
     938    [XmlDataRead,warntext]=imadoc2struct(filexml);
    922939    if ~isempty(warntext)
    923         display(warntext)
    924 %         msgbox_uvmat('WARNING',warntext)
    925     end
    926     if isfield(XmlData,'TimeUnit')
    927         if isfield(XmlData,'TimeUnit')&& ~isempty(XmlData.TimeUnit)
    928             TimeUnit=XmlData.TimeUnit;
    929         end
    930     end
    931     set(handles.view_xml,'BackgroundColor',[1 1 1])
    932     drawnow
    933     if isfield(XmlData, 'GeometryCalib') && ~isempty(XmlData.GeometryCalib)
    934         if isfield(XmlData.GeometryCalib,'VolumeScan') && isequal(XmlData.GeometryCalib.VolumeScan,'y')
    935             set (handles.nb_slice,'String','volume')
    936         end
    937         hgeometry_calib=findobj('tag','geometry_calib');
    938         if ~isempty(hgeometry_calib)
    939             GUserData=get(hgeometry_calib,'UserData');
    940             if ~(isfield(GUserData,'XmlInputFile') && strcmp(GUserData.XmlInputFile,filexml))
    941                 answer=msgbox_uvmat('INPUT_Y-N','replace the display of geometry_calib with the new input data?');
    942                 if strcmp(answer,'Yes')
    943                     geometry_calib(filexml);%diplay the new calibration points and parameters in geometry_calib
     940        msgbox_uvmat('WARNING',warntext)
     941    end
     942    if isempty(XmlDataRead)
     943        set(handles.view_xml,'Visible','off')
     944    else
     945        set(handles.view_xml,'String',['view ' DocExt])   
     946        XmlData=XmlDataRead;
     947        if isfield(XmlData,'TimeUnit')
     948            if isfield(XmlData,'TimeUnit')&& ~isempty(XmlData.TimeUnit)
     949                TimeUnit=XmlData.TimeUnit;
     950            end
     951        end
     952        set(handles.view_xml,'BackgroundColor',[1 1 1])
     953        drawnow
     954        if isfield(XmlData, 'GeometryCalib') && ~isempty(XmlData.GeometryCalib)
     955            if isfield(XmlData.GeometryCalib,'VolumeScan') && isequal(XmlData.GeometryCalib.VolumeScan,'y')
     956                set (handles.nb_slice,'String','volume')
     957            end
     958            hgeometry_calib=findobj('tag','geometry_calib');
     959            if ~isempty(hgeometry_calib)
     960                GUserData=get(hgeometry_calib,'UserData');
     961                if ~(isfield(GUserData,'XmlInputFile') && strcmp(GUserData.XmlInputFile,filexml))
     962                    answer=msgbox_uvmat('INPUT_Y-N','replace the display of geometry_calib with the new input data?');
     963                    if strcmp(answer,'Yes')
     964                        geometry_calib(filexml);%diplay the new calibration points and parameters in geometry_calib
     965                    end
    944966                end
    945967            end
    946968        end
    947     end 
    948 else
    949     fileciv=fullfile(RootPath,SubDir,[RootFile '.civ']);
    950     if exist(fileciv,'file')% if .civ file found (very old convention)
    951         [error,XmlData.Time,TimeUnit,mode,npx,npy,pxcmx,pxcmy]=read_imatext(fileciv);
    952         GeometryCalib.R=[pxcmx 0 0; 0 pxcmy 0;0 0 0];
    953         GeometryCalib.Tx=0;
    954         GeometryCalib.Ty=0;
    955         GeometryCalib.Tz=1;
    956         GeometryCalib.dpx=1;
    957         GeometryCalib.dpy=1;
    958         GeometryCalib.sx=1;
    959         GeometryCalib.Cx=0;
    960         GeometryCalib.Cy=0;
    961         GeometryCalib.f=1;
    962         GeometryCalib.kappa1=0;
    963         GeometryCalib.CoordUnit='cm';
    964         XmlData.GeometryCalib=GeometryCalib;
    965         if error==2, warntext=['no file ' fileciv];
    966         elseif error==1, warntext='inconsistent number of fields in the .civ file';
    967         end
    968         set(handles.num_Npx,'String',num2str(npx));%fills nbre of pixels x box
    969         set(handles.num_Npy,'String',num2str(npy));%fills nbre of pixels y box
    970         set(handles.pxcm,'String',num2str(pxcmx));%fills scale x (pixel/cm) box
    971         set(handles.pycm,'String',num2str(pxcmy));%fills scale y (pixel/cm) box
    972         set(handles.pxcm,'Visible','on');%fills scale x (pixel/cm) box
    973         set(handles.pycm,'Visible','on');%fills scale y (pixel/cm) box
    974         set(handles.view_xml,'Visible','on')
    975         set(handles.view_xml,'String','view .civ')
    976     else
    977         set(handles.view_xml,'Visible','off')
    978969    end
    979970end
     
    991982    %transform .Time to a column vector if it is a line vector the nomenclature uses a single index
    992983    if isequal(size(XmlData.Time,1),1)
    993 %     if isequal(nbfield,1) && ~isequal(nbfield_j,1)% .Time is a line vector
    994984        NomType=get(handles.NomType,'String');
    995 %         if isempty(nbfield_j)
    996 %         if numel(NomType)>=2 &&(strcmp(NomType,'_i')||strcmp(NomType(1:2),'%0')||strcmp(NomType(1:2),'_%'))
    997             XmlData.Time=(XmlData.Time)';
     985        XmlData.Time=(XmlData.Time)';
    998986    end
    999987end
     
    23272315      abstime_1=[];
    23282316end 
    2329 set(handles.abs_time,'String',num2str(abstime,4))
    2330 set(handles.abs_time_1,'String',num2str(abstime_1,4))
     2317set(handles.abs_time,'String',num2str(abstime,5))
     2318set(handles.abs_time_1,'String',num2str(abstime_1,5))
    23312319% if testimedoc && isfield(UvData,'dt')
    23322320%     dt=UvData.dt;
Note: See TracChangeset for help on using the changeset viewer.