In [2]:
from IPython.display import Image
from IPython.core.display import HTML
from urllib import request
HTML(request.urlopen('http://bit.ly/1Bf5Hft').read().decode('UTF-8'))
from numpy import linspace, sqrt, log, cos
from scipy.constants import epsilon_0, h, hbar, pi, elementary_charge, c
from scipy.special import ellipk
from scipy import signal
import plotly.plotly as py
from plotly.tools import mpl_to_plotly
from plotly.offline import init_notebook_mode, iplot_mpl, iplot
init_notebook_mode()
import sys
sys.path.append('/mnt/labshare/Programs/python/HelperFunctions/')
from myfunctions import *
from plottingFunctions import *
from plotlylayouts import *
import peakutils
In [3]:
init_notebook_mode()
In [6]:
from IPython.core.display import HTML
from urllib import request
HTML(request.urlopen('http://bit.ly/1Bf5Hft').read().decode('UTF-8'))
Out[6]:
In [6]:
Image("CH025 Images/Chip Layout.png")
Out[6]:
In [10]:
tls.embed("plourdelab", '494')
Out[10]:
Both qubits should have identical junction loops and capacitor bodies. However, Q1 is placed ~1 mm further in along the length of the cavity to reduce coupling and have a different $g$.
Only a few data points were taken in order to perform the $\chi$ shift measurement, but we can still fit the data points to a qubit energy curve.
The frequency of the qubit is given by
$$ E_{01} = \sqrt{ 8 E_C * E_J} $$where
$$ E_J = \left| E_{J\Sigma}\cos{\left(\frac{\pi\phi}{\phi_0}\right)}\sqrt{ 1 + d^2\tan^2{\left(\frac{\pi\phi}{\phi_0}\right)} }\right| $$After converting the DC Source voltage to flux $\phi$ with the mutual inductance, we can fit to the above equation using $d, E_C, E_{J\Sigma}$
In [11]:
tls.embed('plourdelab', '489')
Out[11]:
In [12]:
tls.embed('plourdelab', '487')
Out[12]:
Sample T1
In [36]:
tls.embed('plourdelab', '485')
Out[36]:
In [5]:
tls.embed('plourdelab', '493')
Out[5]:
Qubit 2 seems to have lower $T_1$ values, and currently we are attributing this to coupling to the drive line (before the resonator capacitor).
A sample T1 on Qubit 1 at 4.3 GHz.
In [6]:
g1 = 70.7e6
g2 = 94.1e6
kappa = 500e3
wr = 4.994e9
wq = linspace(4, 5, 101)*1e9
gamma1 = kappa * g1**2 / (wq-wr)**2
gamma2 = kappa * g2**2 / (wq-wr)**2
data = []
layout, trace = LinePlot('Purcell Limit on T1', x=wq, y=1/gamma1)
trace.update(mode='lines', name='Q1');data.append(trace)
layout, trace = LinePlot('Purcell Limit on T1', x=wq, y=1/gamma2)
trace.update(mode='lines', name='Q2');data.append(trace)
iplot(Figure(data=data, layout=layout))
In [44]:
d = 2 * elementary_charge * 40e-6 #40 um
t1rad = 12*pi*epsilon_0*hbar*c**3 / (d**2 * (wq*2*pi)**3)
layout, trace = LinePlot("Spontaneous Emission Limit", x=wq, y=t1rad)
trace.update(mode='lines')
iplot(Figure(data=[trace], layout=layout))
The two qubits are coupled to the cavity at different points, giving us different coupling strengths and therefore different $g$s. The coupling strength should follow from amplitude of a standing wave in the cavity at any given point. We wish to see if our $g$s follow this.
$$ g_i \propto V_{0,i} $$and from our data,
First, let's plot how a standing wave looks in our cavity as a function of position from the input of the cavity. The cavity is 20 mm long. Q1 is centered 1.69 mm from the input, and Q2 is centered 740 $\mu m$ from the input.
So, comparing the two, we should have.
$$ \frac{g_2}{g_1} = \frac{\cos{(0.74 \pi)}}{\cos{(1.69 \pi)}} $$plugging in our values for $g_1$ and $g_2$, we get
$$ 1.3308 \approx 1.2178 $$which is pretty close ($<10\%$).
In [23]:
x = linspace(0, 20000, 1001)
y = cos(pi*x/20000)
data = []
layout, trace = LinePlot('Wave amplitude in cavity', x=x, y=y)
trace.update(mode='lines', name="Amplitude in Cavity")
data.append(trace)
layout2, trace = LinePlot('Q1 Position', x=[1690, 1690], y=[-1, 1])
trace.update(mode='lines', name="Q1")
data.append(trace)
layout2, trace = LinePlot('Q2 Position', x=[740, 740], y=[-1, 1])
trace.update(mode='lines', name="Q2")
data.append(trace)
iplot(Figure(data=data, layout=layout))
Maybe we can get them closer by integrating the voltage along the length of the capacitance, instead of picking the value of the center.
$$ \frac{g_2}{g_1} \approx \frac{\int_{1.495}^{1.89}{\cos{\left(\frac{x \pi}{40}\right)} \mathrm{d}x}}{\int_{0.535}^{0.945}{\cos{\left(\frac{x \pi}{40}\right)} \mathrm{d}x}} $$And we get
$$ \frac{g_2}{g_1} \approx \frac{0.39}{.409} $$
In [8]:
.409/.39
Out[8]:
In [5]:
tls.embed('plourdelab', '483')
Out[5]:
In [26]:
tls.embed('plourdelab', '465')
Out[26]:
In [4]:
tls.embed('plourdelab', '481')
Out[4]:
Picking a power that shows the best contrast between peaks (by eye).
In [24]:
tls.embed('plourdelab', '497')
Out[24]:
In [6]:
iplot(py.get_figure('plourdelab', '479'))
In [86]:
fig = py.get_figure('plourdelab', '479')
In [196]:
i = 4
x = array(fig.data[i].x)
data = -array(fig.data[i].y)
# Calculate some background from first few points
bg = mean(data[0:50])
data = data-bg
amp = fig.data[i].name
layout, trace = LinePlot("Amp = " + amp, x=x, y=data)
trace.update(mode='lines')
## Filter data
fdata = signal.savgol_filter(data, 5, 3)
asd, ftrace = LinePlot("", x=x, y=fdata)
ftrace.update(mode='lines')
## Find peaks
ind = peakutils.indexes(fdata, thres=.45, min_dist=10)
print("Found {} Peaks".format(len(ind)))
layout2, trace2 = LinePlot('peakutils', x=x[ind], y=fdata[ind])
iplot(Figure(data=[trace2, ftrace], layout=layout))
Stark shift on qubit per photon is
$$ 2g^2 / \Delta $$Given $g=94$ MHz, and $\Delta=700$ MHz, we expect a shift of 4 MHz per photon. Plotting the
In [66]:
g = 94
delta = 700
starkshift = 2 * g**2 / delta / (2*pi)
print("We expect a shift of {:f} MHz".format(starkshift))
In [178]:
amps = []
for i in fig.data:
amps.append(i.name)
In [202]:
filtereddata = []
xs = []
ys = []
f1 = 5
f2 = 3
for i, amp in enumerate(fig.data):
amp = amp.y
filtered = signal.savgol_filter(array(amp) - i, f1, f2)
filtereddata.append(filtered)
ind = peakutils.indexes(filtered, thres=.45, min_dist=10)
xs.append(x[ind[1]])
ys.append(amps[i])
layout, trace = HeatmapPlot("Filtered Data")
trace.x = x;trace.y=amps;trace.z=filtereddata
trace2 = Scatter(x=xs, y=ys)
iplot(Figure(data=[trace, trace2], layout=layout))
In [192]:
ys
Out[192]:
In [ ]: