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

fgunctions under series adapted to the renovated GUI series

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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       
Note: See TracChangeset for help on using the changeset viewer.