diff --git a/crpptbx/AUG_IMAS/aug2ids.m b/crpptbx/AUG_IMAS/aug2ids.m new file mode 100644 index 0000000000000000000000000000000000000000..cbccbb46d0b8c61db09656c45a02c19c063287d2 --- /dev/null +++ b/crpptbx/AUG_IMAS/aug2ids.m @@ -0,0 +1,97 @@ +function [ids_from_aug,varargout] = aug2ids(shot,varargin); +% +% [ids_from_aug,varargout] = aug2ids(shot,varargin); +% +% Assumes you have done: +% >> addpath ~g2osaute/public/matlab9_11_2016 (on the gateway) +% using the tunnel made in another session like: ssh -lusername -L 8001:lxmdsplus.aug.ipp.mpg.de:8000 gate1.aug.ipp.mpg.de +% >> mdsconnect('localhost:8001') +% +% varargin{1}: ids to load, by default all defined so far (if empty or empty string or not given) +% {'equilibrium'} or a subset +% +% varargout{1}: return also the ids in array of structure with the names, to allow easy use of plotallids +% + +% initialize input parser +p = inputParser; +% no required inputs here so one can call with empty args and get defaults parameters +% effectively required inputs should have defaults as empty +p.addOptional('shot', [], @(x) (isnumeric(x) && isscalar(x) && (x == round(x)))); % integer +p.addOptional('ids_names', {'equilibrium'}, @(x) isempty(x) | (ischar(x) || iscell(x))); % char or cell array + +p.parse; +defaults_aug2ids = p.Results; % to keep track of defaults + +if nargin==1 + p.parse(shot); + params = p.Results; +elseif nargin>=2 + p.parse(shot,varargin{:}); + params = p.Results; +else + p.parse; + p.Results + return +end + +% replace empty inputs with defaults +names = fieldnames(params); +mask = structfun(@isempty,params); +if any(mask), + params = rmfield(params,unique([names(mask); p.UsingDefaults.'])); + if ~isfield(params, 'shot') || isnan(params.shot) + warning('No shot entered'); + return + end + p.parse(params.shot,rmfield(params,'shot')); + params = p.Results; +end + +% check ids_names +if ~isfield(params,'ids_names') + disp(['do not provide any ids_names or choose from : ']) + ids_from_aug.ids_names_available = defaults_aug2ids.ids_names; + defaults_aug2ids.ids_names + return +end +if ischar(params.ids_names) + params.ids_names = {params.ids_names}; +end +ids_names_ok = params.ids_names; +for i=1:length(params.ids_names) + ij = strcmp(params.ids_names{i},defaults_aug2ids.ids_names); + if ~any(ij) + disp(['ids name: ' params.ids_names{i} ' is not available yet, ask O. Sauter']) + ids_names_ok = setdiff(ids_names_ok,params.ids_names{i}); + end +end +params.ids_names = ids_names_ok; + +params_aug2ids = params; + +if isempty(params_aug2ids.ids_names) + disp('no ids names available') + return +end + +for i=1:length(params_aug2ids.ids_names) + ids_to_get = params_aug2ids.ids_names{i}; + tmp = gdat(shot,'ids','source',ids_to_get,'machine','aug'); + ids_from_aug.(ids_to_get) = tmp.(ids_to_get); + ids_from_aug.([ids_to_get '_description']) = tmp.([ids_to_get '_description']); +end + +if nargout>=2 + try + for i=1:length(params_aug2ids.ids_names) + ids_to_get = params_aug2ids.ids_names{i}; + varargout{1}.ids{i} = ids_from_aug.(ids_to_get); + varargout{1}.idsname{i} = ids_to_get; + varargout{1}.ids{i}.idsname = ids_to_get; + end + catch + varargout{1} = []; + disp('problems to fill in varargout') + end +end