Index: /trunk/src/fill_GUI.m
===================================================================
--- /trunk/src/fill_GUI.m	(revision 1122)
+++ /trunk/src/fill_GUI.m	(revision 1123)
@@ -60,4 +60,7 @@
         hh=[];
         input_data=Param.(fields{ifield});
+        if isfield(Param,'Type') && isa(Param.Type,'matlab.graphics.primitive.Rectangle')
+            input_data='rectangle';
+        end
         check_done=0;
         if isfield(handles,fields{ifield})
Index: /trunk/src/find_field_bounds.m
===================================================================
--- /trunk/src/find_field_bounds.m	(revision 1122)
+++ /trunk/src/find_field_bounds.m	(revision 1123)
@@ -34,6 +34,10 @@
 %% analyse input field
 [CellInfo,NbDimArray,errormsg]=find_field_cells(Field);% analyse  the input field structure
+if isempty(CellInfo)
+    errormsg='bad input field'
+    return
+end
 if ~isempty(errormsg)
-    errormsg=['uvmat /refresh_field / find_field_cells / ' errormsg];% display error
+    errormsg=['uvmat /refresh_field / find_field_cells / ' errormsg]% display error
     return
 end
Index: /trunk/src/script_delete_rdvision.m
===================================================================
--- /trunk/src/script_delete_rdvision.m	(revision 1123)
+++ /trunk/src/script_delete_rdvision.m	(revision 1123)
@@ -0,0 +1,137 @@
+
+%%% extract a series of image folders from RDvision
+% to run on the cluster, edit the file extract.sh in the folder TOP_view or SCANSIDE,
+% Then oarsub -l "walltime=20:00:00" /fsnet/project/coriolis/2018/18ADDUCE/TOP_View/extract.sh
+%%%%%%%%%%%%%%  CHOOSE THE ROOT FOLDER %%%%%%%%%%
+
+RootDir='DATA'
+%RootFolder=fullfile('/fsnet/project/coriolis/2018/18JEVERB',RootDir);
+RootFolder=fullfile('/fsnet/project/edt/2021/21CORIOFARM',RootDir)
+%ParamFile=fullfile(RootFolder,'extract_param.xml');
+%Param=xml2struct(ParamFile);
+
+ListStruct=dir(RootFolder); % get structure of the Root directory
+index_dir=find(strcmp('isdir',fieldnames(ListStruct)));%detect folder info in structure ListStruct
+ListCells=struct2cell(ListStruct);% transform dir struct to a cell arrray
+check_dir=cell2mat(ListCells(index_dir,:));% =1 for directories, =0 for files
+ListCells=ListCells(:,check_dir);
+ListCells(:,1:2)=[];
+ListNames=ListCells(1,:);
+List2extract={};
+List2delete={};
+List2check={};
+
+%% loop on experiments
+for ilist=1:numel(ListNames)%loop on experiments
+    ListNames{ilist}
+    SubFolder=fullfile(RootFolder,ListNames{ilist});
+    ListStructSub=dir(SubFolder); % get structure of the Root directory
+    index_dir=find(strcmp('isdir',fieldnames(ListStructSub)));%detect folder info in structure ListStruct
+    ListCellsSub=struct2cell(ListStructSub);% transform dir struct to a cell arrray
+    check_dir=cell2mat(ListCellsSub(index_dir,:));% =1 for directories, =0 for files
+    ListCellsSub=ListCellsSub(:,check_dir);
+    ListCellsSub(:,1:2)=[];
+    ListNamesSub=ListCellsSub(1,:);
+    ind_rdvision=[];
+    for isub=1:numel(ListNamesSub)% loop on data folders of the current experiment
+        ListStructSubSub=dir(fullfile(RootFolder,ListNames{ilist},ListNamesSub{isub})); % get structure of the Root directory
+        index_dir=find(strcmp('isdir',fieldnames(ListStructSubSub)));%detect folder info in structure ListStruct
+        ListCellsSubSub=struct2cell(ListStructSubSub);% transform dir struct to a cell arrray
+        check_dir=cell2mat(ListCellsSubSub(index_dir,:));% =1 for directories, =0 for files
+        ListCellsSubSub=ListCellsSubSub(:,check_dir);
+        ListCellsSubSub(:,1:2)=[];
+        ListNamesSubSub=ListCellsSubSub(1,:);
+        ind_rdvision=[];
+        for isubsub=1:numel(ListNamesSubSub)
+            if ~isempty(regexp(ListNamesSubSub{isubsub},'^2021-'))
+                ind_rdvision=[ind_rdvision isubsub];%detect rdvision folders
+            end
+        end
+
+        %% extract the rdvision image series if it was not done
+        if numel(ind_rdvision)==1%
+            DataFolder=fullfile(RootFolder,ListNames{ilist},ListNamesSub{isub},ListNamesSubSub{ind_rdvision});
+            if isempty(regexp(DataFolder,'.extract$'))% if the detected folder is not .extract
+                %     ExtractFolder=fullfile(Param.InputTable{1},[Param.InputTable{2} '.extract']);
+                %     mkdir(ExtractFolder)
+                % %     if ~isempty(XmlFile)
+                % %     copyfile(fullfile(RootFolder,XmlFile),fullfile(DataFolder,[Param.OutputRootFile '.xml']));
+                % %     end
+                %     seqname=fullfile(DataFolder,[Param.InputTable{3} Param.InputTable{5}]);
+                %     [A,FileInfo,timestamps,errormsg]=read_rdvision(seqname,[]);
+                %     Param.IndexRange.last_i=str2num(FileInfo.numberoffiles);
+                %     Param.OutputSubDir=Param.InputTable{2};
+                %     Param.ActionInput.LogPath= DataFolder;
+                %     extract_rdvision(Param)% apply the function used in series
+                %     [ListNames{ilist} ' extracted']
+                List2extract=[List2extract;DataFolder];
+            end
+        end
+
+        %% delete the rdvision source if the extraction has been done
+        Checkdelete=0;
+        ExtractFolder=fullfile(RootFolder,ListNames{ilist},ListNamesSub{isub});
+        status='';
+        if numel(ind_rdvision)==2
+            for irdvision=1:2
+                CheckExtract(irdvision)=isempty(regexp(fullfile(RootFolder,ListNames{ilist},ListNamesSub{isub},ListNamesSubSub{irdvision}), '.extract$'));
+            end
+            status='extract missing';
+            if numel(find(CheckExtract))==1
+                ExtractFolder=fullfile(RootFolder,ListNames{ilist},ListNamesSub{isub},ListNamesSubSub{find(CheckExtract)});
+                PngFolder=fullfile(RootFolder,ListNames{ilist},ListNamesSub{isub},'im');
+                status='image folder not created';
+                if exist(ExtractFolder,'dir') && exist(PngFolder,'dir')
+                    filename_seq=fullfile(ExtractFolder,'im.seq');
+                    s=ini2struct(filename_seq);
+                    FileInfo=s.sequenceSettings;
+                    if isfield(s.sequenceSettings,'numberoffiles')
+                        NumberOfFrames=str2double(s.sequenceSettings.numberoffiles);
+                    else
+                        status='bad seq file';
+                    end
+                    DirPng=dir(PngFolder);
+                    if numel(DirPng)==NumberOfFrames+2
+                        Checkdelete=1;
+                    else
+                        status=['extraction not finished,' num2str(numel(DirPng)-2) ' images extracted'];
+                    end
+                end
+            end
+            %
+            %
+            %     Param.InputTable{1}=fullfile(RootFolder,ListDir{ilist});%folder exp
+            %     ddd=dir(Param.InputTable{1});
+            %     Param.InputTable{2}=ddd(3).name;
+            %     DataFolder=fullfile(Param.InputTable{1},Param.InputTable{2});
+            %     ExtractFolder=fullfile(Param.InputTable{1},[Param.InputTable{2} '.extract']);
+            %     mkdir(ExtractFolder)
+            %     if ~isempty(XmlFile)
+            %     copyfile(fullfile(RootFolder,XmlFile),fullfile(DataFolder,[Param.OutputRootFile '.xml']));
+            %     end
+            %     seqname=fullfile(DataFolder,[Param.InputTable{3} Param.InputTable{5}]);
+            %     [A,FileInfo,timestamps,errormsg]=read_rdvision(seqname,[]);
+            %     Param.IndexRange.last_i=str2num(FileInfo.numberoffiles);
+            %     Param.OutputSubDir=Param.InputTable{2};
+            %     Param.ActionInput.LogPath= DataFolder;
+            %     extract_rdvision(Param)% apply the function used in series
+        end
+        if Checkdelete
+            List2delete=[List2delete;ExtractFolder];
+            %rmdir(ExtractFolder,'s')
+        elseif ~isempty(status)
+            List2check=[List2check;[ExtractFolder ' ' status]];
+        end
+    end
+end
+List2extract
+List2check
+List2delete
+if ~isempty(List2delete)
+    Answer = questdlg('delete listed folders(Y/N)');
+    if strcmp(Answer,'Yes')
+        for ifolder=1:numel(List2delete)
+            rmdir(List2delete{ifolder},'s')
+        end
+    end
+end
Index: /trunk/src/script_readlvm.m
===================================================================
--- /trunk/src/script_readlvm.m	(revision 1122)
+++ /trunk/src/script_readlvm.m	(revision 1123)
@@ -61,5 +61,5 @@
 
 %% check camera signal
-ind_start=find(Data.Trig_Cam>3.5,1,'first')
+ind_start=find(Data.Trig_cam>3.5,1,'first')
 disp(['camera starts at time ' num2str(Data.Time(ind_start))])
 %% transform and filter conductivity probe signals into [temperature-corrected] density
Index: /trunk/src/series.m
===================================================================
--- /trunk/src/series.m	(revision 1122)
+++ /trunk/src/series.m	(revision 1123)
@@ -2720,4 +2720,7 @@
 
 %% NbSlice visibility
+if isfield(ParamOut,'OutputFileMode')&& strcmp(ParamOut.OutputFileMode,'NbSlice')
+    ParamOut.NbSlice='on';
+end
 if isfield(ParamOut,'NbSlice') && (strcmp(ParamOut.NbSlice,'on')||isnumeric(ParamOut.NbSlice))
     set(handles.num_NbSlice,'Visible','on')
Index: /trunk/src/series/civ_series.m
===================================================================
--- /trunk/src/series/civ_series.m	(revision 1122)
+++ /trunk/src/series/civ_series.m	(revision 1123)
@@ -89,40 +89,4 @@
         end
     end
-    % estimated CPUTime
-%     CPUtime_unit=0.01;%estimated time for a multiplication (in microsecond)
-%     if isfield(Param.SeriesData,'FileInfo')&&isfield(Param.SeriesData.FileInfo{1},'Height')&&isfield(Param.SeriesData.FileInfo{1},'Width')
-%         pixnbre=Param.SeriesData.FileInfo{1}.Height*Param.SeriesData.FileInfo{1}.Width; % total number of pxels for input images  
-%         CPUtime=0;
-%         if isfield(Data.ActionInput,'Civ1')
-%             %BoxSize=Data.ActionInput.Civ1.CorrBoxSize(1)*Data.ActionInput.Civ1.CorrBoxSize(2);
-%             tic
-%             testboxa=rand(Data.ActionInput.Civ1.CorrBoxSize(1),Data.ActionInput.Civ1.CorrBoxSize(2));
-%             testboxb=rand(Data.ActionInput.Civ1.SearchBoxSize(1),Data.ActionInput.Civ1.SearchBoxSize(2));
-%             anss=conv2(testboxa,testboxb);
-%             CPUtime_unit=toc;
-%             nb_box=pixnbre/(Data.ActionInput.Civ1.Dx*Data.ActionInput.Civ1.Dy);    
-%             %nbpos=Data.ActionInput.Civ1.SearchBoxSize-Data.ActionInput.Civ1.CorrBoxSize;
-%             CPUtime=2*CPUtime_unit*nb_box%*BoxSize*nbpos(1)*nbpos(2);% adjustement factor 2 used
-%         end
-%         if isfield(Data.ActionInput,'Patch1')
-%             CPUtime=2*CPUtime;
-%         end
-%         if isfield(Data.ActionInput,'Civ2')
-%             tic
-%             testboxa=rand(Data.ActionInput.Civ2.CorrBoxSize(1),Data.ActionInput.Civ2.CorrBoxSize(2));
-%             testboxb=rand(Data.ActionInput.Civ2.SearchBoxSize(1),Data.ActionInput.Civ2.SearchBoxSize(2));
-%             anss=conv2(testboxa,testboxb);
-%             CPUtime_unit=toc;
-%             nb_box=pixnbre/(Data.ActionInput.Civ2.Dx*Data.ActionInput.Civ2.Dy);
-%             %BoxSize=Data.ActionInput.Civ2.CorrBoxSize(1)*Data.ActionInput.Civ2.CorrBoxSize(2);
-%             %nbpos=Data.ActionInput.Civ2.SearchBoxSize-Data.ActionInput.Civ2.CorrBoxSize;
-%             CPUtime=CPUtime+2*CPUtime_unit*nb_box;%*BoxSize*nbpos(1)*nbpos(2);
-%         end
-%         if isfield(Data.ActionInput,'Patch2')
-%             CPUtime=(4/3)*CPUtime;
-%         end
-%         Data.CPUTime=ceil(CPUtime/6); % estimated CPU time per field pair in minute
-%         Data.CPUTime=Data.CPUTime/10; % displqy CPU time with 1 digit beyond dot
-%     end
     return
 end
Index: /trunk/src/transform_field/FFT2_detrend.m
===================================================================
--- /trunk/src/transform_field/FFT2_detrend.m	(revision 1122)
+++ /trunk/src/transform_field/FFT2_detrend.m	(revision 1123)
@@ -68,4 +68,5 @@
         VarName=DataIn.ListVarName{ivar};
         z=DataIn.(VarName);
+        z(isnan(z))=0;% set to 0 NaN values
         rhs(1) = sum(sum(x.*z)); rhs(2) = sum(sum(y.*z)); rhs(3) = sum(sum(z));
         lin_coeff = inv(coeff)*rhs';
@@ -75,6 +76,6 @@
         spec2 = spec2(Iy,Ix);
         spec2 = spec2(ss,:);
-        %DataOut.(VarName) = log(spec2);
-        DataOut.(VarName) = spec2;
+        DataOut.(VarName) = log10(spec2);
+        %DataOut.(VarName) = spec2;
         spec_sum=sum(sum(spec2));
         kx_mean=sum(sum(spec2.*kx))/spec_sum;
Index: /trunk/src/transform_field/signal_spectrum.m
===================================================================
--- /trunk/src/transform_field/signal_spectrum.m	(revision 1122)
+++ /trunk/src/transform_field/signal_spectrum.m	(revision 1123)
@@ -170,5 +170,5 @@
     if numel(ind_good)>WindowLength
         NbPos=NbPos+1;
-        if ~isempty(ind_bad)
+        if ~isempty(ind_bad)WindowLength
             sample=sample(ind_good); % keep only  non NaN data
             NbNan=NbNan+numel(ind_bad);
Index: /trunk/src/uvmat.m
===================================================================
--- /trunk/src/uvmat.m	(revision 1122)
+++ /trunk/src/uvmat.m	(revision 1123)
@@ -5000,5 +5000,5 @@
         menu={'civ1';'filter1';'civ2';'filter2';'civ3';'filter3'};
         imax=[0 1 1 2 3 3 4 5 5 6];
-        imax=imax(Civ+1);
+        imax=imax(min(Civ+1,10));
 %         if isequal(Civ,0)
 %             imax=0;
