From 96c8799b0c68040f63501e7c68e2eadd7c39a0aa Mon Sep 17 00:00:00 2001
From: Michele Marin <michele.marin@epfl.ch>
Date: Thu, 13 Feb 2025 18:26:08 +0100
Subject: [PATCH 1/2] Handling of situations where all values for a variable
 are nans

---
 matlab/TCV_IMAS/tcv_get_ids_summary.m | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/matlab/TCV_IMAS/tcv_get_ids_summary.m b/matlab/TCV_IMAS/tcv_get_ids_summary.m
index bda11cc2..7c44e778 100644
--- a/matlab/TCV_IMAS/tcv_get_ids_summary.m
+++ b/matlab/TCV_IMAS/tcv_get_ids_summary.m
@@ -252,7 +252,12 @@ for i=1:numel(global_quantities_fieldnames)
         ~isempty(global_quantities.(global_quantities_fieldnames{i}).data)
       % setup mask to get rid of nans
       mask = ~isnan(global_quantities.(global_quantities_fieldnames{i}).data);
-      % interpolate quantity on ids_summary.time
+      % assign a flat 1 to the array if it is all nans
+      if all(mask(:) == 0)
+	fprintf('Warning, %s is filled with NaNs, substituting 1\n', global_quantities_fieldnames{i});
+        global_quantities.(global_quantities_fieldnames{i}).data(:)=1;
+	mask(:)=1;
+      end
       ids_summary.global_quantities.(global_quantities_fieldnames{i}).value = ...
         interpos(21,global_quantities.(global_quantities_fieldnames{i}).t(mask),...
         global_quantities.(global_quantities_fieldnames{i}).data(mask), ...
-- 
GitLab


From 99257b3a41aeffab32f9ddc52fde6eb40bd2cd11 Mon Sep 17 00:00:00 2001
From: Michele Marin <michele.marin@epfl.ch>
Date: Thu, 20 Feb 2025 18:58:18 +0100
Subject: [PATCH 2/2] Use interpos_nan to deal with nans

---
 matlab/TCV_IMAS/tcv_get_ids_summary.m | 14 ++++----------
 1 file changed, 4 insertions(+), 10 deletions(-)

diff --git a/matlab/TCV_IMAS/tcv_get_ids_summary.m b/matlab/TCV_IMAS/tcv_get_ids_summary.m
index 7c44e778..0afcb6cc 100644
--- a/matlab/TCV_IMAS/tcv_get_ids_summary.m
+++ b/matlab/TCV_IMAS/tcv_get_ids_summary.m
@@ -250,18 +250,12 @@ for i=1:numel(global_quantities_fieldnames)
   if ~any(strcmp(global_quantities_fieldnames{i},special_fields))
     if ~isstruct(ids_summary.global_quantities.(global_quantities_fieldnames{i}).value) && ...
         ~isempty(global_quantities.(global_quantities_fieldnames{i}).data)
-      % setup mask to get rid of nans
-      mask = ~isnan(global_quantities.(global_quantities_fieldnames{i}).data);
-      % assign a flat 1 to the array if it is all nans
-      if all(mask(:) == 0)
-	fprintf('Warning, %s is filled with NaNs, substituting 1\n', global_quantities_fieldnames{i});
-        global_quantities.(global_quantities_fieldnames{i}).data(:)=1;
-	mask(:)=1;
-      end
+      %Use interpos_nan to get rid of nans. Arrays will be empty if filled with nans
       ids_summary.global_quantities.(global_quantities_fieldnames{i}).value = ...
-        interpos(21,global_quantities.(global_quantities_fieldnames{i}).t(mask),...
-        global_quantities.(global_quantities_fieldnames{i}).data(mask), ...
+        interpos_nan(21,global_quantities.(global_quantities_fieldnames{i}).t,...
+        global_quantities.(global_quantities_fieldnames{i}).data, ...
           ids_summary.time);
+
       ids_summary.global_quantities.(global_quantities_fieldnames{i}).source = ['gdat request: ' global_quantities_desc.(global_quantities_fieldnames{i})];
     elseif ~isempty(global_quantities.(global_quantities_fieldnames{i}).data)
       special_fields{end+1} = global_quantities_fieldnames{i};
-- 
GitLab