RDS_compensationcont.py 5.29 KB
import h5py
import matplotlib.pyplot as plt
import numpy as np
import sys
import re
import ast
from scipy.optimize import curve_fit
import os
from scipy import interpolate

#Mediciones barriendo angulo del TISA y viendo kicking de resonancias oscuras

#C:\Users\Usuario\Documents\artiq\artiq_experiments\analisis\plots\20220106_CPT_DosLaseres_v08_TISA_DR\Data

os.chdir('/home/nico/Documents/artiq_experiments/analisis/plots/20230804_RotationalDopplerShift_v2/Data')



"""
en este codigo ploteo espectros CPT de resonancias D-D para configuracion colineal (insensible a velocidad perpendicular)
y configuracion desplazada (sensible).
Primero una gaussiana variando la potencia (power_files).
Luego, variando compensacion con electrodo DCA y con electrodo OVEN.
"""

def find_nearest(array, value):
    array = np.asarray(array)
    idx = (np.abs(array - value)).argmin()
    return idx

CONTCOMP_FILES = """VaryingCompContinuously/000014219-IR_Scan_withcal_optimized
VaryingCompContinuously/000014223-IR_Scan_withcal_optimized
VaryingCompContinuously/000014232-IR_Scan_withcal_optimized
"""

def Split(array,n):
    length=len(array)/n
    splitlist = []
    jj = 0
    while jj<length:
        partial = []
        ii = 0
        while ii < n:
            partial.append(array[jj*n+ii])
            ii = ii + 1
        splitlist.append(partial)
        jj = jj + 1
    return splitlist


def SeeKeys(files):
    for i, fname in enumerate(files.split()):
        data = h5py.File(fname+'.h5', 'r') # Leo el h5: Recordar que nuestros datos estan en 'datasets'
        print(fname)
        print(list(data['datasets'].keys()))

print(SeeKeys(CONTCOMP_FILES))


#carpeta pc nico labo escritorio:
#C:\Users\Usuario\Documents\artiq\artiq_experiments\analisis\plots\20211101_CPT_DosLaseres_v03\Data

ContcompCounts_merged = []
ContcompVoltages = []
ContcompFrequencies = []

for i, fname in enumerate(CONTCOMP_FILES.split()):
    print(str(i) + ' - ' + fname)
    data = h5py.File(fname+'.h5', 'r')
    #Amplitudes.append(np.array(data['datasets']['amplitudes']))
    ContcompCounts_merged.append(np.array(data['datasets']['data_array']))
    ContcompVoltages.append(np.array(data['datasets']['scanning_voltages']))
    ContcompFrequencies.append(np.array(data['datasets']['IR1_Frequencies']))

ContcompCounts = []
for k in range(len(ContcompFrequencies)):
    ContcompCounts.append(Split(ContcompCounts_merged[k],len(ContcompFrequencies[k])))

#%%
#gaussiano
from scipy.signal import savgol_filter as sf
bkgr = 40*5
#bkgr = 0

def arraytreatment(array):
    #return (array[0]-array[1])/(array[0]-bkgr)
    return array[1]

Gaussian_measurement = ContcompCounts[0]
Gaussian_voltages = ContcompVoltages[0]
Gaussian_dr1depths = []
for kk in range(len(Gaussian_voltages)):
    Gaussian_dr1depths.append(arraytreatment(Gaussian_measurement[kk]))


OAMcol_measurement = ContcompCounts[1]
OAMcol_voltages = ContcompVoltages[1]
OAMcol_dr1depths = []
for kk in range(len(OAMcol_voltages)):
    OAMcol_dr1depths.append(arraytreatment(OAMcol_measurement[kk]))

OAMdesp_measurement = ContcompCounts[2]
OAMdesp_voltages = ContcompVoltages[2]
OAMdesp_dr1depths = []
for kk in range(len(OAMdesp_voltages)):
    OAMdesp_dr1depths.append(arraytreatment(OAMdesp_measurement[kk]))


OAMcol = sf(OAMcol_dr1depths, 15, 2)
OAMdesp = sf(OAMdesp_dr1depths, 15, 2)
gauss = sf(Gaussian_dr1depths, 15, 2)

plt.figure()
# plt.plot(Gaussian_voltages, gauss, color='red', label='gaussian', alpha=0.8, zorder=0)
# plt.plot(OAMcol_voltages, OAMcol, color='blue', label='oam colineal', alpha=0.8, zorder=0)
# plt.plot(OAMdesp_voltages, OAMdesp, color='purple', label='oam desplaz',alpha = 0.8, zorder=0)
plt.plot(Gaussian_voltages, Gaussian_dr1depths,'o', color='red', label='gaussian')
plt.plot(OAMcol_voltages, OAMcol_dr1depths,'o', color='blue', label='oam colineal')
plt.plot(OAMdesp_voltages, OAMdesp_dr1depths,'o', color='purple', label='oam desplaz')
plt.title('Profundidad de resonancia %')
plt.grid()
plt.legend()

#%%

#indexcomp = 20
#end = 30

indexcomp=30

end = len(Gaussian_voltages)

plt.figure()
plt.plot(Gaussian_voltages[:end], [g/gauss[indexcomp] for g in gauss][:end], 'o', color='red', label='gaussian', alpha=0.8, zorder=0)
plt.plot(OAMcol_voltages[:end], [g/OAMcol[indexcomp] for g in OAMcol][:end], 'o', color='blue', label='oam colineal', alpha=0.8, zorder=0)
plt.plot(OAMdesp_voltages[:end], [g/OAMdesp[indexcomp] for g in OAMdesp][:end], 'o', color='purple', label='oam desplaz',alpha = 0.8, zorder=0)
# plt.plot(Gaussian_voltages, Gaussian_dr1depths,'o', color='red', label='gaussian')
# plt.plot(OAMcol_voltages, OAMcol_dr1depths,'o', color='blue', label='oam colineal')
# plt.plot(OAMdesp_voltages, OAMdesp_dr1depths,'o', color='purple', label='oam desplaz')
plt.title(f'Tasa de variacion respecto a valor de referencia {Gaussian_voltages[indexcomp]} mV')
plt.axvline(Gaussian_voltages[indexcomp])

plt.grid()
plt.legend()



#%%

"""
Resonancias DD variando la potencia del IR2
"""

powermedvec = [0,1,2]

AmpsVecs = [0.05, 0.08, 0.12, 0.17, 0.22]

plt.figure()

ftrap = 22.1

DR1 = 435.8
DR2 = 444.2

jj=0
for med in powermedvec:
    plt.plot([2*f*1e-6 for f in PowerIR1_Freqs[med][1:]], [c for c in PowerCounts[med][1:]], '-o', markersize=2, label=f'amp:{AmpsVecs[jj]}')
    jj=jj+1
plt.xlabel('Frecuencia')
plt.ylabel('Counts')
plt.grid()
plt.legend()
plt.title('Variando potencia de IR2 para potencia de IR1 fija')