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

allow calling several ids source at once

parent fa06f0e8
Branches
Tags
1 merge request!37Test corsica ids
Pipeline #31033 passed
......@@ -7,7 +7,7 @@ function [gdat_data,gdat_params,error_status,varargout] = gdat_imas(shot,data_re
%
% If no inputs are provided, return the list of available pre-defined data_request in gdat_data and default parameters gdat_params
%
% IMAS means assume access data from IDS database ala IMAS with tokamakname and dataversion and run_number using imas_open_env and ids_get calls
% IMAS means assume access data from IDS database ala IMAS with run_number, database_user, tokamak_name, data_major_version and using imas_open_env and ids_get calls
% Should be the same on ITER hpc and gateway, to be checked
%
% At first only "ids" request implemented, but keywords like ip etc should relate to specific IDS as for any machine
......@@ -394,7 +394,8 @@ elseif strcmp(mapping_for_imas.method,'switchcase')
params_eff = gdat_data.gdat_params;
if isfield(params_eff,'source') && ~isempty(params_eff.source)
ids_top_name = params_eff.source;
ids_top_names = params_eff.source;
if ischar(ids_top_names); ids_top_names = {ids_top_names}; end
else
ids_top_name = [];
warning('gdat:EmptyIDSName','Need an ids name in ''source'' parameter\n check substructure gdat_params.sources_available for an ids list');
......@@ -405,29 +406,6 @@ elseif strcmp(mapping_for_imas.method,'switchcase')
return
end
ids_gen_ok = ~~exist('ids_gen','file');
if ids_gen_ok
ids_empty = ids_gen(ids_top_name); % generate ids from gateway function ids_gen
else
% load empty ids structure from template file
fname = sprintf('ids_empty_%s',ids_top_name);
try
assert(~~exist(ids_empty_path,'dir'),'folder %s not found',ids_empty_path);
addpath(ids_empty_path);
assert(~~exist(fname,'file'),'file %s does not exist in %s',fname,ids_empty_path);
ids_empty = eval(fname);
disp(['use structure in .mat file: ' ids_empty_path '/' fname]);
rmpath(ids_empty_path);
catch ME
fprintf('Could not load empty template for %s\n',ids_top_name);
fprintf('Available templates:\n');
disp(dir(ids_empty_path));
rmpath(ids_empty_path);
rethrow(ME);
end
end
if ~isfield(gdat_data.gdat_params,'error_bar') || isempty(gdat_data.gdat_params.error_bar)
gdat_data.gdat_params.error_bar = 'delta';
end
......@@ -445,37 +423,66 @@ elseif strcmp(mapping_for_imas.method,'switchcase')
end
if ~isfield(gdat_data.gdat_params,'ipsign_in') || isempty(gdat_data.gdat_params.ipsign_in)
if gdat_data.gdat_params.ipsign_out~=0
gdat_data.gdat_params.ipsign_in = mdsvalue('\pcs::data:iohfb');
gdat_data.gdat_params.ipsign_in = -1;
else
gdat_data.gdat_params.ipsign_in = 0;
gdat_data.gdat_params.ipsign_in = 0;
end
end
if ~isfield(gdat_data.gdat_params,'b0sign_in') || isempty(gdat_data.gdat_params.b0sign_in)
if gdat_data.gdat_params.b0sign_out~=0
gdat_data.gdat_params.b0sign_in = mdsvalue('\pcs::data:if36fb');
gdat_data.gdat_params.b0sign_in = -1;
else
gdat_data.gdat_params.b0sign_in = 0;
gdat_data.gdat_params.b0sign_in = 0;
end
end
try
if isfield(gdat_data.gdat_params,'idx_imas_open_env') && gdat_data.gdat_params.idx_imas_open_env >= 0
if gdat_data.gdat_params.occurence == 0
ids_top = ids_get(gdat_data.gdat_params.idx_imas_open_env,ids_top_name);
for i=1:length(ids_top_names)
ids_top_name = ids_top_names{i};
if ids_gen_ok
ids_empty = ids_gen(ids_top_name); % generate ids from gateway function ids_gen
else
% load empty ids structure from template file
fname = sprintf('ids_empty_%s',ids_top_name);
try
assert(~~exist(ids_empty_path,'dir'),'folder %s not found',ids_empty_path);
addpath(ids_empty_path);
assert(~~exist(fname,'file'),'file %s does not exist in %s',fname,ids_empty_path);
ids_empty = eval(fname);
disp(['use structure in .mat file: ' ids_empty_path '/' fname]);
rmpath(ids_empty_path);
catch ME
fprintf('Could not load empty template for %s\n',ids_top_name);
fprintf('Available templates:\n');
disp(dir(ids_empty_path));
rmpath(ids_empty_path);
rethrow(ME);
end
end
% load data
try
if isfield(gdat_data.gdat_params,'idx_imas_open_env') && gdat_data.gdat_params.idx_imas_open_env >= 0
if gdat_data.gdat_params.occurence == 0
ids_top = ids_get(gdat_data.gdat_params.idx_imas_open_env,ids_top_name);
else
ids_top = ids_get(gdat_data.gdat_params.idx_imas_open_env,[ids_top_name '/' num2str(gdat_data.gdat_params.occurence)]);
end
gdat_data.(ids_top_name) = ids_top;
else
ids_top = ids_get(gdat_data.gdat_params.idx_imas_open_env,[ids_top_name '/' num2str(gdat_data.gdat_params.occurence)]);
gdat_data.(ids_top_name) = ids_empty;
end
gdat_data.(ids_top_name) = ids_top;
else
gdat_data.(ids_top_name) = ids_empty;
catch ME_imas_ids_get
disp(['there is a problem with: imas_get_ids_' ids_top_name ...
' , may be check if it exists in your path or test it by itself'])
gdat_data.(ids_top_name) = ids_empty;
gdat_data.([ids_top_name '_help']) = getReport(ME_imas_ids_get);
rethrow(ME_imas_ids_get)
end
% Perform cocos transformation if cocos_out ~= cocos_in
if gdat_data.gdat_params.cocos_in ~= gdat_data.gdat_params.cocos_out
warning('should perform cocos transformation, to include...')
end
catch ME_imas_ids_get
disp(['there is a problem with: imas_get_ids_' ids_top_name ...
' , may be check if it exists in your path or test it by itself'])
gdat_data.(ids_top_name) = ids_empty;
gdat_data.([ids_top_name '_help']) = getReport(ME_imas_ids_get);
rethrow(ME_imas_ids_get)
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
otherwise
if (gdat_params.nverbose>=1); warning(['switchcase= ' data_request_eff ' not known in gdat_imas']); end
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment