diff --git a/matlab/TCV_IMAS/tcv_get_deploymentinfo.m b/matlab/TCV_IMAS/tcv_get_deploymentinfo.m new file mode 100644 index 0000000000000000000000000000000000000000..576b97c706bbd09eee4b2b8dc38e0edc57511db7 --- /dev/null +++ b/matlab/TCV_IMAS/tcv_get_deploymentinfo.m @@ -0,0 +1,55 @@ +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 diff --git a/matlab/TCV_IMAS/tcv_get_ids_bolometer.m b/matlab/TCV_IMAS/tcv_get_ids_bolometer.m index 697e49f28b6a635edf44127e54645d0f09f26d67..4cc893f17483e6009061bb52f4062d82c8c20744 100644 --- a/matlab/TCV_IMAS/tcv_get_ids_bolometer.m +++ b/matlab/TCV_IMAS/tcv_get_ids_bolometer.m @@ -30,7 +30,9 @@ ids_bolometer_description = struct(); % Load the bolometer 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.trialindx=1; @@ -45,16 +47,18 @@ params_eff.data_request='\tcv_shot::top.results.bolo_u.confidence'; bolo_u_confidence = gdat(shot,params_eff); 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 nchannel = numel(bolo_u_intensity.x); ids_bolometer.channel(1:nchannel) = ids_bolometer.channel(1); 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; - if strcmp(aa(1),'3') + if strcmp(imas_version_number(1),'3') 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; end ids_bolometer.channel{ii}.detector.geometry_type= bolo_geom.channel{ii}.detector.geometry_type; @@ -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.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_description.channel{ii}.power.data = ... ['From results.bolo_u.intensity data, Radiance measured by ' ... @@ -133,36 +143,46 @@ if status ids_bolometer.power_radiated_total = bolo_u_prad.data; ids_bolometer.power_radiated_validity = 0*bolo_u_prad.data; end + + %% Code legacy for 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 = ... - ['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 ' ... % '"anasrvmat(''rc_gti_prep'',$2,[0 2.2],''bolo'', 10, 1, 0.04, 30,' ... % 'false, false,false, [], ''automated'', 1)"']; - ids_bolometer.code.commit=''; - ids_bolometer.code.version=''; - ids_bolometer.code.repository= ... - 'https://gitlab.epfl.ch/spc/tcv/diag/radcam/'; - ids_bolometer.code.parameters=''; - ids_bolometer.code.library{1}.name = 'meq'; + ids_bolometer.code.commit=rc_gti_prep_gitinfo.git_commit; + ids_bolometer.code.version=rc_gti_prep_gitinfo.git_tag; + ids_bolometer.code.repository= rc_gti_prep_gitinfo.repository; + ids_bolometer.code.parameters= ... + ['(''rc_gti_prep'',$2,[0 2.2],''bolo'', 10, 1, 0.04, 30,' ... + '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}.commit = ''; - ids_bolometer.code.library{1}.version = ''; - ids_bolometer.code.library{1}.repository = ... - 'https://gitlab.epfl.ch/spc/tcv/tbx/meq'; - ids_bolometer.code.library{1}.parameters = ''; - ids_bolometer.code.library{2}.name = 'GTI'; + ids_bolometer.code.library{1}.parameters = 'TCV_EQ("psi")'; + + %% Code legacy for GTI + ids_bolometer.code.library{2}.name = 'gti'; ids_bolometer.code.library{2}.description = ... 'General Tomographic Inversion'; - ids_bolometer.code.library{2}.commit = ''; - [a1,a2]=unix('git rev-parse --verify HEAD'); - [b1,b2]=unix('git rev-parse --abbrev-ref HEAD'); - ids_bolometer.code.library{2}.version = sprintf('%s_branch_%s',strtrim(a2),strtrim(b2)); - ids_bolometer.code.library{2}.repository = ... - 'https://gitlab.epfl.ch/spc/tcv/analysis/gti'; + for ii = 1:numel(ids_bolometer.code.library) + + library_gitinfo= ... + tcv_get_deploymentinfo(fullfile(fileparts(which('gti_do_inversion')),'.this-deployment.info')); + ids_bolometer.code.library{ii}.commit = library_gitinfo.git_commit; + 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 = ''; - % FIXME: Values of bolo_u_confidence don't match output_flag ids_bolometer.code.output_flag=bolo_u_confidence; ids_bolometer.time = bolo_u_intensity.t;