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