Skip to content
Snippets Groups Projects
Commit 4ca1c032 authored by Luke Simons's avatar Luke Simons
Browse files

Added function to get git deployment info. Updated infor on tcv_get_ids_bolometer

parent 9ef0ddaa
No related branches found
No related tags found
1 merge request!171Resolve "Add tcv_get_ids_bolometer to TCV_IMAS functions"
Pipeline #251754 passed
function info = tcv_get_deploymentinfo(filepath)
% Reads a deployment info file and extracts relevant details
% Author: L. Simons
% Date: 07/03/25
%
% Args:
% filepath: Path to the text file
%
% Returns:
% info: Struct containing extracted information
% Initialize output struct
info = struct();
info.repository=fileparts(filepath);
% Check if file exists
if exist(filepath, 'file') ~= 2
error('File does not exist: %s', filepath);
end
% Open file for reading
fid = fopen(filepath, 'r');
if fid == -1
error('Could not open file: %s', filepath);
end
% Read file line by line
while ~feof(fid)
line = fgetl(fid);
if ischar(line)
tokens = regexp(line, '^(\w+):\s(.+)$', 'tokens');
if ~isempty(tokens)
key = tokens{1}{1};
value = strtrim(tokens{1}{2});
% Store relevant fields in the struct
switch key
case 'DEPLOYMENT_DATE'
info.deployment_date = value;
case 'GIT_TAG'
info.git_tag = value;
case 'GIT_COMMIT'
info.git_commit = value;
case 'GIT_TAG_DATE'
info.git_tag_date = value;
case 'GITLAB_PROJECT_URL'
info.gitlab_project_url = value;
end
end
end
end
% Close the file
fclose(fid);
end
...@@ -30,7 +30,9 @@ ids_bolometer_description = struct(); ...@@ -30,7 +30,9 @@ ids_bolometer_description = struct();
% Load the bolometer geometry % Load the bolometer geometry
bolo_geom=bolou_load_geometry(); bolo_geom=bolou_load_geometry();
bolo_geom_gitinfo= ...
tcv_get_deploymentinfo(fullfile(fileparts(which('bolou_load_geometry')), ...
'.this-deployment.info'));
params_eff.data_request='\tcv_shot::top.results.bolo_u.intensity'; params_eff.data_request='\tcv_shot::top.results.bolo_u.intensity';
params_eff.trialindx=1; params_eff.trialindx=1;
...@@ -45,16 +47,18 @@ params_eff.data_request='\tcv_shot::top.results.bolo_u.confidence'; ...@@ -45,16 +47,18 @@ params_eff.data_request='\tcv_shot::top.results.bolo_u.confidence';
bolo_u_confidence = gdat(shot,params_eff); bolo_u_confidence = gdat(shot,params_eff);
status = ~ischar(bolo_u_intensity.data) & ~ischar(bolo_u_prad_core.data); status = ~ischar(bolo_u_intensity.data) & ~ischar(bolo_u_prad_core.data);
imas_version_number=getenv('IMAS_VERSION') imas_version_number=getenv('IMAS_VERSION');
if status if status
nchannel = numel(bolo_u_intensity.x); nchannel = numel(bolo_u_intensity.x);
ids_bolometer.channel(1:nchannel) = ids_bolometer.channel(1); ids_bolometer.channel(1:nchannel) = ids_bolometer.channel(1);
for ii = 1:nchannel for ii = 1:nchannel
%% Fill geometry information
% Fill information from bolo_geom=bolou_load_geometry();
ids_bolometer.channel{ii}.name = bolo_geom.channel{ii}.name; ids_bolometer.channel{ii}.name = bolo_geom.channel{ii}.name;
if strcmp(aa(1),'3') if strcmp(imas_version_number(1),'3')
ids_bolometer.channel{ii}.identifier = bolo_geom.channel{ii}.identifier; ids_bolometer.channel{ii}.identifier = bolo_geom.channel{ii}.identifier;
elseif strcmp(aa(1),'4') elseif strcmp(imas_version_number(1),'4')
ids_bolometer.channel{ii}.description = bolo_geom.channel{ii}.identifier; ids_bolometer.channel{ii}.description = bolo_geom.channel{ii}.identifier;
end end
ids_bolometer.channel{ii}.detector.geometry_type= bolo_geom.channel{ii}.detector.geometry_type; ids_bolometer.channel{ii}.detector.geometry_type= bolo_geom.channel{ii}.detector.geometry_type;
...@@ -102,6 +106,12 @@ if status ...@@ -102,6 +106,12 @@ if status
ids_bolometer.channel{ii}.line_of_sight.second_point.r = bolo_geom.channel{ii}.line_of_sight.second_point.r; ids_bolometer.channel{ii}.line_of_sight.second_point.r = bolo_geom.channel{ii}.line_of_sight.second_point.r;
ids_bolometer.channel{ii}.line_of_sight.second_point.z = bolo_geom.channel{ii}.line_of_sight.second_point.z; ids_bolometer.channel{ii}.line_of_sight.second_point.z = bolo_geom.channel{ii}.line_of_sight.second_point.z;
%% Fill measurement information
% '\tcv_shot::top.results.bolo_u.prad';
% '\tcv_shot::top.results.bolo_u.prad_core';
% '\tcv_shot::top.results.bolo_u.confidence';
ids_bolometer.channel{ii}.power.data = bolo_u_intensity.data(ii,:); ids_bolometer.channel{ii}.power.data = bolo_u_intensity.data(ii,:);
ids_bolometer_description.channel{ii}.power.data = ... ids_bolometer_description.channel{ii}.power.data = ...
['From results.bolo_u.intensity data, Radiance measured by ' ... ['From results.bolo_u.intensity data, Radiance measured by ' ...
...@@ -133,36 +143,46 @@ if status ...@@ -133,36 +143,46 @@ if status
ids_bolometer.power_radiated_total = bolo_u_prad.data; ids_bolometer.power_radiated_total = bolo_u_prad.data;
ids_bolometer.power_radiated_validity = 0*bolo_u_prad.data; ids_bolometer.power_radiated_validity = 0*bolo_u_prad.data;
end end
%% Code legacy for rc_gti_prep
ids_bolometer.code.name = 'rc_gti_prep'; ids_bolometer.code.name = 'rc_gti_prep';
rc_gti_prep_gitinfo= ...
tcv_get_deploymentinfo(fullfile(fileparts(which(ids_bolometer.code.name)),'.this-deployment.info'));
ids_bolometer.code.description = ... ids_bolometer.code.description = ...
['rc_gti_prep, RADCAM gitlab repo, calls GTI to generate emissivity profiles with liuqe.'] ['rc_gti_prep, RADCAM gitlab repo, calls GTI to generate emissivity profiles with liuqe.'];
% '/usr/local/bin/matlab960 -nojvm -nosplash -nodisplay -r ' ... % '/usr/local/bin/matlab960 -nojvm -nosplash -nodisplay -r ' ...
% '"anasrvmat(''rc_gti_prep'',$2,[0 2.2],''bolo'', 10, 1, 0.04, 30,' ... % '"anasrvmat(''rc_gti_prep'',$2,[0 2.2],''bolo'', 10, 1, 0.04, 30,' ...
% 'false, false,false, [], ''automated'', 1)"']; % 'false, false,false, [], ''automated'', 1)"'];
ids_bolometer.code.commit=''; ids_bolometer.code.commit=rc_gti_prep_gitinfo.git_commit;
ids_bolometer.code.version=''; ids_bolometer.code.version=rc_gti_prep_gitinfo.git_tag;
ids_bolometer.code.repository= ... ids_bolometer.code.repository= rc_gti_prep_gitinfo.repository;
'https://gitlab.epfl.ch/spc/tcv/diag/radcam/'; ids_bolometer.code.parameters= ...
ids_bolometer.code.parameters=''; ['(''rc_gti_prep'',$2,[0 2.2],''bolo'', 10, 1, 0.04, 30,' ...
ids_bolometer.code.library{1}.name = 'meq'; 'false, false,false, [], ''automated'', 1)'];
%% Code legacy for TCV_EQ; FBTE
% Call to gti: gti_get_disc
% Call to TCV_eq: temp=tdi('TCV_EQ("psi")',disc.s.equilsrc);
% https://spcwiki.epfl.ch/wiki/Tcv_eq
% a=gdat(shot,'TCV_EQ("psi")');
ids_bolometer.code.library{1}.name = 'fbte';
ids_bolometer.code.library{1}.description = 'Magnetic equilibrium'; ids_bolometer.code.library{1}.description = 'Magnetic equilibrium';
ids_bolometer.code.library{1}.commit = ''; ids_bolometer.code.library{1}.parameters = 'TCV_EQ("psi")';
ids_bolometer.code.library{1}.version = '';
ids_bolometer.code.library{1}.repository = ... %% Code legacy for GTI
'https://gitlab.epfl.ch/spc/tcv/tbx/meq'; ids_bolometer.code.library{2}.name = 'gti';
ids_bolometer.code.library{1}.parameters = '';
ids_bolometer.code.library{2}.name = 'GTI';
ids_bolometer.code.library{2}.description = ... ids_bolometer.code.library{2}.description = ...
'General Tomographic Inversion'; 'General Tomographic Inversion';
ids_bolometer.code.library{2}.commit = ''; for ii = 1:numel(ids_bolometer.code.library)
[a1,a2]=unix('git rev-parse --verify HEAD');
[b1,b2]=unix('git rev-parse --abbrev-ref HEAD'); library_gitinfo= ...
ids_bolometer.code.library{2}.version = sprintf('%s_branch_%s',strtrim(a2),strtrim(b2)); tcv_get_deploymentinfo(fullfile(fileparts(which('gti_do_inversion')),'.this-deployment.info'));
ids_bolometer.code.library{2}.repository = ... ids_bolometer.code.library{ii}.commit = library_gitinfo.git_commit;
'https://gitlab.epfl.ch/spc/tcv/analysis/gti'; ids_bolometer.code.library{ii}.version = library_gitinfo.git_tag;
ids_bolometer.code.library{ii}.repository = library_gitinfo.gitlab_project_url;
end
ids_bolometer.code.library{2}.parameters = ''; ids_bolometer.code.library{2}.parameters = '';
% FIXME: Values of bolo_u_confidence don't match output_flag % FIXME: Values of bolo_u_confidence don't match output_flag
ids_bolometer.code.output_flag=bolo_u_confidence; ids_bolometer.code.output_flag=bolo_u_confidence;
ids_bolometer.time = bolo_u_intensity.t; ids_bolometer.time = bolo_u_intensity.t;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment