Changeset 374


Ignore:
Timestamp:
Jan 16, 2012, 12:51:23 AM (12 years ago)
Author:
sommeria
Message:

fgunctions under series adapted to the renovated GUI series

Location:
trunk/src/series
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/series/aver_stat.m

    r361 r374  
    11%'aver_stat': calculate field average, used with series.fig
    22%------------------------------------------------------------------------
    3 % function GUI_input=aver_stat(num_i1,num_i2,num_j1,num_j2,Series)
     3% function GUI_input=aver_stat(Param)
    44%
    55%OUTPUT
     
    77%
    88%INPUT:
    9 %num_i1: series of first indices i (given from the series interface as first_i:incr_i:last_i, mode and list_pair_civ)
    10 %num_i2: series of second indices i (given from the series interface as first_i:incr_i:last_i, mode and list_pair_civ)
    11 %num_j1: series of first indices j (given from the series interface as first_j:incr_j:last_j, mode and list_pair_civ )
    12 %num_j2: series of second indices j (given from the series interface as first_j:incr_j:last_j, mode and list_pair_civ)
    13 %Series: Matlab structure containing information set by the series interface
     9% Param: structure containing all the parameters read on the GUI series
     10%  or name of the xml file containing these parameters (BATCH case)
    1411%
    1512function GUI_input=aver_stat(Param)
     
    1815%----------------------------------------------------------------------
    1916%INPUT:
    20 %num_i1: series of first indices i (given from the series interface as first_i:incr_i:last_i, mode and list_pair_civ)
     17%i1_series: series of first indices i (given from the series interface as first_i:incr_i:last_i, mode and list_pair_civ)
    2118%num_i2: series of second indices i (given from the series interface as first_i:incr_i:last_i, mode and list_pair_civ)
    22 %num_j1: series of first indices j (given from the series interface as first_j:incr_j:last_j, mode and list_pair_civ )
     19%j1_series: series of first indices j (given from the series interface as first_j:incr_j:last_j, mode and list_pair_civ )
    2320%num_j2: series of second indices j (given from the series interface as first_j:incr_j:last_j, mode and list_pair_civ)
    2421%OTHER INPUTS given by the structure Series
     
    4441%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4542
    46 %% Input parameters: read the xml file fior batch case
     43%% input parameters
     44% read the xml file for batch case
    4745if ischar(Param) && ~isempty(find(regexp('Param','.xml$')))
    4846    Param=xml2struct(Param);
    49     else
    50         hseries=guidata(Param.hseries);%handles of the GUI series
     47else %  RUN case: parameters introduced as the input structure Param
     48    hseries=guidata(Param.hseries);%handles of the GUI series
    5149    WaitbarPos=get(hseries.waitbar_frame,'Position');
    5250end
    53 Param
    54 Param.IndexRange
     51[filecell,i1_series,i2_series,j1_series,j2_series]=get_file_series(Param);
     52
     53%% coordinate transform or other user defined transform (TODO: case BATCH ?)
     54transform_fct='';%default
     55if isfield(Param,'transform_fct') % transform function handle
     56    transform_fct=Param.transform_fct;
     57end
    5558
    5659%% projection object
     
    6770
    6871%% root input file and type
    69 % if ~iscell(Series.RootPath)% case of a single input field series
    70 %     num_i1={num_i1};num_j1={num_j1};num_i2={num_i2};num_j2={num_j2};
    71 %     RootPath={Series.RootPath};
    72 %     RootFile={Series.RootFile};
    73 %     SubDir={Series.SubDir};
    74 %     FileExt={Series.FileExt};
    75 %     NomType={Series.NomType};
    76 % else
    77 %     RootPath=Series.RootPath;
    78 %     RootFile=Series.RootFile;
    79 %     SubDir=Series.SubDir;
    80 %     NomType=Series.NomType;
    81 %     FileExt=Series.FileExt;
    82 % end   
    8372    RootPath=Param.InputTable(:,1);
    8473    RootFile=Param.InputTable(:,3);
     
    10392    end
    10493end
     94
    10595
    10696%% Number of input series: this function  accepts two input file series at most (then it operates on the difference of fields)
     
    162152        elseif isempty(hget_field)
    163153           filename=...
    164                  name_generator(fullfile(RootPath{1},RootFile{1}),num_i1{1}(1),num_j1{1}(1),FileExt{1},NomType{1},1,num_i2{1}(1),num_j2{1}(1),SubDir{1});
     154                 name_generator(fullfile(RootPath{1},RootFile{1}),i1_series{1}(1),j1_series{1}(1),FileExt{1},NomType{1},1,i2_series{1}(1),num_j2{1}(1),SubDir{1});
    165155           get_field(filename);
    166156           return
     
    258248    end   
    259249end
    260 if size(time,2) < num_i2{1}(end) || size(time,3) < num_j2{1}(end)% ime array absent or too short in ImaDoc xml file'
     250if size(time,2) < i2_series{1}(end) || size(time,3) < num_j2{1}(end)% ime array absent or too short in ImaDoc xml file'
    261251    time=[];
    262252end
     
    276266    pathdir=fullfile(RootPath{1},subdir_result);% full subdirectory name, including path
    277267    if NbSlice==1% keep track of the first and lsat indices of the input files
    278         NomTypeOut=nomtype2pair(NomType{1},num_i2{end}(end)-num_i1{1}(1),num_j2{end}(end)-num_j1{1}(1));
    279         fileresult{1}=name_generator(filebase_out,num_i1{1}(1),num_j1{1}(1),ext_out,NomTypeOut,1,num_i2{end}(end),num_j2{end}(end),subdir_result);
     268        %NomTypeOut=nomtype2pair(Param.InputTable{1,4},i2_series{end}(end)-i1_series{1}(1),j2_series{end}(end)-j1_series{1}(1));
     269        NomTypeOut='_1-2';
     270%         RootPath,SubDir,RootFile,FileExt,NomType,i1,i2,j1,j2)
     271        fileresult{1}=fullfile_uvmat(RootPath{1},subdir_result,RootFile{1},ext_out,NomTypeOut,i1_series{1}(1),[],[],[]);
     272%         fileresult{1}=name_generator(filebase_out,i1_series{1}(1),j1_series{1}(1),ext_out,NomTypeOut,1,i2_series{end}(end),j2_series{end}(end),subdir_result);
    280273        testexist=exist(fileresult{1},'file');
    281274    else % simplified indexing with i_slice for multiple slices
    282275        testexist=0;
    283276        for i_slice=1:NbSlice
    284             fileresult{i_slice}=name_generator(filebase_out,i_slice,[],ext_out,'_1',1,i_slice,[],subdir_result);
     277            fileresult{1}=fullfile_uvmat(RootPath{1},subdir_result,RootFile{1},ext_out,NomTypeOut,i_slice,[],[],[]);
     278            %fileresult{i_slice}=name_generator(filebase_out,i_slice,[],ext_out,'_1',1,i_slice,[],subdir_result);
    285279            if exist(fileresult{i_slice},'file')
    286280                testexist=1;
     
    307301
    308302%% coordinate transform or other user defined transform
    309 transform_fct=[];%default
    310 if isfield(Series,'transform_fct')
    311     transform_fct=Param.transform_fct;
     303transform_fct='';%default
     304if isfield(Param,'FieldTransform')&&isfield(Param.FieldTransform,'transform_fct')
     305    transform_fct=Param.FieldTransform.transform_fct;
    312306end
    313307
    314308%% main loop
    315 siz=size(num_i1{1});
     309siz=size(i1_series{1});
    316310nbfield2=siz(1); %nb of consecutive fields at each level(burst
    317311nbfield=siz(1)*siz(2);
     
    328322    % averaging loop
    329323    for index=1:nbfield*nbfield2
    330         stopstate=get(hseries.RUN,'BusyAction');
    331         if isequal(stopstate,'queue') % enable STOP command
    332             update_waitbar(hseries.waitbar,WaitbarPos,index/(nbfield*nbfield2))
     324 %       stopstate=get(hseries.RUN,'BusyAction');
     325 %       if isequal(stopstate,'queue') % enable STOP command
     326         %   update_waitbar(hseries.waitbar,WaitbarPos,index/(nbfield*nbfield2))
    333327            ifile=indselect(index);
    334328            % reading input file(s)
    335329            for iview=1:nbview
    336                 [filename]=...
    337                     name_generator(filebase{iview},num_i1{iview}(ifile),num_j1{iview}(ifile),FileExt{iview},NomType{iview},1,num_i2{iview}(ifile),num_j2{iview}(ifile),SubDir{iview});
    338                 if ~isequal(FileType{iview},'netcdf')
     330%                 [filename]=...
     331%                     name_generator(filebase{iview},num_i1{iview}(ifile),num_j1{iview}(ifile),FileExt{iview},NomType{iview},1,num_i2{iview}(ifile),j2_series{iview}(ifile),SubDir{iview});
     332                    filename=filecell{iview,index};
     333                    if ~isequal(FileType{iview},'netcdf')
    339334                    Data{iview}.ListVarName={'A'};
    340335                    Data{iview}.AName='image';
    341336                    switch FileType{iview}
    342337                        case 'movie'
    343                             A=read(MovieObject{iview},num_i1{iview}(ifile));
     338                            A=read(MovieObject{iview},i1_series{iview}(ifile));
    344339                        case 'avi'
    345                             mov=aviread(filename,num_i1{iview}(ifile));
     340                            mov=aviread(filename,i1_series{iview}(ifile));
    346341                            A=frame2im(mov(1));
    347342                        case 'vol'
    348343                            A=imread(filename);
    349344                        case 'multimage'
    350                             A=imread(filename,num_i1{iview}(ifile));
     345                            A=imread(filename,i1_series{iview}(ifile));
    351346                        case 'image'
    352347                            A=imread(filename);
     
    381376            if ~isempty(transform_fct)
    382377                if ~isempty(NbSlice_calib)
    383                     Data{iview}.ZIndex=mod(num_i1{iview}(ifile)-1,NbSlice_calib{1})+1;%Zindex for phys transform
     378                    Data{iview}.ZIndex=mod(i1_series{iview}(ifile)-1,NbSlice_calib{1})+1;%Zindex for phys transform
    384379                end
    385380                if nbview==2
     
    435430                end
    436431            end
    437         end
     432%         end
    438433    end
    439434    %end averaging loop
     
    455450        end
    456451    else  % time from ImaDoc prevails
    457         DataMean.Time=time(1,num_i1{1}(1),num_j1{1}(1));
    458         DataMean.Time_end=time(end,num_i1{end}(end),num_j1{end}(end));
     452        DataMean.Time=time(1,i1_series{1}(1),j1_series{1}(1));
     453        DataMean.Time_end=time(end,i1_series{end}(end),j1_series{end}(end));
    459454    end
    460455   
     
    468463        display([fileresult{i_slice} ' written']);
    469464    else %case of netcdf input file , determine global attributes
     465        if isempty(strcmp('Conventions',DataMean.ListGlobalAttribute))
     466            DataMean.ListGlobalAttribute=['Conventions' DataMean.ListGlobalAttribute];
     467        end
     468        DataMean.Conventions='uvmat';
    470469        DataMean.ListGlobalAttribute=[DataMean.ListGlobalAttribute {Param.Action}];
    471470        ActionKey='Action';
     
    473472            ActionKey=[ActionKey '_1'];
    474473        end
    475         eval(['DataMean.' ActionKey '=Param.Action;'])
     474        DataMean.(ActionKey)=Param.Action;
    476475        DataMean.ListGlobalAttribute=[DataMean.ListGlobalAttribute {ActionKey}];
    477476        if isfield(DataMean,'Time')
  • trunk/src/series/check_data_files.m

    r361 r374  
    11%'check_files': check the existence and status of the files selected by series.fig
    22%------------------------------------------------------------------------
    3 % function GUI_input=check_files(num_i1,num_i2,num_j1,num_j2,Series)
     3% function GUI_input=check_data_files(num_i1,num_i2,num_j1,num_j2,Series)
    44%
    55%OUTPUT
     
    1313%Series: Matlab structure containing information set by the series interface
    1414%
    15 function GUI_input=check_files(num_i1_cell,num_i2_cell,num_j1_cell,num_j2_cell,Series) %(filecell,filecell_1,num_i,num_j,vel_type,field,param);
     15function GUI_input=check_data_files(Param) %(filecell,filecell_1,num_i,num_j,vel_type,field,param);
    1616%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1717 %detect the chosen series of files and check their date of modification:
     
    4242end
    4343
    44 %standard parameters for waitbar and STOP action (do not modify)
    45 hseries=guidata(Series.hseries);%handles of the GUI series
    46 WaitbarPos=get(hseries.waitbar_frame,'Position');
     44%% input parameters
     45% read the xml file for batch case
     46if ischar(Param) && ~isempty(find(regexp('Param','.xml$')))
     47    Param=xml2struct(Param);
     48else %  RUN case: parameters introduced as the input structure Param
     49    hseries=guidata(Param.hseries);%handles of the GUI series
     50    WaitbarPos=get(hseries.waitbar_frame,'Position');
     51end
     52[filecell,i1_series,i2_series,j1_series,j2_series]=get_file_series(Param);
     53
    4754
    4855%%%%%%%%%%%%%%%%%%%%%%%%
    4956
    5057% number of slices
    51 % NbSlice=str2num(get(hseries.NbSlice,'String'));
    52 % if isempty(NbSlice)
    53 %     NbSlice=1;
    54 NbSlice=Series.IndexRange.NbSlice
    55 NbSlice_name=num2str(Series.IndexRange.NbSlice);
    56 if isequal(NbSlice,[]),NbSlice=1; end; %default
     58NbSlice=Param.NbSlice;
     59if isempty(NbSlice),NbSlice=1; end; %default
    5760
     61%% root input file and type
     62    RootPath=Param.InputTable(:,1);
     63    RootFile=Param.InputTable(:,3);
     64    SubDir=Param.InputTable(:,2);
     65    NomType=Param.InputTable(:,4);
     66    FileExt=Param.InputTable(:,5);
    5867% number of views
    59 count=0;
    60 testcell=iscell(Series.RootFile);
    61 if ~testcell
    62     Series.RootPath={Series.RootPath};
    63     Series.RootFile={Series.RootFile};
    64     Series.SubDir={Series.SubDir};
    65     Series.FileExt={Series.FileExt};
    66     Series.NomType={Series.NomType};
    67 end   
    68 nbview=length(Series.RootFile);
     68count=0; 
     69nbview=length(RootFile);
     70
    6971for iview=1:nbview
    7072    filebase=fullfile(Series.RootPath{iview},Series.RootFile{iview});%root file name
  • trunk/src/series/merge_proj.m

    r335 r374  
     1
     2
    13
    24%'merge_proj': project and concatene fields, used with series.fig
    35%------------------------------------------------------------------------
    4 % function GUI_input=merge_proj(num_i1,num_i2,num_j1,num_j2,Series)
     6% function GUI_input=merge_proj(Param)
    57%
    68%OUTPUT
     
    810%
    911%INPUT:
    10 %num_i1: series of first indices i (given from the series interface as first_i:incr_i:last_i, mode and list_pair_civ)
    11 %num_i2: series of second indices i (given from the series interface as first_i:incr_i:last_i, mode and list_pair_civ)
    12 %num_j1: series of first indices j (given from the series interface as first_j:incr_j:last_j, mode and list_pair_civ )
    13 %num_j2: series of second indices j (given from the series interface as first_j:incr_j:last_j, mode and list_pair_civ)
    14 %Series: Matlab structure containing information set by the series interface
     12% Param: structure containing all the parameters read on the GUI series
     13%  or name of the xml file containing these parameters (BATCH case)
    1514%
    16 function GUI_input=merge_proj(num_i1,num_i2,num_j1,num_j2,Series)
     15function GUI_input=merge_proj(Param)
    1716
    1817%requests for the visibility of input windows in the GUI series  (activated directly by the selection in the menu ACTION)
    19 if ~exist('num_i1','var')
     18if ~exist('Param','var')
    2019    GUI_input={'RootPath';'two';...%nbre of possible input series (options 'on'/'two'/'many', default:'one')
    2120        'SubDir';'on';... % subdirectory of derived files (PIV fields), ('on' by default)
     
    3433end
    3534
    36 %-------------------------------------------------
    37 hseries=guidata(Series.hseries);%handles of the GUI series
    38 WaitbarPos=get(hseries.waitbar_frame,'Position'); %positiopn of waitbar frame
    39 %-------------------------------------------------
    40 
     35%% input parameters:
     36% read the xml file for batch case
     37if ischar(Param) && ~isempty(find(regexp('Param','.xml$')))
     38    Param=xml2struct(Param);
     39else % RUN case : parameters introduced as the input structure Param
     40    hseries=guidata(Param.hseries);%handles of the GUI series
     41    WaitbarPos=get(hseries.waitbar_frame,'Position');% info for the waitbar
     42end
     43[filecell,i1_series,i2_series,j1_series,j2_series]=get_file_series(Param);
     44
     45%% coordinate transform or other user defined transform (TODO: case BATCH ?)
     46transform_fct='';%default
     47if isfield(Param,'transform_fct') % transform function handle
     48    transform_fct=Param.transform_fct;
     49end
    4150
    4251%% projection object
     
    5968end
    6069
    61 %% numbers of view fields (nbre of inputs in RootPath)
    62 testcell=iscell(Series.RootFile);
    63 if ~testcell
    64     Series.RootPath={Series.RootPath};
    65     Series.RootFile={Series.RootFile};
    66     Series.SubDir={Series.SubDir};
    67     Series.FileExt={Series.FileExt};
    68     Series.NomType={Series.NomType};
    69     num_i1={num_i1};
    70     num_i2={num_i2};
    71     num_j1={num_j1};
    72     num_j2={num_j2};
    73 end
    74 nbview=length(Series.RootFile);%number of views (file series to merge)
    75 nbfield=size(num_i1{1},1)*size(num_i1{1},2);%number of fields in the time series
     70%% features of the input fields
     71RootPath=Param.InputTable(:,1);
     72RootFile=Param.InputTable(:,3);
     73SubDir=Param.InputTable(:,2);
     74NomType=Param.InputTable(:,4);
     75FileExt=Param.InputTable(:,5);
     76
     77nbview=length(RootFile);%number of views (file series to merge)
     78nbfield=size(i1_series{1},1)*size(i1_series{1},2);%number of fields in the time series
    7679hhh=which('mmreader');
    7780for iview=1:nbview
    7881    test_movie(iview)=0;
    7982    if ~isequal(hhh,'')&& mmreader.isPlatformSupported()
    80         if isequal(lower(Series.FileExt{iview}),'.avi')
    81             MovieObject{iview}=mmreader(fullfile(Series.RootPath{iview},[Series.RootFile{iview} Series.FileExt{iview}]));
     83        if isequal(lower(FileExt{iview}),'.avi')
     84            MovieObject{iview}=mmreader(fullfile(RootPath{iview},[RootFile{iview} FileExt{iview}]));
    8285            test_movie(iview)=1;
    8386        end
    84     end 
     87    end
    8588end
    8689
     
    9194for iview=1:nbview%Loop on views
    9295    XmlData{iview}=[];%default
    93     filebase{iview}=fullfile(Series.RootPath{iview},Series.RootFile{iview});
     96    filebase{iview}=fullfile(RootPath{iview},RootFile{iview});
    9497    if exist([filebase{iview} '.xml'],'file')
    9598        [XmlData{iview},error]=imadoc2struct([filebase{iview} '.xml']);
     
    154157    end   
    155158end
    156 if size(time,2) < num_i2{1}(end) || size(time,3) < num_j2{1}(end)% ime array absent or too short in ImaDoc xml file'
    157     time=[];
    158 end
    159 
    160 %% coordinate transform or other user defined transform
    161 transform_fct=[];%default
    162 if isfield(Series,'transform_fct')
    163     transform_fct=Series.transform_fct;
    164 end
     159% if size(time,2) < i2_series{1}(end) || size(time,3) < j2_series{1}(end)% ime array absent or too short in ImaDoc xml file'
     160%     time=[];
     161% end
    165162
    166163%% Field and velocity type (the same for all views)
    167164FieldName='';
    168 if strcmp(get(hseries.FieldMenu,'Visible'),'on')
    169 Field_str=get(hseries.FieldMenu,'String');
    170 val=get(hseries.FieldMenu,'Value');
    171 FieldName=Field_str(val);%the same set of fields for all views
    172 VelType_str=get(hseries.VelTypeMenu,'String');
    173 VelType_val=get(hseries.VelTypeMenu,'Value');
    174 VelType=VelType_str{VelType_val}; %the same for all views
    175 if strcmp(FieldName,'')
    176     msgbox_uvmat('ERROR','no input field defined in FieldMenu')
    177 elseif strcmp(FieldName,'get_field...')
    178     hget_field=findobj(allchild(0),'Name','get_field');%find the get_field... GUI
    179     SubField=get_field('read_get_field',hObject,eventdata,hget_field); %read the names of the variables to plot in the get_field GUI
    180 end
    181 end
     165if isfield(Param,'InputFields')&&isfield(Param.InputFields,'FieldMenu') 
     166    FieldName=Param.InputFields.FieldMenu;%the same set of fields for all views
     167    VelType=Param.InputFields.VelTypeMenu;
     168end
     169% if strcmp(get(hseries.FieldMenu,'Visible'),'on')
     170%     Field_str=get(hseries.FieldMenu,'String');
     171%     val=get(hseries.FieldMenu,'Value');
     172%     FieldName=Field_str(val);%the same set of fields for all views
     173%     VelType_str=get(hseries.VelTypeMenu,'String');
     174%     VelType_val=get(hseries.VelTypeMenu,'Value');
     175%     VelType=VelType_str{VelType_val}; %the same for all views
     176    if strcmp(FieldName,'')
     177        msgbox_uvmat('ERROR','no input field defined in FieldMenu')
     178    elseif strcmp(FieldName,'get_field...')
     179        hget_field=findobj(allchild(0),'Name','get_field');%find the get_field... GUI
     180        SubField=get_field('read_get_field',hObject,eventdata,hget_field); %read the names of the variables to plot in the get_field GUI
     181    end
     182% end
    182183%detect whether all the files are 'images' or 'netcdf'
    183184testima=0;
     
    185186testcivx=0;
    186187testnc=0;
    187 FileExt=get(hseries.FileExt,'String');
    188188for iview=1:nbview
    189189     ext=FileExt{iview};
     
    210210
    211211%% name of output files and directory:
    212 ProjectDir=fileparts(fileparts(Series.RootPath{1}));% preoject directory (GERK)
     212ProjectDir=fileparts(fileparts(RootPath{1}));% preoject directory (GERK)
    213213prompt={['result directory (in' ProjectDir ')']};
    214 RootPath=get(hseries.RootPath,'String');
    215 SubDir=get(hseries.SubDir,'String');
     214% RootPath=get(hseries.RootPath,'String');
     215% SubDir=get(hseries.SubDir,'String');
    216216if isequal(length(RootPath),1)
    217217    fulldir=RootPath{1};
     
    225225    fulldir=answer{1};
    226226    subdir=[];
    227     dirlist=sort(Series.RootFile);
     227    dirlist=sort(RootFile);
    228228    for iview=1:nbview
    229229        if ~isempty(subdir)
     
    256256    end
    257257end
    258 filebasesub=fullfile(res_subdir,Series.RootFile{1});
    259 filebase_merge=fullfile(res_subdir,'merged');%root name for the merged files
     258filebasesub=fullfile(res_subdir,RootFile{1});
     259%filebase_merge=fullfile(res_subdir,'merged');%root name for the merged files
    260260
    261261%% MAIN LOOP
     
    269269        for iview=1:nbview
    270270         %name of the current file
    271             filename=name_generator(filebase{iview},num_i1{iview}(ifile),num_j1{iview}(ifile),Series.FileExt{iview},Series.NomType{iview},1,num_i2{iview}(ifile),num_j2{iview}(ifile),SubDir{iview});
     271         filename=filecell{iview,ifile};
     272          %  filename=name_generator(filebase{iview},i1_series{iview}(ifile),j1_series{iview}(ifile),FileExt{iview},NomType{iview},1,i2_series{iview}(ifile),j2_series{iview}(ifile),SubDir{iview});
    272273            if ~exist(filename,'file')
    273274                msgbox_uvmat('ERROR',['missing input file' filename])
    274275                break
    275276            end
     277            timeread(iview)=0;
    276278         %reading the current file
    277279            if testima
    278280                if test_movie(iview)
    279                     Field{iview}.A=read(MovieObject{iview},num_i1{iview}(ifile));
     281                    Field{iview}.A=read(MovieObject{iview},i1_series{iview}(ifile));
    280282                else
    281283                    Field{iview}.A=imread(filename);
     
    288290                Field{iview}.CoordUnit='pixel';
    289291                Field{iview}.AName='image';
    290                 timeread(iview)=0;
    291292            else
    292293                if testcivx
     
    306307            end
    307308            if ~isempty(NbSlice_calib)
    308                 Field{iview}.ZIndex=mod(num_i1{iview}(ifile)-1,NbSlice_calib{1})+1;
     309                Field{iview}.ZIndex=mod(i1_series{iview}(ifile)-1,NbSlice_calib{1})+1;
    309310            end
    310311         %transform the input field (e.g; phys) if requested
     
    332333         ResultExt='.png';
    333334     else
    334          ResultExt=Series.FileExt{iview};
     335         ResultExt=FileExt{iview};
    335336     end
    336      mergename=name_generator(filebase_merge,num_i1{iview}(ifile),num_j1{iview}(ifile),ResultExt,Series.NomType{iview},1,num_i2{iview}(ifile),num_j2{iview}(ifile));
     337     i1=i1_series{iview}(ifile);
     338     if ~isempty(i2_series{iview})
     339         i2=i2_series{iview}(ifile);
     340     else
     341         i2=i1;
     342     end
     343     j1=1;
     344     j2=1;
     345     if ~isempty(j1_series{iview})
     346         j1=j1_series{iview}(ifile);
     347          if ~isempty(j2_series{iview})
     348              j2=j2_series{iview}(ifile);
     349          else
     350              j2=j1;
     351          end
     352     end
     353     mergename=fullfile_uvmat(res_subdir,'','merged',ResultExt,NomType{iview},i1,i2,j1,j2);
     354    % mergename=name_generator(filebase_merge,i1,j1_series{iview}(ifile),ResultExt,NomType{iview},1,i2_series{iview}(ifile),j2_series{iview}(ifile));
    337355       
    338356     % time of the merged field:
     
    341359            time_i=sum(timeread)/nbtime;
    342360        else
    343             time_i=(time(iview,num_i1{iview}(ifile),num_j1{iview}(ifile))+time(iview,num_i2{iview}(ifile),num_j2{iview}(ifile)))/2;
     361            time_i=i1;
     362            %time_i=(time(iview,i1,j1)+time(iview,i2,j2))/2; TODO: upgrade
    344363        end
    345364       
  • trunk/src/series/sub_background.m

    r240 r374  
    11%'sub_background': substract background to an image series, used with series.fig
    22%------------------------------------------------------------------------
    3 % function GUI_input=aver_stat(num_i1,num_i2,num_j1,num_j2,Series)
     3% function GUI_input=sub_background(Param)
    44%
    55%OUTPUT
     
    3232    % In the mode 'volume', nbfield2=1 (1 image at each level)
    3333%
    34 function GUI_input=sub_background (num_i1,num_i2,num_j1,num_j2,Series)
     34function GUI_input=sub_background (Param)
    3535
    3636%------------------------------------------------------------------------
    3737%requests for the visibility of input windows in the GUI series  (activated directly by the selection in the menu ACTION)
    38 if ~exist('num_i1','var')
     38if ~exist('Param','var')
    3939    GUI_input={'RootPath';'on';...
    4040        'SubDir';'off';... % subdirectory of derived files (PIV fields), ('on' by default)
     
    5757end
    5858
    59 %----------------------------------------------------------------
    60 %% initiate the waitbar
    61 hseries=guidata(Series.hseries);%handles of the GUI series
    62 WaitbarPos=get(hseries.waitbar_frame,'Position');
    63 %-----------------------------------------------------------------
    64 if iscell(Series.RootPath)
     59%% input parameters
     60% read the xml file for batch case
     61if ischar(Param) && ~isempty(find(regexp('Param','.xml$')))
     62    Param=xml2struct(Param);
     63else %  RUN case: parameters introduced as the input structure Param
     64    hseries=guidata(Param.hseries);%handles of the GUI series
     65    WaitbarPos=get(hseries.waitbar_frame,'Position');
     66end
     67[filecell,i1_series,i2_series,j1_series,j2_series]=get_file_series(Param);
     68if size(filecell,1)>1
    6569    msgbox_uvmat('ERROR','This function use only one input image series')
    6670    return
    6771end
    68 
     72%%% TODO: update with the new conventions%%%%%%%%%%%%%%%%%
    6973%% determine input image type
    7074FileType=[];%default
  • trunk/src/series/time_series.m

    r340 r374  
    11%'time_series': extract a time series, used with series.fig
    22%------------------------------------------------------------------------
    3 % function GUI_input=time_series(num_i1,num_i2,num_j1,num_j2,Series)
     3% function GUI_input=time_series(Param)
    44%
    55%OUTPUT
     
    88%INPUT:
    99%num_i1: series of first indices i (given from the series interface as first_i:incr_i:last_i, mode and list_pair_civ)
    10 %num_i2: series of second indices i (given from the series interface as first_i:incr_i:last_i, mode and list_pair_civ)
     10%i2_series: series of second indices i (given from the series interface as first_i:incr_i:last_i, mode and list_pair_civ)
    1111%num_j1: series of first indices j (given from the series interface as first_j:incr_j:last_j, mode and list_pair_civ )
    1212%num_j2: series of second indices j (given from the series interface as first_j:incr_j:last_j, mode and list_pair_civ)
    1313%Series: Matlab structure containing information set by the series interface
    1414%
    15 function GUI_input=time_series(num_i1,num_i2,num_j1,num_j2,Series)
     15function GUI_input=time_series(Param)
    1616
    1717%% requests for the visibility of input windows in the GUI series  (activated directly by the selection in the menu ACTION)
    18 if ~exist('num_i1','var')
     18if ~exist('Param','var')
    1919    GUI_input={'RootPath';'two';...%nbre of possible input series (options 'on'/'two'/'many', default:'one')
    2020        'SubDir';'on';... % subdirectory of derived files (PIV fields), ('on' by default)
     
    3333end
    3434
    35 %------------------------------------------------------
    36 hseries=guidata(Series.hseries);%handles in the GUI series
    37 WaitbarPos=get(hseries.waitbar_frame,'Position'); %position of the waitbar frame
     35%% input parameters
     36% read the xml file for batch case
     37if ischar(Param) && ~isempty(find(regexp('Param','.xml$')))
     38    Param=xml2struct(Param);
     39else %  RUN case: parameters introduced as the input structure Param
     40    hseries=guidata(Param.hseries);%handles of the GUI series
     41    WaitbarPos=get(hseries.waitbar_frame,'Position');
     42end
     43[filecell,i1_series,i2_series,j1_series,j2_series]=get_file_series(Param);
     44
     45
     46%% coordinate transform or other user defined transform (TODO: case BATCH ?)
     47transform_fct='';%default
     48if isfield(Param,'transform_fct') % transform function handle
     49    transform_fct=Param.transform_fct;
     50end
    3851
    3952%% projection object
     
    5164end
    5265
    53 %% root names: transform input to cell in case of a single input series
    54 if ischar(Series.RootPath)
    55     Series.RootPath={Series.RootPath};
    56     Series.RootFile={Series.RootFile};
    57     Series.SubDir={Series.SubDir};
    58     Series.FileExt={Series.FileExt};
    59     Series.NomType={Series.NomType};
    60     num_i1={num_i1};
    61     num_i2={num_i2};
    62     num_j1={num_j1};
    63     num_j2={num_j2};
    64 end
    65 ext=Series.FileExt{1};
     66%% features of the input fields
     67    RootPath=Param.InputTable(:,1);
     68    RootFile=Param.InputTable(:,3);
     69    SubDir=Param.InputTable(:,2);
     70    NomType=Param.InputTable(:,4);
     71    FileExt=Param.InputTable(:,5);
     72ext=FileExt{1};
    6673form=imformats(ext(2:end));%test valid Matlab image formats
    67 nbfield=size(num_i1{1},1)*size(num_i1{1},2); %number of fields in the time series
     74nbfield=size(i1_series{1},1)*size(i1_series{1},2); %number of fields in the time series
    6875
    6976%% determine image type
    7077hhh=which('mmreader');
    7178testnetcdf=0;
    72 nbview=length(Series.RootPath);%Number of input series: this function  accepts only one or two input file series (sub_field is used in the latter case)
     79nbview=length(RootPath);%Number of input series: this function  accepts only one or two input file series (sub_field is used in the latter case)
    7380for iview=1:nbview
    74     if isequal(Series.FileExt{iview},'.nc')||isequal(Series.FileExt{iview},'.cdf')
     81    if isequal(FileExt{iview},'.nc')||isequal(FileExt{iview},'.cdf')
    7582        FileType{iview}='netcdf';
    7683        testnetcdf=1;
    77     elseif isequal(lower(Series.FileExt{iview}),'.avi')
     84    elseif isequal(lower(FileExt{iview}),'.avi')
    7885        if ~isequal(hhh,'')%&& mmreader.isPlatformSupported()
    79             MovieObject{iview}=mmreader(fullfile(Series.RootPath{iview},[Series.RootFile{iview} Series.FileExt{iview}]));
     86            MovieObject{iview}=mmreader(fullfile(RootPath{iview},[RootFile{iview} FileExt{iview}]));
    8087            FileType{iview}='movie';
    8188        else
    8289            FileType{iview}='avi';
    8390        end
    84     elseif isequal(lower(Series.FileExt{iview}),'.vol')
     91    elseif isequal(lower(FileExt{iview}),'.vol')
    8592        FileType{iview}='vol';
    8693    else
    87        form=imformats(Series.FileExt{iview}(2:end));
     94       form=imformats(FileExt{iview}(2:end));
    8895       if ~isempty(form)% if the extension corresponds to an image format recognized by Matlab
    89            if isequal(Series.NomType{iview},'*');
     96           if isequal(NomType{iview},'*');
    9097               FileType{iview}='multimage';
    9198           else
     
    95102    end
    96103end
    97 filebase{1}=fullfile(Series.RootPath{1},Series.RootFile{1});
     104filebase{1}=fullfile(RootPath{1},RootFile{1});
    98105
    99106%% number of slices
    100 NbSlice=Series.NbSlice;
     107NbSlice=Param.NbSlice;
    101108
    102109%% Field and velocity type (the same for the two views)
    103 if isfield(Series,'Field')
    104     FieldName=Series.Field;%the same set of fields for all views
    105 else
    106     FieldName={''};
    107 end
    108 if isequal(FieldName,{''}) && testnetcdf
     110FieldName={''};
     111
     112if isfield(Param,'InputFields')&&isfield(Param.InputFields,'FieldMenu') 
     113    FieldName=Param.InputFields.FieldMenu;%the same set of fields for all views
     114    VelType{1}=Param.InputFields.VelTypeMenu;
     115end
     116if isempty(FieldName) && testnetcdf
    109117    msgbox_uvmat('ERROR','A field must be defined as input')
    110118    return
    111119end
    112 if isequal(FieldName,{'get_field...'})
     120if isequal(FieldName,'get_field...')
    113121    hget_field=findobj(allchild(0),'name','get_field');%find the get_field... GUI
    114122    if numel(hget_field)>1
    115123        delete(hget_field(2:end)) % delete multiple occurerence of the GUI get_fioeld
    116124    elseif isempty(hget_field)
    117        filename=name_generator(filebase{1},num_i1{1}(1),num_j1{1}(1),Series.FileExt{1},Series.NomType{1},1,num_i2{1}(1),num_j2{1}(1),Series.SubDir{1});
     125        filename=filecell{1,1};
     126      % filename=name_generator(filebase{1},i1_series{1}(1),j1_series{1}(1),FileExt{1},NomType{1},1,i2_series{1}(1),num_j2{1}(1),SubDir{1});
    118127       idetect(iview)=exist(filename,'file');
    119128       hget_field=get_field(filename);
     
    123132    if isempty(SubField)
    124133        delete(hget_field)
    125        filename=name_generator(filebase{1},num_i1{1}(1),num_j1{1}(1),Series.FileExt{1},Series.NomType{1},1,num_i2{1}(1),num_j2{1}(1),Series.SubDir{1});
     134        filename=filecell{1,1};
     135       %filename=name_generator(filebase{1},i1_series{1}(1),j1_series{1}(1),FileExt{1},NomType{1},1,i2_series{1}(1),j2_series{1}(1),SubDir{1});
    126136        hget_field=get_field(filename);
    127137        SubField=read_get_field(hget_field); %read the names of the variables to plot in the get_field GUI
     
    135145    testcivx=isequal(FileType{1},'netcdf');
    136146end
    137 VelType_str=get(hseries.VelTypeMenu,'String');
    138 VelType_val=get(hseries.VelTypeMenu,'Value');
    139 VelType{1}=VelType_str{VelType_val};
    140 if nbview==2
    141     VelType_str=get(hseries.VelTypeMenu_1,'String');
    142     VelType_val=get(hseries.VelTypeMenu_1,'Value');
    143     VelType{2}=VelType_str{VelType_val};
    144 end
     147% VelType_str=get(hseries.VelTypeMenu,'String');
     148% VelType_val=get(hseries.VelTypeMenu,'Value');
     149% VelType{1}=VelType_str{VelType_val};
     150% if nbview==2
     151%     VelType_str=get(hseries.VelTypeMenu_1,'String');
     152%     VelType_val=get(hseries.VelTypeMenu_1,'Value');
     153%     VelType{2}=VelType_str{VelType_val};
     154% end
    145155
    146156%% Calibration data and timing: read the ImaDoc files
     
    152162for iview=1:nbview%Loop on views
    153163    XmlData{iview}=[];%default
    154     filebase{iview}=fullfile(Series.RootPath{iview},Series.RootFile{iview});
     164    filebase{iview}=fullfile(RootPath{iview},RootFile{iview});
    155165    if exist([filebase{iview} '.xml'],'file')
    156166        [XmlData{iview},error]=imadoc2struct([filebase{iview} '.xml']);
     
    218228%%  Root name of output files (TO GENERALISE FOR TWO INPUT SERIES)
    219229subdir_result='time_series';
    220 pathdir=fullfile(Series.RootPath{1},subdir_result);
     230pathdir=fullfile(RootPath{1},subdir_result);
    221231while exist(pathdir,'dir')
    222232    subdir_result=[subdir_result '.0'];
    223     pathdir=fullfile(Series.RootPath{1},subdir_result);
     233    pathdir=fullfile(RootPath{1},subdir_result);
    224234end
    225235[m1,m2,m3]=mkdir(pathdir);
     
    233243end
    234244filebase_out=filebase{1};
    235 NomTypeOut=nomtype2pair(Series.NomType{1},num_i2{end}(end)-num_i1{1}(1),num_j2{end}(end)-num_j1{1}(1));
    236 
    237 %% coordinate transform or other user defined transform
    238 transform_fct=[];%default
    239 if isfield(Series,'transform_fct')
    240     transform_fct=Series.transform_fct;
    241 end
     245 i21=i1_series{end}(end);
     246 if ~isempty(i2_series{end})
     247     i21=i2_series{end}(end)-i1_series{1}(1);
     248 end
     249 j21=1;
     250 if ~isempty(j1_series{1})
     251     j21=j1_series{end}(end);
     252      if ~isempty(j2_series{end})
     253          j21=j2_series{end}(end)-j21;
     254      end
     255 end
     256NomTypeOut=nomtype2pair(NomType{1},i21,j21);
     257
    242258
    243259%% velocity type
     
    264280            % loop on views (in case of multiple input series)
    265281            for iview=1:nbview
    266                 filename=name_generator(filebase{iview},...
    267                     num_i1{iview}(ifile),num_j1{iview}(ifile),Series.FileExt{iview},Series.NomType{iview},1,num_i2{iview}(ifile),num_j2{iview}(ifile),Series.SubDir{iview});
     282                filename=filecell{iview,ifile};
     283               % filename=name_generator(filebase{iview},...
     284                %    i1_series{iview}(ifile),j1_series{iview}(ifile),FileExt{iview},NomType{iview},1,i2_series{iview}(ifile),j2_series{iview}(ifile),SubDir{iview});
    268285                if exist(filename,'file')
    269286                    try
     
    274291                            switch FileType{iview}
    275292                                case 'movie'
    276                                     A=read(MovieObject{iview},num_i1{iview}(ifile));
     293                                    A=read(MovieObject{iview},i1_series{iview}(ifile));
    277294                                case 'avi'
    278                                     mov=aviread(filename,num_i1{iview}(ifile));
     295                                    mov=aviread(filename,i1_series{iview}(ifile));
    279296                                    A=frame2im(mov(1));
    280297                                case 'vol'
    281298                                    A=imread(filename);
    282299                                case 'multimage'
    283                                     A=imread(filename,num_i1{iview}(ifile));
     300                                    A=imread(filename,i1_series{iview}(ifile));
    284301                                case 'image'
    285302                                    A=imread(filename);
     
    308325                        end
    309326                        if ~isempty(NbSlice_calib)  % z index
    310                             Data{iview}.ZIndex=mod(num_i1{iview}(ifile)-1,NbSlice_calib{1})+1;
     327                            Data{iview}.ZIndex=mod(i1_series{iview}(ifile)-1,NbSlice_calib{1})+1;
    311328                        end
    312329                    catch ME
     
    397414                            if isequal(ProjObject.ProjMode,'inside')% take the average in the domain for 'inside' mode
    398415                                if isempty(VarVal)
    399                                     msgbox_uvmat('ERROR',['empty result at frame index ' num2str(num_i1{iview}(ifile))])
     416                                    msgbox_uvmat('ERROR',['empty result at frame index ' num2str(i1_series{iview}(ifile))])
    400417                                    return
    401418                                end
     
    423440                        RecordData.Time(filecounter,1)=ifile;%default
    424441                    end
    425                 else % time from ImaDoc prevails
    426                     RecordData.Time(filecounter,1)=(time(1,num_i1{1}(ifile),num_j1{1}(ifile))+time(end,num_i2{end}(ifile),num_j2{end}(ifile)))/2;
     442                else % time from ImaDoc prevails  TODO: correct
     443                  %  RecordData.Time(filecounter,1)=time{1}(i1_series{1})(ifile),j1_series{1}(ifile))+time(end,i2_series{end}(ifile),j2_series{end}(ifile)))/2;
     444                  RecordData.Time(filecounter,1)=i1_series{1}(ifile);% TODO : generalise
    427445                end
    428446               
     
    472490    end
    473491    RecordData.VarDimName=[{'Time'} RecordData.VarDimName];
    474     RecordData.Action=Series.Action;%name of the processing programme
     492    RecordData.Action=Param.Action;%name of the processing programme
    475493    test_time=diff(RecordData.Time)>0;% test that the readed time is increasing (not constant)
    476494    if ~test_time
     
    484502   
    485503    %name of result file
    486     [filemean]=...
    487         name_generator(filebase_out,num_i1{1}(i_slice),num_j1{1}(i_slice),'.nc','_i1-i2_j1-j2',1,num_i2{end}(ifile),num_j2{end}(ifile),subdir_result);
     504   % [filemean]=...
     505    %    name_generator(filebase_out,i1_series{1}(i_slice),j1_series{1}(i_slice),'.nc','_i1-i2_j1-j2',1,i2_series{end}(ifile),j2_series{end}(ifile),subdir_result);
     506    filemean=fullfile_uvmat(RootPath{1},subdir_result,RootFile{1},'.nc','_1',i1_series{1}(i_slice));
    488507    errormsg=struct2nc(filemean,RecordData); %save result file
    489508    if isempty(errormsg)
Note: See TracChangeset for help on using the changeset viewer.