From 0a9890eb677b3a363c75f213086aedb261163457 Mon Sep 17 00:00:00 2001
From: sldesnoo-Delft <s.l.desnoo@tudelft.nl>
Date: Thu, 3 Nov 2022 21:22:29 +0100
Subject: [PATCH] Added lp.array to loop over arbitrary array

---
 pulse_lib/segments/utility/looping.py | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/pulse_lib/segments/utility/looping.py b/pulse_lib/segments/utility/looping.py
index dfebf3dc..4149722a 100644
--- a/pulse_lib/segments/utility/looping.py
+++ b/pulse_lib/segments/utility/looping.py
@@ -27,7 +27,7 @@ class loop_obj():
         units (str/tuple<str>) : unit of the sweep data
         setvals (array/np.ndarray) : if you want to display different things on the axis than the normal data point. When None, setvals is the same as the data varaible.
         '''
-        self.data = np.asarray(data)
+        self.data = np.asarray(data).astype(float)
         self.dtype = self.data.dtype
 
         if axis is None:
@@ -75,7 +75,7 @@ class loop_obj():
 
         if not self.no_setpoints:
             if setvals is None:
-                if len(data.shape) == 1:
+                if len(self.data.shape) == 1:
                     self.setvals = (self.data, )
                 else:
                     raise ValueError ('Multidimensional setpoints cannot be inferred from input.')
@@ -299,6 +299,14 @@ class geomspace(loop_obj):
         super().add_data(np.geomspace(start, stop, n_steps, endpoint=endpoint),
                          axis=axis, names=name, labels=label, units=unit, setvals=setvals)
 
+class array(loop_obj):
+    def __init__(self, data,
+                 name=None, label=None, unit=None, axis=-1, setvals=None):
+        super().__init__()
+        super().add_data(data,
+                         axis=axis, names=name, labels=label, units=unit, setvals=setvals)
+
+
 if __name__ == '__main__':
     lp = loop_obj()
     lp.add_data(np.array([1]), axis=0)
-- 
GitLab