Commit 3dbd8294 authored by Muriel Bonetto's avatar Muriel Bonetto

lo qeu pediste nico

parent 9348f7db
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Sun Jul 20 17:30:37 2025
@author: muri
"""
import h5py
import matplotlib.pyplot as plt
import numpy as np
import os
from scipy.optimize import curve_fit
from scipy.stats import norm
def fit_gauss(x,A,B,mu,sigma):
return A*norm.pdf(x,mu,scale = sigma) + B
direc = './data/'
files = os.listdir(direc)
name = [f[4:9] for f in files ]
# f = h5py.File(direc + files[0], 'r')
index = [name.index('23002')]
nmin = 15
nmax = 110
volts = np.linspace(59,65,nmax-nmin)
x = (volts-62)*6.9
for i in index:
f = h5py.File(direc + files[i], 'r')
count = np.array(f['datasets']['counts_spectrum'])[nmin:nmax]
# count_base = f['datasets']['count_base']
# plt.plot(count,'.')
plt.plot(x,count,'.')
# plt.title(f'$4\sigma = $ {4*popt[-1]:.1f} $\mu$m')
plt.xlabel('x (aprox) (um)')
plt.ylabel('cuentas')
\ No newline at end of file
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
"""
Primero tengo mediciones de espectros cpt de un ion variando la tension dc_A
"""
#os.chdir('/home/nico/Documents/artiq_experiments/analisis/plots/20231123_CPTconmicromocion3/Data/')
#os.chdir('/home/nico/Documents/artiq_experiments/analisis/plots/20250516_CPT_bladetrap/Data')
#os.chdir(r'C:\Users\Carolina\Documents\artiq_experiments\analisis\plots\20250516_CPT_bladetrap\Data')
direc = "./Data/"
files = os.listdir(direc)
name = [f[4:9] for f in files ]
files = [x for _,x in sorted(zip(name,files))]
name = sorted(name)
CPT_FILES = files
def SeeKeys(files):
for i, fname in zip(range(len(files)),CPT_FILES):
data = h5py.File(direc + fname, 'r') # Leo el h5: Recordar que nuestros datos estan en 'datasets'
print(fname)
print(list(data['datasets'].keys()))
print(SeeKeys(CPT_FILES))
#%%
#carpeta pc nico labo escritorio:
#C:\Users\Usuario\Documents\artiq\artiq_experiments\analisis\plots\20211101_CPT_DosLaseres_v03\Data
Counts = []
Freqs = []
AmpTisa = []
UVCPTAmp = []
No_measures = []
Voltages = []
for i, fname in zip(range(len(files)),CPT_FILES):
print(str(i) + ' - ' + fname)
#print(fname)
data = h5py.File(direc + fname, 'r') # Leo el h5: Recordar que nuestros datos estan en 'datasets'
# Aca hago algo repugnante para poder levantar los strings que dejamos
# que además tenian un error de tipeo al final. Esto no deberá ser necesario
# cuando se solucione el error este del guardado.
Freqs.append(np.array(data['datasets']['IR1_Frequencies']))
Counts.append(np.array(data['datasets']['counts_spectrum']))
#AmpTisa.append(np.array(data['datasets']['TISA_CPT_amp']))
print(np.array(data['datasets']['no_measures']))
#%%
"""
Ploteo curvas para ver que tal son
"""
jvec = [11,12,13] # de la 1 a la 9 vale la pena, despues no
t_read = [100,400,800]
plt.figure()
i = 0
for j in jvec:
Frequencies = Freqs[j]
plt.errorbar([2*f*1e-6 for f in Frequencies], Counts[j], yerr=np.sqrt(Counts[j]), fmt='o', capsize=2, markersize=2,label = f't_readout = {t_read[i]} $\mu$ s')
i = i + 1
plt.xlabel('Frecuencia (MHz)')
plt.ylabel('Counts')
plt.grid()
plt.legend()
#%%
"""
HAGO SUPER AJUSTES O SEA CON OFFSETXPI Y DETDOPPLER INCLUIDOS
ajusto una medicion con muy poca micromocion
"""
from EITfit.lolo_modelo_full_8niveles import PerformExperiment_8levels_MM
from scipy.optimize import curve_fit
import time
"""
SUPER AJUSTE (SA)
"""
phidoppler, titadoppler = 0, 90
phirepump, titarepump = 0, 0
phiprobe = 0
titaprobe = 90
Temp = 0.5e-3
sg = 0.544
sp = 4.5
sr = 0
DetRepump = 0
lw = 0.1
DopplerLaserLinewidth, RepumpLaserLinewidth, ProbeLaserLinewidth = lw, lw, lw #ancho de linea de los laseres
u = 32.5e6
gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6
alpha = 0
drivefreq = 2*np.pi*7.262*1e6
SelectedCurveVec = [1]
popt_SA_vec = []
pcov_SA_vec = []
Detuningsshort_vec = []
Counts_vec = []
Detuningslong_vec = []
FittedCounts_vec = []
Betas_vec = []
ErrorBetas_vec = []
Temp_vec = []
ErrorTemp_vec = []
DetuningsUV_vec = []
ErrorDetuningsUV_vec = []
for selectedcurve in SelectedCurveVec:
FreqsDR = Freqs[selectedcurve]
CountsDR = Counts[selectedcurve]
freqslong = np.arange(min(FreqsDR), max(FreqsDR)+FreqsDR[1]-FreqsDR[0], 0.1*(FreqsDR[1]-FreqsDR[0]))
CircPr = 1
alpha = 0
def FitEIT_MM_single(Freqs, offset, DetDoppler, SG, SP, SCALE1, OFFSET, BETA1, TEMP, U, plot=False):
freqs = [2*f*1e-6-offset for f in Freqs]
# BETA1=0
Detunings, Fluorescence1 = PerformExperiment_8levels_MM(SG, SP, gPS, gPD, DetDoppler, U, DopplerLaserLinewidth, ProbeLaserLinewidth, TEMP, alpha, phidoppler, titadoppler, phiprobe, titaprobe, BETA1, drivefreq, min(freqs), max(freqs)+(freqs[1]-freqs[0]), freqs[1]-freqs[0], circularityprobe=CircPr, plot=False, solvemode=1, detpvec=None)
ScaledFluo1 = np.array([f*SCALE1 + OFFSET for f in Fluorescence1])
if plot:
return ScaledFluo1, Detunings
else:
return ScaledFluo1
#return ScaledFluo1
t1 = time.time()
print(f'Beginning {selectedcurve}')
popt_3_SA, pcov_3_SA = curve_fit(FitEIT_MM_single, FreqsDR[1:], CountsDR, p0=[440, -15, 0.3, 10, 1e4, 500, 2, (np.pi**2)*1e-3, 49.5e6], bounds=((0, -50, 0, 0, 0, 0, 0, 0, 48e6), (1000, 0, 2, 20, 5e4, 2e3, 3, (np.pi**2)*10e-3, 50e6)))
print(f'Ended {selectedcurve}, time elapsed: {round(time.time()-t1)} s')
#popt_3_SA, pcov_3_SA = curve_fit(FitEIT_MM_single, FreqsDR, CountsDR, p0=[430, -25, 0.9, 6.2, 3e4, 1.34e3, 2, (np.pi**2)*1e-3, 32e6], bounds=((0, -50, 0, 0, 0, 0, 0, 0, 25e6), (1000, 0, 2, 20, 5e4, 5e4, 10, (np.pi**2)*10e-3, 40e6)))
popt_SA_vec.append(popt_3_SA)
pcov_SA_vec.append(pcov_3_SA)
#offset, DetDoppler, SG, SP, SCALE1, OFFSET, BETA1, TEMP, U
FittedEITpi_3_SA_short, Detunings_3_SA_short = FitEIT_MM_single(FreqsDR, *np.array([popt_3_SA[0],popt_3_SA[1],popt_3_SA[2],popt_3_SA[3],popt_3_SA[4],popt_3_SA[5],popt_3_SA[6],popt_3_SA[7],popt_3_SA[8]]), plot=True)
freqslong = np.arange(min(FreqsDR), max(FreqsDR)+FreqsDR[1]-FreqsDR[0], 0.1*(FreqsDR[1]-FreqsDR[0]))
# popt_3_SA[4]=1
# popt_3_SA[5]=0
# popt_3_SA[6]=0
FittedEITpi_3_SA_long, Detunings_3_SA_long = FitEIT_MM_single(freqslong, *np.array([popt_3_SA[0],popt_3_SA[1],popt_3_SA[2],popt_3_SA[3],popt_3_SA[4],popt_3_SA[5],popt_3_SA[6],popt_3_SA[7],popt_3_SA[8]]), plot=True)
corri = 0
DetuningsUV_vec.append(popt_3_SA[1])
ErrorDetuningsUV_vec.append(np.sqrt(pcov_3_SA[1,1]))
Betas_vec.append(popt_3_SA[6])
ErrorBetas_vec.append(np.sqrt(pcov_3_SA[6,6]))
Temp_vec.append(popt_3_SA[7])
ErrorTemp_vec.append(np.sqrt(pcov_3_SA[7,7]))
Detuningsshort_vec.append(Detunings_3_SA_short)
Counts_vec.append(CountsDR)
Detuningslong_vec.append(Detunings_3_SA_long)
FittedCounts_vec.append(FittedEITpi_3_SA_long)
plt.figure()
plt.errorbar(Detunings_3_SA_short[:], CountsDR, yerr=2*np.sqrt(CountsDR), fmt='o', color='darkgreen', alpha=0.5, capsize=2, markersize=2)
plt.plot([c-corri for c in Detunings_3_SA_long], FittedEITpi_3_SA_long, color='darkolivegreen', linewidth=3, label=f'med {selectedcurve}')
#plt.title(f'Sdop: {round(popt[0], 2)}, Spr: {round(popt[1], 2)}, T: {round(popt[2]*1e3, 2)} mK, detDop: {DetDoppler} MHz')
plt.xlabel('Detuning (MHz)')
plt.ylabel('Counts')
# plt.legend(loc='upper left', fontsize=20)
plt.grid()
print(f'listo med {selectedcurve}')
print(popt_3_SA)
#%%
"""
HAGO SUPER AJUSTES O SEA CON OFFSETXPI Y DETDOPPLER INCLUIDOS
Ajusto med 2, con un poco mas de micromocion supuestamente
"""
from EITfit.lolo_modelo_full_8niveles import PerformExperiment_8levels_MM
from scipy.optimize import curve_fit
import time
"""
SUPER AJUSTE (SA)
"""
phidoppler, titadoppler = 0, 90
phirepump, titarepump = 0, 0
phiprobe = 0
titaprobe = 90
Temp = 0.5e-3
sg = 0.544
sp = 4.5
sr = 0
DetRepump = 0
lw = 0.1
DopplerLaserLinewidth, RepumpLaserLinewidth, ProbeLaserLinewidth = lw, lw, lw #ancho de linea de los laseres
u = 32.5e6
gPS, gPD, = 2*np.pi*21.58e6, 2*np.pi*1.35e6
alpha = 0
drivefreq = 2*np.pi*7.262*1e6
SelectedCurveVec = [2]
popt_SA_vec = []
pcov_SA_vec = []
Detuningsshort_vec = []
Counts_vec = []
Detuningslong_vec = []
FittedCounts_vec = []
Betas_vec = []
ErrorBetas_vec = []
Temp_vec = []
ErrorTemp_vec = []
DetuningsUV_vec = []
ErrorDetuningsUV_vec = []
for selectedcurve in SelectedCurveVec:
FreqsDR = Freqs[selectedcurve]
CountsDR = Counts[selectedcurve]
freqslong = np.arange(min(FreqsDR), max(FreqsDR)+FreqsDR[1]-FreqsDR[0], 0.1*(FreqsDR[1]-FreqsDR[0]))
CircPr = 1
alpha = 0
def FitEIT_MM_single(Freqs, offset, DetDoppler, SG, SP, SCALE1, OFFSET, BETA1, TEMP, U, plot=False):
freqs = [2*f*1e-6-offset for f in Freqs]
# BETA1=0
Detunings, Fluorescence1 = PerformExperiment_8levels_MM(SG, SP, gPS, gPD, DetDoppler, U, DopplerLaserLinewidth, ProbeLaserLinewidth, TEMP, alpha, phidoppler, titadoppler, phiprobe, titaprobe, BETA1, drivefreq, min(freqs), max(freqs)+(freqs[1]-freqs[0]), freqs[1]-freqs[0], circularityprobe=CircPr, plot=False, solvemode=1, detpvec=None)
ScaledFluo1 = np.array([f*SCALE1 + OFFSET for f in Fluorescence1])
if plot:
return ScaledFluo1, Detunings
else:
return ScaledFluo1
#return ScaledFluo1
t1 = time.time()
print(f'Beginning {selectedcurve}')
popt_3_SA, pcov_3_SA = curve_fit(FitEIT_MM_single, FreqsDR[1:], CountsDR, p0=[440, -15, 0.3, 10, 1e4, 500, 2, (np.pi**2)*1e-3, 49.5e6], bounds=((0, -50, 0, 0, 0, 0, 0, 0, 48e6), (1000, 0, 2, 20, 5e4, 2e3, 3, (np.pi**2)*10e-3, 50e6)))
print(f'Ended {selectedcurve}, time elapsed: {round(time.time()-t1)} s')
#popt_3_SA, pcov_3_SA = curve_fit(FitEIT_MM_single, FreqsDR, CountsDR, p0=[430, -25, 0.9, 6.2, 3e4, 1.34e3, 2, (np.pi**2)*1e-3, 32e6], bounds=((0, -50, 0, 0, 0, 0, 0, 0, 25e6), (1000, 0, 2, 20, 5e4, 5e4, 10, (np.pi**2)*10e-3, 40e6)))
popt_SA_vec.append(popt_3_SA)
pcov_SA_vec.append(pcov_3_SA)
#offset, DetDoppler, SG, SP, SCALE1, OFFSET, BETA1, TEMP, U
FittedEITpi_3_SA_short, Detunings_3_SA_short = FitEIT_MM_single(FreqsDR, *np.array([popt_3_SA[0],popt_3_SA[1],popt_3_SA[2],popt_3_SA[3],popt_3_SA[4],popt_3_SA[5],popt_3_SA[6],popt_3_SA[7],popt_3_SA[8]]), plot=True)
freqslong = np.arange(min(FreqsDR), max(FreqsDR)+FreqsDR[1]-FreqsDR[0], 0.1*(FreqsDR[1]-FreqsDR[0]))
# popt_3_SA[4]=1
# popt_3_SA[5]=0
# popt_3_SA[6]=0
FittedEITpi_3_SA_long, Detunings_3_SA_long = FitEIT_MM_single(freqslong, *np.array([popt_3_SA[0],popt_3_SA[1],popt_3_SA[2],popt_3_SA[3],popt_3_SA[4],popt_3_SA[5],popt_3_SA[6],popt_3_SA[7],popt_3_SA[8]]), plot=True)
corri = 0
DetuningsUV_vec.append(popt_3_SA[1])
ErrorDetuningsUV_vec.append(np.sqrt(pcov_3_SA[1,1]))
Betas_vec.append(popt_3_SA[6])
ErrorBetas_vec.append(np.sqrt(pcov_3_SA[6,6]))
Temp_vec.append(popt_3_SA[7])
ErrorTemp_vec.append(np.sqrt(pcov_3_SA[7,7]))
Detuningsshort_vec.append(Detunings_3_SA_short)
Counts_vec.append(CountsDR)
Detuningslong_vec.append(Detunings_3_SA_long)
FittedCounts_vec.append(FittedEITpi_3_SA_long)
#%%
plt.figure()
plt.errorbar(Detunings_3_SA_short[:], CountsDR, yerr=2*np.sqrt(CountsDR), fmt='o', color='darkgreen', alpha=0.5, capsize=2, markersize=2)
plt.plot([c-corri for c in Detunings_3_SA_long], FittedEITpi_3_SA_long, color='darkolivegreen', linewidth=3, label=f'med {selectedcurve}')
#plt.title(f'Sdop: {round(popt[0], 2)}, Spr: {round(popt[1], 2)}, T: {round(popt[2]*1e3, 2)} mK, detDop: {DetDoppler} MHz')
plt.xlabel('Detuning (MHz)')
plt.ylabel('Counts')
# plt.legend(loc='upper left', fontsize=20)
plt.grid()
print(f'listo med {selectedcurve}')
print(popt_3_SA)
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment