Index: /trunk/src/browse_data.m
===================================================================
--- /trunk/src/browse_data.m	(revision 1068)
+++ /trunk/src/browse_data.m	(revision 1069)
@@ -92,12 +92,23 @@
     InputDir=pwd;% current dir is the starting data series by default
 end
-
-[ExpWithPath,DataSeries]=fileparts(InputDir);
-[Experiment,Device,Ext]=fileparts(ExpWithPath);
-Device=[Device Ext];
-[SourceDir,Experiment,Ext]=fileparts(Experiment);
-Experiment=[Experiment Ext];
-% [tild,CampaignName]=fileparts(Campaign);
-% RootXml=fullfile(Campaign,[CampaignName '.xml']);
+if ischar(InputDir),InputDir={InputDir};end
+for ilist=1:numel(InputDir)
+    [ExpWithPath,DataSeries{ilist},Ext]=fileparts(InputDir{ilist});
+    DataSeries{ilist}=['+/' DataSeries{ilist} Ext];
+    [Experiment{ilist},Device{ilist},Ext]=fileparts(ExpWithPath);
+    Device{ilist}=['+/' Device{ilist} Ext];
+    [SourceDir{ilist},Experiment{ilist},Ext]=fileparts(Experiment{ilist});
+    Experiment{ilist}=['+/' Experiment{ilist} Ext];
+    if ~strcmp(SourceDir{ilist},SourceDir{1})||~strcmp(Experiment{ilist},Experiment{1})
+        msgbox_uvmat('ERROR','replicate cannot be used with multiple root folders')
+        return
+    end
+    if ~strcmp(DataSeries{ilist},DataSeries{1})
+        set(handles.DataSeries,'enable','off')
+    end
+    if ~strcmp(Device{ilist},Device{1})
+        set(handles.ListDevices,'enable','off')
+    end
+end
 s=[];
 % if exist(RootXml,'file')
@@ -111,11 +122,13 @@
 % end
 if isempty(s) %a source dir has been opened
-    set(handles.SourceDir,'String',SourceDir);
+    set(handles.SourceDir,'String',SourceDir{1});
     set(handles.MirrorDir,'Visible','off');% no mirror dir display
     set(handles.CreateMirror,'String','create_mirror')
 end
-set(handles.DataSeries,'String',{['+/' DataSeries]});
-set(handles.ListDevices,'String',{['+/' Device]});
-errormsg=scan_campaign(handles,SourceDir,['+/' Experiment]);
+set(handles.DataSeries,'String',DataSeries);
+set(handles.DataSeries,'Value',(1:numel(DataSeries)));
+set(handles.ListDevices,'String',Device);
+set(handles.ListDevices,'Value',(1:numel(Device)));
+errormsg=scan_campaign(handles,SourceDir{1},Experiment{1});
 if ~isempty(errormsg)
     msgbox_uvmat('ERROR',errormsg)
@@ -242,5 +255,6 @@
 Device=ListDevices(list_val);%choose selected devices
 end
-[ListFiles,indices]=list_dir_2(SourceDir,ListExperiments,Device);
+check_fix=strcmp(get(handles.ListDevices,'enable'),'off');
+[ListFiles,indices]=list_dir_2(SourceDir,ListExperiments,Device,check_fix);
 set(handles.ListDevices,'String',ListFiles)
 set(handles.ListDevices,'Value',indices)% initialise the menu selection with the folder defined by the input
@@ -271,5 +285,6 @@
     DataSeries=[];
 end
-[ListFiles,indices]=list_dir_3(SourceDir,ListExperiments,ListDevices,DataSeries);
+check_fix=strcmp(get(handles.DataSeries,'enable'),'off');
+[ListFiles,indices]=list_dir_3(SourceDir,ListExperiments,ListDevices,DataSeries,check_fix);
 set(handles.DataSeries,'String',ListFiles)
 set(handles.DataSeries,'Value',indices)% initialise the menu selection with the folder defined by the input
@@ -346,5 +361,5 @@
 % Provide a list to display
 %------------------------------------------------------------------------
-function [ListFilesTot,indices]=list_dir_2(SourceDir,ListDir,ListSub)
+function [ListFilesTot,indices]=list_dir_2(SourceDir,ListDir,ListSub,check_fix)
 ListFilesTot={};
 for ilist=1:numel(ListDir)
@@ -358,5 +373,5 @@
     cell_remove=regexp(ListFiles,'^(-|\.|\+/\.)');% detect strings beginning by '-' ,'.' or '+/.'(dir beginning by . )
     check_keep=cellfun('isempty', cell_remove);
-    ListFilesTot=[ListFilesTot;(ListFiles(check_keep))'];
+    ListFilesTot=[ListFilesTot (ListFiles(check_keep))];
     end
 end
@@ -370,4 +385,11 @@
         indices=[indices index];
     end
+    if check_fix
+        index_init=1:numel(ListFilesTot);
+        %indices=sort(indices)
+        index_init(indices)=[];
+       ListFilesTot=ListFilesTot([indices index_init]);
+       indices=1:numel(indices);
+    end      
 end
 if isempty(indices), indices=1; end
@@ -377,5 +399,5 @@
 % Provide a list to display
 %------------------------------------------------------------------------
-function [ListFilesTot,indices]=list_dir_3(SourceDir,ListDir,ListSub,ListSubSub)
+function [ListFilesTot,indices]=list_dir_3(SourceDir,ListDir,ListSub,ListSubSub,check_fix)
 ListFilesTot={};
 for ilist=1:numel(ListDir)
@@ -392,5 +414,5 @@
                 cell_remove=regexp(ListFiles,'^(-|\.|\+/\.)');% detect strings beginning by '-' ,'.' or '+/.'(dir beginning by . )
                 check_keep=cellfun('isempty', cell_remove);
-                ListFilesTot=[ListFilesTot;(ListFiles(check_keep))'];
+                ListFilesTot=[ListFilesTot (ListFiles(check_keep))];
             end
         end
@@ -406,4 +428,10 @@
         indices=[indices index];
     end
+    if check_fix
+        index_init=1:numel(ListFilesTot);
+        index_init(indices)=[];
+       ListFilesTot=ListFilesTot([indices index_init]);
+       indices=1:numel(indices);
+    end      
 end
 if isempty(indices), indices=1; end
Index: /trunk/src/series.m
===================================================================
--- /trunk/src/series.m	(revision 1068)
+++ /trunk/src/series.m	(revision 1069)
@@ -1613,16 +1613,28 @@
     for iexp=1:numel(ListExp)
         if ~isempty(regexp(ListExp{iexp},'^\+/'))% if it is a folder
-            for idevice=1:numel(ListDevices)
-                if ~isempty(regexp(ListDevices{idevice},'^\+/'))% if it is a folder
-                    for isubdir=1:numel(ListDataSeries)
-                        if ~isempty(regexp(ListDataSeries{isubdir},'^\+/'))% if it is a folder
-                            lpath= fullfile(SourceDir,regexprep(ListExp{iexp},'^\+/',''),...
-                                regexprep(ListDevices{idevice},'^\+/',''));
-                            ldir= regexprep(ListDataSeries{isubdir},'^\+/','');
-                            if exist(fullfile(lpath,ldir),'dir')
-                                NbExp=NbExp+1;
-                                ListPath{NbExp}=lpath;
-                                ListSubdir{NbExp}=ldir;
-                                ExpIndex{NbExp}=iexp;
+            if strcmp(get(BrowseData.DataSeries,'enable'),'off');%case of a multiple input line for series
+                NbExp=NbExp+1;
+                ExpIndex{NbExp}=iexp;
+                for idevice=1:numel(ListDevices)
+                    lpath= fullfile(SourceDir,regexprep(ListExp{iexp},'^\+/',''),...
+                        regexprep(ListDevices{idevice},'^\+/',''));
+                    ldir=regexprep(ListDataSeries{idevice},'^\+/','');
+                    ListPath{idevice,NbExp}=lpath;
+                    ListSubdir{idevice,NbExp}=ldir;
+                end
+            else
+                for idevice=1:numel(ListDevices)
+                    if ~isempty(regexp(ListDevices{idevice},'^\+/'))% if it is a folder
+                        for isubdir=1:numel(ListDataSeries)
+                            if ~isempty(regexp(ListDataSeries{isubdir},'^\+/'))% if it is a folder
+                                lpath= fullfile(SourceDir,regexprep(ListExp{iexp},'^\+/',''),...
+                                    regexprep(ListDevices{idevice},'^\+/',''));
+                                ldir= regexprep(ListDataSeries{isubdir},'^\+/','');
+                                if exist(fullfile(lpath,ldir),'dir')
+                                    NbExp=NbExp+1;
+                                    ExpIndex{NbExp}=iexp;
+                                    ListPath{NbExp}=lpath;
+                                    ListSubdir{NbExp}=ldir;
+                                end
                             end
                         end
@@ -1647,7 +1659,9 @@
         end
         set(BrowseData.ListExperiments,'Value',ExpIndex{iexp})
-        Param.InputTable{1,1}=ListPath{iexp};
-        Param.InputTable{1,2}=ListSubdir{iexp};
+        Param.InputTable(:,1)=ListPath(:,iexp);
+        Param.InputTable(:,2)=ListSubdir(:,iexp);
+        if size(Param.InputTable,1)==1% case of single input line
         Param.OutputSubDir=ListSubdir{iexp};
+        end
         set(handles.InputTable,'Data',Param.InputTable)
 %         set(handles.OutputSubDir,'String',ListSubdir{iexp})
@@ -3830,6 +3844,9 @@
 function Replicate_Callback(hObject, eventdata, handles)
 if get(handles.Replicate,'Value')
-InputTable=get(handles.InputTable,'Data');
-browse_data(fullfile(InputTable{1,1},InputTable{1,2}))
+    InputTable=get(handles.InputTable,'Data');
+    for ilist=1:size(InputTable,1)
+        InputDir{ilist}=fullfile(InputTable{ilist,1},InputTable{ilist,2});
+    end
+    browse_data(InputDir)
 else
     hh=findobj(allchild(0),'Tag','browse_data');
Index: /trunk/src/series/time_series.m
===================================================================
--- /trunk/src/series/time_series.m	(revision 1068)
+++ /trunk/src/series/time_series.m	(revision 1069)
@@ -304,5 +304,7 @@
 VarMesh=[];
 checkhisto=0;
-if isfield(Param,'ProjObject') && ismember(Param.ProjObject.ProjMode,{'inside','outside'})
+checkline=0;
+if isfield(Param,'ProjObject') 
+    if ismember(Param.ProjObject.ProjMode,{'inside','outside'})
     checkhisto=1;
     if isfield(Param,'ActionInput') && isfield(Param.ActionInput,'VarMesh')%case of histograms
@@ -311,4 +313,7 @@
         VarMesh=[];
         disp_uvmat('WARNING','automatic bin size for histograms, select time_series again to set the value',checkrun)
+    end
+    elseif ismember(Param.ProjObject.Type,{'line'})
+        checkline=1;
     end
 end
@@ -401,7 +406,4 @@
                     DataOut.ListVarName=[DataOut.ListVarName {[VarName 'Histo']}];
                     DataOut.VarDimName=[DataOut.VarDimName {{'Time',VarName}}];
-%                     if isfield(DataOut.VarAttribute{ivar},'Role')
-%                     DataOut.VarAttribute{ivar}=rmfield(DataOut.VarAttribute{ivar},'Role');
-%                     end
                     StatName=pdf2stat;% get the names of statistical quantities to calcuilate at each time
                     for istat=1:numel(StatName)
@@ -430,6 +432,9 @@
                             eval(['DataOut=rmfield(DataOut,''' Field.ListVarName{ivar} ''');']);%remove variable
                         end
-                        if strcmp(var_role,'coord_x')||strcmp(var_role,'coord_y')||strcmp(var_role,'coord_z')||strcmp(var_role,'coord')
+                        if strcmp(var_role,'coord_x')||strcmp(var_role,'coord_z')||strcmp(var_role,'coord')
                             testsum(ivar)=1; %constant coordinates, record without time evolution
+                        end
+                        if strcmp(var_role,'coord_y')&& ~checkline
+                             testsum(ivar)=1;
                         end
                     end
@@ -567,15 +572,4 @@
 end
 
-% %case of histograms
-% if checkhisto
-%     for ivar=1:numel(Field.ListVarName)
-%         VarName=Field.ListVarName{ivar};
-%         if isfield(Data{1},VarName)
-%             DataOut.ListVarName=[DataOut.ListVarName {[VarName 'Histo']}];
-%             DataOut.VarDimName=[DataOut.VarDimName {{'Time',VarName}}];
-%         end
-%     end
-% end
-% display nbmissing
 if ~isequal(nbmissing,0)
     disp_uvmat('WARNING',[num2str(nbmissing) ' files skipped: missing files or bad input, see command window display'],checkrun)
