From 5d93290e61f3bdc5debbd6ce977d22f1450a888b Mon Sep 17 00:00:00 2001
From: Pascal <engelerp@phys.ethz.ch>
Date: Fri, 30 Aug 2024 18:19:41 +0200
Subject: [PATCH] Added analysis function

---
 stitch_project/api/Stitch/Stitchtility.py | 24 +++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/stitch_project/api/Stitch/Stitchtility.py b/stitch_project/api/Stitch/Stitchtility.py
index c0b407d..501c330 100644
--- a/stitch_project/api/Stitch/Stitchtility.py
+++ b/stitch_project/api/Stitch/Stitchtility.py
@@ -1,3 +1,5 @@
+import numpy as np
+
 def frequencyHzToDphi(frequency):
     dphi = int(frequency/0.18626451492)
     if dphi <= 1:
@@ -24,3 +26,25 @@ def numPeriodsToNringup(numPeriods, frequencyHz):
 
 def numPeriodsToNmeas(numPeriods, frequencyHz):
     return int(numPeriods*100.0e6/frequencyHz)
+
+#this spits out nm and rad
+def dataToAmpsPhase(data):
+    amps = []
+    numdata = [int.from_bytes(x[0], byteorder='little') for x in data[0]]
+    cosdata = [int.from_bytes(x[0], byteorder='little') for x in data[1]]
+    sindata = [int.from_bytes(x[0], byteorder='little') for x in data[2]]
+
+    for i in range(len(cosdata)):
+        if cosdata[i]&(2**63) != 0:
+            cosdata[i] = cosdata[i]-2**64
+    for i in range(len(sindata)):
+        if sindata[i]&(2**63) != 0:
+            sindata[i] = sindata[i]-2**64
+
+    amps = [2**-15*np.sqrt(2.*cosdata[i]**2+2.*sindata[i]**2)/numdata[i] for i in range(len(numdata))] #probably pm
+    angles = [2.*np.arctan(sindata[i]/cosdata[i]) for i in range(len(numdata))]
+    angles = np.angle(np.array(cosdata)+1j*np.array(sindata))
+    angles_unwr = np.unwrap(angles)
+    cosportion = [2**-15*np.abs(np.sqrt(2)*cosdata[i])/numdata[i] for i in range(len(amps))]
+    sinportion = [2**-15*np.abs(np.sqrt(2)*sindata[i])/numdata[i] for i in range(len(amps))]
+    return [amps,cosportion,sinportion], angles_unwr
\ No newline at end of file
-- 
GitLab