Skip to content
Snippets Groups Projects
Commit eea94767 authored by Olivier Sauter's avatar Olivier Sauter
Browse files

add generic ids_properties and input parser tcv_ids_headpart.m

git-svn-id: https://spcsvn.epfl.ch/repos/TCV/gdat/trunk@11378 d63d8f72-b253-0410-a779-e742ad2e26cf
parent 24d81f7f
No related branches found
No related tags found
No related merge requests found
function [ids_equilibrium,ids_equilibrium_description,varargout] = tcv_get_ids_equilibrium(shot,varargin); function [ids_equilibrium,ids_equilibrium_description,varargout] = tcv_get_ids_equilibrium(shot,ids_equil_empty,varargin);
% %
% [ids_equilibrium,ids_equilibrium_description,varargout] = get_ids_equilibrium_fixed_boundary(shot,varargin); % [ids_equilibrium,ids_equilibrium_description,varargout] = get_ids_equilibrium_fixed_boundary(shot,varargin);
% %
% %
ids_equilibrium = struct([]); [ids_equilibrium, params_equilibrium] = tcv_ids_headpart(shot,ids_equil_empty,'equilibrium',varargin{:});
ids_equilibrium_description = struct([]);
% 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) isempty(x) || (isnumeric(x) && isscalar(x) && (x == round(x)))); % integer
p.addOptional('empty_struct', -1, @(x) isstruct(x));
p.addOptional('comment', 'default comment', @(x) isempty(x) || ischar(x)); % char
p.parse;
defaults_equilibrium = 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;
if nargout>=3; varargout{1} = rmfield(p.Results,'shot'); end
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
if nargout>=3; varargout{1} = rmfield(p.Results,'shot'); end
params_equilibrium = params;
ids_equilibrium = params_equilibrium.empty_struct;
clear ids_equilibrium_description % so can add new subfields
%
% ids_properties
%
ids_equilibrium.ids_properties.comment = params_equilibrium.comment;
ids_equilibrium.ids_properties.homogeneous_time = 1;
ids_equilibrium.ids_properties.source = ['TCV shot #' num2str(params_equilibrium.shot)];
ids_equilibrium.ids_properties.provider = 'get_ids_equilibrium_fixed_boundary';
ids_equilibrium.ids_properties.creation_date = date;
% As a general rule, for a new substructure under the main ids, construct a local structure like: % As a general rule, for a new substructure under the main ids, construct a local structure like:
% "global_quantities" with subfields being the relevant data to get and a local structure: % "global_quantities" with subfields being the relevant data to get and a local structure:
......
function [ids_generic, params_ids_generic] = tcv_ids_headpart(shot,ids_in,ids_name,varargin);
%
% [ids_generic, params_ids_generic] = tcv_ids_headpart(shot,ids_in,ids_name,varargin);
%
% parses inputs and fill in ids_properties
%
% example:
% [ids_equilibrium, params_ids_equilibrium] = tcv_ids_headpart(shot,ids_equil_empty,'equilibrium','comment','your comment');
%
%
% 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_in', struct([]), @(x) (isstruct(x)));
p.addOptional('ids_name', '', @(x) (ischar(x))); % char
p.addOptional('comment', 'default comment', @(x) isempty(x) || ischar(x)); % char
p.parse(shot,ids_in,ids_name);
defaults_ids_generic = p.Results; % to keep track of defaults
params = p.Results;
if nargin >= 4
p.parse(shot,'ids_in',ids_in,'ids_name',ids_name,varargin{:});
params = p.Results;
end
% replace empty inputs with defaults
names = fieldnames(params);
mask = structfun(@isempty,params);
if any(mask),
params = rmfield(params,unique([names(mask); p.UsingDefaults.']));
end
params_ids_generic = params;
ids_generic = ids_in;
%
% ids_properties
%
ids_generic.ids_properties.comment = params_ids_generic.comment;
ids_generic.ids_properties.homogeneous_time = 1;
ids_generic.ids_properties.source = ['TCV shot #' num2str(params_ids_generic.shot)];
ids_generic.ids_properties.provider = ['tcv_get_ids_' ids_name];
ids_generic.ids_properties.creation_date = date;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment