diff --git a/matlab/IMAS/gdat_imas.m b/matlab/IMAS/gdat_imas.m index d2b06fefcbdf8d2fcc5fc3b3289cc933cdc28ddd..a65df0e9aed2d8627dd98e6732a7cb5388019e11 100644 --- a/matlab/IMAS/gdat_imas.m +++ b/matlab/IMAS/gdat_imas.m @@ -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 run_number, database_user, tokamak_name, data_major_version and 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 (added backend choice as well, default hdf5 (13), otherwise 12 for mdsplus) % 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 @@ -270,6 +270,10 @@ if ~isfield(gdat_data.gdat_params,'data_major_version') gdat_data.gdat_params.data_major_version = '3'; if gdat_data.gdat_params.nverbose >= 3; disp('set data_major_version to ''3'' as default since not provided'); end end +if ~isfield(gdat_data.gdat_params,'backend') + gdat_data.gdat_params.backend = 13; + if gdat_data.gdat_params.nverbose >= 3; disp('set backend to 13 as default since not provided'); end +end error_status = 6; % at least reached this level gdat_params = gdat_data.gdat_params; @@ -285,8 +289,13 @@ if do_mdsopen_mdsclose return end try - gdat_data.gdat_params.idx_imas_open_env = imas_open_env('ids', shot, gdat_data.gdat_params.run,gdat_data.gdat_params.database_user, ... + if exist('imas_open_env_backend') > 0 + gdat_data.gdat_params.idx_imas_open_env = imas_open_env_backend(shot, gdat_data.gdat_params.run,gdat_data.gdat_params.database_user, ... + gdat_data.gdat_params.tokamak_name,gdat_data.gdat_params.data_major_version,gdat_data.gdat_params.backend); + else + gdat_data.gdat_params.idx_imas_open_env = imas_open_env('ids', shot, gdat_data.gdat_params.run,gdat_data.gdat_params.database_user, ... gdat_data.gdat_params.tokamak_name,gdat_data.gdat_params.data_major_version); + end disp('') catch ME warning('could not imas_open_env with following gdat_data.gdat_params:'); diff --git a/matlab/TCV_IMAS/ids2database.m b/matlab/IMAS/ids2database.m similarity index 79% rename from matlab/TCV_IMAS/ids2database.m rename to matlab/IMAS/ids2database.m index eb2c2ed7f0275d6700c482f8c6f3a1a4727d2fae..75ccc26f098d00923fabe7a59069004995b20ebd 100644 --- a/matlab/TCV_IMAS/ids2database.m +++ b/matlab/IMAS/ids2database.m @@ -1,13 +1,13 @@ function [ids_put_status] = ids2database(shot,run,occurence,ids2put,tree_user,tree_tokamak,tree_majorversion,imas_backend,varargin); % -% [ids_put_status] = ids2database(shot,run,occurence,ids2put,varargin); +% [ids_put_status] = ids2database(shot,run,occurence,ids2put,tree_user,tree_tokamak,tree_majorversion,imas_backend,varargin); % % open/create shot,run and put the ids from ids2put.idsnames (names from fieldnames(ids2put) && within IDS_list) -% from new ..._env routines, now user/publi database name, tokamak name and major UAL version (3 or 4 at this stage) need to be specified +% from new ..._env routines, now user/public database name, tokamak name and major UAL version (3 or 4 at this stage) need to be specified % tree_name: getenv('USER') by default, can be 'public' -% tree_tokamak: 'tcv' by default +% tree_tokamak: '' no default, typically tcv, TCV, ITER, etc (case will appear in folder name) % tree_majorversion: '3' by default -% imas_backend: "MDSplus" or "HDF5" +% imas_backend: "MDSplus" or "HDF5" or 12 or 13 % % varargin{1}: tbd % @@ -15,9 +15,9 @@ function [ids_put_status] = ids2database(shot,run,occurence,ids2put,tree_user,tr ids_put_status = 0; tree_user_default = getenv('USER'); -tree_tokamak_default = 'tcv'; +tree_tokamak_default = ''; tree_majorversion_default = '3'; -imas_backend_default = 'MDSplus'; +imas_backend_default = 'HDF5'; % initialize input parser p = inputParser; @@ -28,9 +28,9 @@ p.addOptional('run', [], @(x) (isnumeric(x) && isscalar(x) && (x == round(x)))); p.addOptional('occurence', 0, @(x) isempty(x) || (isnumeric(x) && isscalar(x) && (x == round(x)))); % integer p.addOptional('ids2put', struct([]), @(x) (isstruct(x))); p.addOptional('tree_user', tree_user_default, @(x) (isempty(x) || ischar(x))); -p.addOptional('tree_tokamak', tree_tokamak_default, @(x) (isempty(x) || ischar(x))); +p.addOptional('tree_tokamak', tree_tokamak_default, @(x) (~isempty(x) && ischar(x))); p.addOptional('tree_majorversion', tree_majorversion_default, @(x) (ischar(x))); -p.addOptional('imas_backend', imas_backend_default, @(x) (isempty(x) || ischar(x))); +p.addOptional('imas_backend', imas_backend_default, @(x) (isempty(x) || ischar(x) || (isnumeric(x) && any(x==[12,13])))); p.parse; defaults_ids2database = p.Results; % to keep track of defaults @@ -86,9 +86,9 @@ end params_ids2database = params; % check ids_names ids_names=fieldnames(ids2put); -[dummy1]=which('ids_list'); +[dummy1]=which('IDS_list'); if isempty(dummy1) - ids_full_list = tcv_available_ids; + ids_full_list = eval([lower(tree_tokamak) '_available_ids']); warning(['IDS_list not available, quick fix introducing list of ids available for TCV: ' fprintf('%s ',ids_full_list{:}) char(10)]); else % get effective function between ids_list and IDS_list (which or exist not sufficient) @@ -106,17 +106,19 @@ if isempty(ids_names_ok) return end -if ~ismember(params_ids2database.imas_backend, {'MDSplus', 'HDF5'}) - warning(['Unknown imas_backend: ', imas_backend, ', selecting default: ',imas_backend_default]); - params_ids2database.imas_backend = imas_backend_default; +if ischar(params_ids2database.imas_backend) && ~ismember(params_ids2database.imas_backend, {'MDSplus', 'HDF5'}) + warning(['Unknown imas_backend: ', imas_backend, ', selecting default: ',imas_backend_default]); + params_ids2database.imas_backend = imas_backend_default; end % Get IMAS backend ID switch params_ids2database.imas_backend - case "HDF5" + case 'HDF5' backendid=13; - case "MDSplus" + case 'MDSplus' backendid=12; + otherwise + backendid = params_ids2database.imas_backend; end try @@ -128,7 +130,7 @@ try shot_is_new = 0; end if shot_is_new - idx = imas_create_env_backend(shot, run, params_ids2database.tree_user,params_ids2database.tree_tokamak, params_ids2database.tree_majorversion, backendid) + idx = imas_create_env_backend(shot, run, params_ids2database.tree_user,params_ids2database.tree_tokamak, params_ids2database.tree_majorversion, backendid); else idx = imas_open_env_backend(shot,run,params_ids2database.tree_user,params_ids2database.tree_tokamak,params_ids2database.tree_majorversion,backendid); % end