From 15a16877de862240acebecf757ae81e82aeb8203 Mon Sep 17 00:00:00 2001
From: Olivier Sauter <olivier.sauter@epfl.ch>
Date: Fri, 22 Mar 2019 16:02:52 +0000
Subject: [PATCH] tested full for aug at IPP toki02

git-svn-id: https://spcsvn.epfl.ch/repos/TCV/gdat/trunk@11631 d63d8f72-b253-0410-a779-e742ad2e26cf
---
 crpptbx/AUG/aug_requests_mapping.m |   2 +-
 crpptbx/AUG/gdat_aug.m             |   6 +-
 crpptbx/AUG/rdaAUG_eff.m           | 130 +++++++++++++++++++----------
 3 files changed, 89 insertions(+), 49 deletions(-)

diff --git a/crpptbx/AUG/aug_requests_mapping.m b/crpptbx/AUG/aug_requests_mapping.m
index 247f29e8..67089d2c 100644
--- a/crpptbx/AUG/aug_requests_mapping.m
+++ b/crpptbx/AUG/aug_requests_mapping.m
@@ -136,7 +136,7 @@ switch lower(data_request)
   mapping.expression = [{'TTH'},{'H/L-facs'},{'AUGD'}];
   mapping.method = 'expression';
   mapping.expression = ['params_eff = gdat_data.gdat_params;params_eff.data_request=[{''TTH''},{''H/L-facs''},{''AUGD''}];params_eff.source=''TTH'';' ...
-                    'gdat_tmp=gdat_aug(shot,params_eff);S = rdaAUG_eff(shot,''TTH'',[],''AUGD'',[],[],''param-set:scal_par'');if isfield(S,''items'');gdat_tmp.dimunits{1}=cellstr(S.items(end).value'');end;' ...
+                    'gdat_tmp=gdat_aug(shot,params_eff);S = rdaAUG_eff(shot,''TTH'',''scal_par'',''AUGD'',[],[],''param:descript'');gdat_tmp.dimunits{1}=cellstr(deblank(S.data''));' ...
                     'gdat_tmp.data = min(gdat_tmp.data,10.);'];
  case 'ioh'
   mapping.timedim = 1;
diff --git a/crpptbx/AUG/gdat_aug.m b/crpptbx/AUG/gdat_aug.m
index 86f18fbe..61bf5d64 100644
--- a/crpptbx/AUG/gdat_aug.m
+++ b/crpptbx/AUG/gdat_aug.m
@@ -496,8 +496,8 @@ elseif strcmp(mapping_for_aug.method,'switchcase')
     end
     try
       % eval(['[time]=sf2tb(diag_name,shot,''time'',''-exp'',exp_name_eff' extra_arg_sf2sig_eff_string ');']);
-      %[time,err]=rdaAUG_eff(shot,diag_name,'time',exp_name_eff,[],extra_arg_sf2sig_eff_string,'time-base:Ti:0');
-      [time,err]=rdaAUG_eff(shot,diag_name,'time',exp_name_eff,[],extra_arg_sf2sig_eff_string,'area-base:Ti:0');
+      [time,err]=rdaAUG_eff(shot,diag_name,'time',exp_name_eff,[],extra_arg_sf2sig_eff_string,'time-base:Ti:0');
+      %[time,err]=rdaAUG_eff(shot,diag_name,'time',exp_name_eff,[],extra_arg_sf2sig_eff_string,'area-base:Ti:0');
       gdat_data.t = time.data;
     catch ME_R_time
       disp(getReport(ME_R_time))
@@ -1671,6 +1671,8 @@ elseif strcmp(mapping_for_aug.method,'switchcase')
       try
         ic=gdat_aug(shot,params_eff);
       catch
+	ic.data = [];
+	ic.dim = [];
       end
       if ~isempty(ic.data) && ~isempty(ic.dim)
         for i=1:length(fields_to_copy)
diff --git a/crpptbx/AUG/rdaAUG_eff.m b/crpptbx/AUG/rdaAUG_eff.m
index e8b13375..0e76eeef 100644
--- a/crpptbx/AUG/rdaAUG_eff.m
+++ b/crpptbx/AUG/rdaAUG_eff.m
@@ -15,6 +15,7 @@ function [adata,error]=rdaAUG_eff(shot,diagname,sigtype,shotfile_exp,varargin);
 % varargin{3}: 'param:xxx' means get parameter (instead of signal) with xxx as parameter to get
 %              'param-set:xxx' means get parameter-set (at this stage available only with sf2ps)
 %              'area-base:yy:i' means it's an area-base type signal and if known from yy dim_of(i)
+%              'time-base:yy:i' means it's a  time-base type signal and if known from yy dim_of(i)
 %
 %     for mds usage, calls: augparam (_shot, _diag, _psetname, _parameter, _experiment, _edition, _oshot, _oedition)
 %     for sf2 usage: help sf2par or sf2ps on ipp relevant node
@@ -38,7 +39,7 @@ function [adata,error]=rdaAUG_eff(shot,diagname,sigtype,shotfile_exp,varargin);
 %         2D array transposed (assumed were changed from C origin, this way gets usually time as 2nd)
 %
 %global usemdsplus
-usemdsplus = ~[exist('sf2sig')==2];
+usemdsplus = ~[exist('sf2sig')==3];
 if ~exist('usemdsplus') || isempty(usemdsplus); usemdsplus=0; end
 error=999;
 adata.data = [];
@@ -71,6 +72,9 @@ param_set_name=[];
 area_base=false;
 area_base_name=[];
 area_base_dimof=[];
+time_base=false;
+time_base_name=[];
+time_base_dimof=[];
 if nargin>=7 && ~isempty(varargin{3}) && ischar(varargin{3}) ...
            && length(varargin{3})>=7 && strcmp(lower(varargin{3}(1:6)),'param:')
   param_name=varargin{3}(7:end);
@@ -90,6 +94,17 @@ if nargin>=7 && ~isempty(varargin{3}) && ischar(varargin{3}) ...
     area_base_name=varargin{3}(ij(1)+1:end);
   end
 end
+if nargin>=7 && ~isempty(varargin{3}) && ischar(varargin{3}) ...
+           && length(varargin{3})>=9 && strcmp(lower(varargin{3}(1:9)),'time-base')
+  time_base = true;
+  ij=findstr(varargin{3},':');
+  if length(ij)==2
+    time_base_name=varargin{3}(ij(1)+1:ij(2)-1);
+    time_base_dimof = str2num(varargin{3}(ij(2)+1:end));
+  elseif length(ij)==1
+    time_base_name=varargin{3}(ij(1)+1:end);
+  end
+end
 
 if usemdsplus
   % a_remote=mdsremotelist; does not seem sufficient if connection broken, test with 1+2
@@ -117,7 +132,7 @@ if usemdsplus
     ed_number = num2str(sscanf(extra_arg_sf2sig(ij+5:end),'%d'));
   end
   user=getenv('USER');
-  if isempty(param_name) && isempty(param_set_name) && ~area_base
+  if isempty(param_name) && isempty(param_set_name) && ~area_base && ~time_base
     % use augdiag
     if nargin>=5 & ~isempty(varargin{1})
       eval(['[data,error]=mdsvalue(''_rdaeff' user diagname '=augdiag(' num2str(shot) ',"' diagname '","' sigtype '","' shotfile_exp ...
@@ -126,33 +141,39 @@ if usemdsplus
       eval(['[data,error]=mdsvalue(''_rdaeff' user diagname '=augdiag(' num2str(shot) ',"' diagname '","' sigtype '","' shotfile_exp ...
             '",' ed_number ',,,_oshot' user diagname ',_oed' user diagname ')'');']);
     end
-  elseif isempty(param_set_name) && ~area_base
+  elseif isempty(param_set_name) && ~area_base && ~time_base
     % use augparam
     eval(['[data,error]=mdsvalue(''_rdaeff' user diagname '=augparam(' num2str(shot) ',"' diagname '","' sigtype '","' param_name '"' ...
           ',"' shotfile_exp '",' ed_number ',_oshot' user diagname ',_oed' user diagname ')'');']);
-  elseif ~area_base
+  elseif ~area_base && ~time_base
     % param-set, cannot get this yet with mdsvalue
     disp(['cannot get param-set with mds yet (only sf2ps): ' param_set_name])
     data = [];
     error = 11;
   else
-    % area-base, can only get dim_of at this stage
-    if ~isempty(area_base_name)
+    % area-base or time-base, can only get dim_of at this stage
+    area_time_base_name = area_base_name;
+    area_time_base_dimof = area_base_dimof;
+    if ~isempty(time_base_name); 
+      area_time_base_name = time_base_name;
+      area_time_base_dimof = time_base_dimof;
+    end
+    if ~isempty(area_time_base_name)
       if nargin>=5 & ~isempty(varargin{1})
-        eval(['[data,error]=mdsvalue(''_rdaeff' user diagname '=augdiag(' num2str(shot) ',"' diagname '","' area_base_name '","' shotfile_exp ...
+        eval(['[data,error]=mdsvalue(''_rdaeff' user diagname '=augdiag(' num2str(shot) ',"' diagname '","' area_time_base_name '","' shotfile_exp ...
               '",' ed_number ',' num2str(varargin{1}(1),'%.14f') ',' num2str(varargin{1}(end),'%.14f') ')'');']);
       else
-        eval(['[data,error]=mdsvalue(''_rdaeff' user diagname '=augdiag(' num2str(shot) ',"' diagname '","' area_base_name '","' shotfile_exp ...
+        eval(['[data,error]=mdsvalue(''_rdaeff' user diagname '=augdiag(' num2str(shot) ',"' diagname '","' area_time_base_name '","' shotfile_exp ...
               '",' ed_number ',,,_oshot' user diagname ',_oed' user diagname ')'');']);
       end
-      if ~isempty(area_base_dimof)
-        eval(['data=mdsvalue(''dim_of(_rdaeff' user diagname ',' num2str(area_base_dimof) ')'');']);
+      if ~isempty(area_time_base_dimof)
+        eval(['data=mdsvalue(''dim_of(_rdaeff' user diagname ',' num2str(area_time_base_dimof) ')'');']);
       else
         for j=1:length(size(data))
           eval(['dataj=mdsvalue(''dim_of(_rdaeff' user diagname ',' num2str(j) ')'');']);
           if (prod(size(dataj))~=length(dataj))
             data = dataj;
-            area_base_dimof = j;
+            area_time_base_dimof = j;
             break
           end
         end
@@ -250,10 +271,10 @@ if usemdsplus
 % $$$   end
 
 else
-  % use sf2sig or sf2par
+  % use sf2sig, sf2par, sf2ab or sf2tb
   adata_time.data = [];
   adata_area = [];
-  if isempty(param_name) && isempty(param_set_name) && ~area_base
+  if isempty(param_name) && isempty(param_set_name) && ~area_base && ~time_base
     % use sf2sig
     if isempty(time_int)
       try
@@ -262,18 +283,20 @@ else
         else
           [adata,adata_time, adata_area]=sf2sig(diagname,shot,sigtype,'-exp',shotfile_exp);
         end
+	adata.data = adata.value; % at this stage keep both but try to work only on .data
       catch ME
         throw(ME)
       end
     else
       try
         [adata,adata_time, adata_area]=sf2sig(diagname,shot,sigtype,[time_int(1);time_int(end)],'-exp',shotfile_exp);
+	adata.data = adata.value; % at this stage keep both but try to work only on .data (for adata which can be from sf2.. or mds)
       catch ME
         throw(ME)
       end
     end
 
-    if isempty(adata.value)
+    if isempty(adata.data)
       return
     end
 
@@ -281,19 +304,19 @@ else
     % special checks
     if strcmp(upper(diagname),'SXB')
       % time missing one point
-      if length(adata.value) == length(adata_time.value)+1
-        adata_time.value=linspace(adata_time.range(1),adata_time.range(2),length(adata.value));
-        adata_time.index(2) = length(adata.value);
+      if length(adata.data) == length(adata_time.value)+1
+        adata_time.value=linspace(adata_time.range(1),adata_time.range(2),length(adata.data));
+        adata_time.index(2) = length(adata.data);
       end
     end
     %
 % $$$     if strcmp(upper(sigtype),'PNIQ')
 % $$$       % transform 4x2 PINIs in 1:8 PINIs and total in index=9
-% $$$       if (prod(size(adata.value))/length(adata_time.value) == 8)
-% $$$         tmp(:,1:4) = adata.value(:,:,1);
-% $$$         tmp(:,5:8) = adata.value(:,:,2);
+% $$$       if (prod(size(adata.data))/length(adata_time.value) == 8)
+% $$$         tmp(:,1:4) = adata.data(:,:,1);
+% $$$         tmp(:,5:8) = adata.data(:,:,2);
 % $$$         tmp(:,9) = sum(tmp,2);
-% $$$         adata.value = tmp'; % transpose since will be transposed afterwards
+% $$$         adata.data = tmp'; % transpose since will be transposed afterwards
 % $$$         adata.dimunits = {'s','8 sources;total'};
 % $$$       else
 % $$$         disp('expects 8 sources in PNIQ');
@@ -306,69 +329,84 @@ else
     adata.area = adata_area;
 
     adata.exp = shotfile_exp;
-    if (prod(size(adata.value))==length(adata.value))
+    if (prod(size(adata.data))==length(adata.data))
       % only time signal
       adata.x = [];
-      adata.value=reshape(adata.value,1,length(adata.value));
+      adata.data=reshape(adata.data,1,length(adata.data));
       if ~isempty(adata.time_aug)
         adata.t=adata.time_aug.value;
       else
-        adata.t=[1:size(adata.value,2)];
+        adata.t=[1:size(adata.data,2)];
       end
     else
-      if length(size(adata.value))<=2; adata.value = adata.value'; end % cannot transpose Nd>2 matrix
+      if length(size(adata.data))<=2; adata.data = adata.data'; end % cannot transpose Nd>2 matrix
       if ~isempty(adata.time_aug)
-        if length(size(adata.value))<=2;
-          adata.x=[1:prod(size(adata.value))/length(adata_time.value)];
+        if length(size(adata.data))<=2;
+          adata.x=[1:prod(size(adata.data))/length(adata_time.value)];
         else
           adata.x = [];
         end
         adata.t=adata.time_aug.value;
       else
-        adata.x=[1:size(adata.value,1)];
-        adata.t=[1:size(adata.value,2)];
+        adata.x=[1:size(adata.data,1)];
+        adata.t=[1:size(adata.data,2)];
       end
     end
     adata.units = adata.unit;
-    %  % transpose data as output in C format, reversed from Fortran and matlab standard
-    %  ss=size(a);
-    %  nbofdim=length(ss);
-    %  if ss(end)==1; nbofdim=nbofdim-1; end
-    %  nbofdim=max(nbofdim,1);
-    %  if nbofdim==1
-    %    data=a;
-    %  else
-    %    data=a';
-    %  end
-  elseif isempty(param_set_name) && ~area_base
+  elseif isempty(param_set_name) && ~area_base && ~time_base
     % use sf2par
     try
-      eval(['[adata]=sf2par(diagname,shot,param_name,sigtype,''-exp'',shotfile_exp,' extra_arg_sf2sig ');']);
+      if ~isempty(extra_arg_sf2sig) && ~strcmp(extra_arg_sf2sig,'[]')
+	eval(['[adata]=sf2par(diagname,shot,param_name,sigtype,''-exp'',shotfile_exp,' extra_arg_sf2sig ');']);
+      else
+	eval(['[adata]=sf2par(diagname,shot,param_name,sigtype,''-exp'',shotfile_exp);']);
+      end
+      adata.data = adata.value;
     catch ME
       trhow(ME)
     end
-  elseif ~area_base
+  elseif ~area_base && ~time_base
     % use sf2ps
     try
-      eval(['[adata]=sf2ps(diagname,shot,param_set_name,sigtype,''-exp'',shotfile_exp,' extra_arg_sf2sig ');']);
+      if ~isempty(extra_arg_sf2sig) && ~strcmp(extra_arg_sf2sig,'[]')
+	eval(['[adata]=sf2ps(diagname,shot,param_set_name,sigtype,''-exp'',shotfile_exp,' extra_arg_sf2sig ');']);
+      else
+	eval(['[adata]=sf2ps(diagname,shot,param_set_name,sigtype,''-exp'',shotfile_exp);']);
+      end
+      adata.data = adata.value;
     catch ME
-      trhow(ME)
+      throw(ME)
     end
-  else
+  elseif ~time_base
     % area-base
     try
-      if ~strcmp(extra_arg_sf2sig,'[]')
+      if ~isempty(extra_arg_sf2sig) && ~strcmp(extra_arg_sf2sig,'[]')
         eval(['[adata]=sf2ab(diagname,shot,sigtype,''-exp'',shotfile_exp,' extra_arg_sf2sig ');']);
       else
         [adata]=sf2ab(diagname,shot,sigtype,'-exp',shotfile_exp);
       end
       adata.data = adata.value{1};
+      adata.value = adata.data;
+    catch ME
+      throw(ME)
+    end
+  else
+    % time-base
+    try
+      if ~isempty(extra_arg_sf2sig) && ~strcmp(extra_arg_sf2sig,'[]')
+        eval(['[adata]=sf2tb(diagname,shot,sigtype,''-exp'',shotfile_exp,' extra_arg_sf2sig ');']);
+      else
+        [adata]=sf2tb(diagname,shot,sigtype,'-exp',shotfile_exp);
+      end
+      adata.data = adata.value;
     catch ME
       throw(ME)
     end
   end
 end
 
+adata.value = adata.data;
+
 if strcmp(upper(sigtype),'PNIQ')
   % transform 4x2 PINIs in 1:8 PINIs and total in index=9
   if (prod(size(adata.data))/length(adata.t) == 8)
-- 
GitLab