function [adata,error]=rdaAUG_eff(shot,diagname,sigtype,shotfile_exp,varargin); % % gets data using sf2sig or mdsplus (when mdsplus will be available) % 1D arrays: assumes dimension is time % 2D arrays: assumes data vs (x,time) % 3D arrays: assumes data vs (x,time,hsig) (for mdsplus) % % varargin{1}: time interval or timevalue, will get data closest to that time or within that time interval % % examples: % [data,error]=rdaAUG_eff(15133,'MAG','Ipi'); % [data,error]=rdaAUG_eff(15133,'MAG','Ipi',[1 5]); % % set global variable: usemdsplus to decide if sf2sig or mdsplus is used: % >> global usemdsplus % >> usemdsplus=1 % means use mds to get data % >> usemdsplus=0 % means use sf2sig (default if not defined) % if ~exist('usemdsplus'); usemdsplus=0; end % global usemdsplus if isempty(usemdsplus); usemdsplus=1; end error=1; time_int=[]; if nargin>=5 & ~isempty(varargin{1}) time_int=varargin{1}; end if usemdsplus % use mdsplus if ~unix('test -d /home/duval/mdsplus') addpath('/home/duval/mdsplus') end if ~unix('test -d /home/osauter/gdat') mdsconnect('localhost:8001'); else mdsconnect('localhost'); end user=getenv('USER'); if nargin>=5 & ~isempty(varargin{1}) ['[data,error]=mdsvalue(''_rdaeff' user diagname '=augsignal(' num2str(shot) ',"' diagname '","' sigtype '",,,' ... num2str(varargin{1}(1),'%.14f') ',' num2str(varargin{1}(end),'%.14f') ')'');'] eval(['[data,error]=mdsvalue(''_rdaeff' user diagname '=augsignal(' num2str(shot) ',"' diagname '","' sigtype '",,,' ... num2str(varargin{1}(1),'%.14f') ',' num2str(varargin{1}(end),'%.14f') ')'');']); else eval(['[data,error]=mdsvalue(''_rdaeff' user diagname '=augsignal(' num2str(shot) ',"' diagname '","' sigtype '")'');']); end adata.data=data; hsig=[]; ss=size(data); nbofdim=length(ss); if ss(end)==1; nbofdim=nbofdim-1; end nbofdim=max(nbofdim,1); switch nbofdim case 1 eval(['time=mdsvalue(''dim_of(_rdaeff' user diagname ',0)'');']); x=[]; case 2 eval(['x=mdsvalue(''dim_of(_rdaeff' user diagname ',0)'');']); eval(['time=mdsvalue(''dim_of(_rdaeff' user diagname ',1)'');']); case 3 eval(['x=mdsvalue(''dim_of(_rdaeff' user diagname ',0)'');']); eval(['time=mdsvalue(''dim_of(_rdaeff' user diagname ',1)'');']); disp('3rd dimension in hsig!!!!!!!!!!!!!!!!!!!!!!!!!') eval(['hsig=mdsvalue(''dim_of(_rdaeff' user diagname ',2)'');']); otherwise disp([' more than 3 dimensions for ' num2str(shot) ' ; ' sigtype '/' diagname]) error('in rdaAUG_eff') end adata.t=time; adata.x=x; adata.hsig=hsig; mdsdisconnect; if ~unix('test -d /home/duval/mdsplus') rmpath('/home/duval/mdsplus') end else % use sf2sig if isempty(time_int) try [adata,adata_time, adata_area]=sf2sig(diagname,shot,sigtype,'-exp',shotfile_exp); catch adata.value = []; adata.data = []; adata.dim = []; adata_time.data = []; adata_area = []; end else try [adata,adata_time, adata_area]=sf2sig(diagname,shot,sigtype,[time_int(1);time_int(end)],'-exp',shotfile_exp); catch adata.value = []; adata.data = []; adata.dim = []; adata_time.data = []; adata_area = []; end end if isempty(adata.value) return end % 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); end end adata.time_aug = adata_time; adata.area = adata_area; adata.exp = shotfile_exp; if (prod(size(adata.value))==length(adata.value)) % only time signal adata.x = []; adata.value=reshape(adata.value,1,length(adata.value)); if ~isempty(adata.time_aug) adata.t=adata.time_aug.value; else adata.t=[1:size(adata.value,2)]; end else if length(size(adata.value))<=2; adata.value = adata.value'; end % cannot transpose Nd>2 matrix if ~isempty(adata.time_aug) adata.x=[1:prod(size(adata.value))/length(adata_time.value)]; adata.t=adata.time_aug.value; else adata.x=[1:size(adata.value,1)]; adata.t=[1:size(adata.value,2)]; end end adata.data=adata.value; 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 end error=0;