I am attempting to implement an experiment to investigate the qubit flux dependence of a flux-tunable transmon.
I am using the following OPENQASM code:
OPENQASM 3.0;
cal {
bit[1] psb;
waveform NYKJPaXjZm = {{0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}, {0.01}};
waveform JALcwYUwFE = gaussian(100.0ns, 25.0ns, 0.1, true);
set_phase(Transmon_77_charge_tx, 0.0);
play(Transmon_77_flux_tx_c0, NYKJPaXjZm);
delay[100.0ns] Transmon_77_charge_tx;
set_frequency(Transmon_77_charge_tx, 4822177211.716727);
play(Transmon_77_charge_tx, JALcwYUwFE);
psb[0] = capture_v0(Transmon_77_readout_rx);
}
Can anyone confirm whether the measurement procedure (capture_v0) occurs while the flux pulse is active?
This is my full code for just one Flux amplitude:
import matplotlib.pyplot as plt
Imports for function fitting
import numpy as np
import scipy.optimize
from scipy.fft import fft, fftfreq
from braket.aws import AwsDevice
from braket.devices import Devices
from braket.parametric import FreeParameter
from braket.pulse import GaussianWaveform, PulseSequence,ArbitraryWaveform
device_name = "ankaa"
qubit_idx = 77
flux_amps =[0.01]
experiment_configuration = {
"ankaa": {
"device_arn": 'arn:aws:braket:us-west-1::device/qpu/rigetti/Ankaa-3',
"qubit": qubit_idx,
"drive_frame": f"Transmon_{qubit_idx}charge_tx",
"readout_frame": f"Transmon{qubit_idx}readout_rx",
"flux_frame": f"Transmon{qubit_idx}_flux_tx_c0",
"flux_waveform": ArbitraryWaveform([flux_amps] * 600),
"spectroscopy_wf": GaussianWaveform(100e-9, 25e-9, 0.1, True),
"rabi_wf": GaussianWaveform(
FreeParameter("length"),
FreeParameter("length") * 0.25,
0.2,
True,
),
},
}
device = AwsDevice(experiment_configuration[device_name]["device_arn"])
qubit = experiment_configuration[device_name]["qubit"]
drive_frame = device.frames[experiment_configuration[device_name]["drive_frame"]]
flux_frame = device.frames[experiment_configuration[device_name]["flux_frame"]]
readout_frame = device.frames[experiment_configuration[device_name]["readout_frame"]]
drive_waveform = experiment_configuration[device_name]["spectroscopy_wf"]
flux_waveform = experiment_configuration[device_name]["flux_waveform"]
frequency = FreeParameter("frequency")
pulse_sequence = (
PulseSequence()
.set_phase(drive_frame, 0.0)
.play(flux_frame, flux_waveform)
.delay(drive_frame, duration=100e-9)
.set_frequency(drive_frame, frequency)
.play(drive_frame, drive_waveform)
.capture_v0(readout_frame)
)
span = 75e6
N_steps = 25
N_shots = 100
frequencies = np.linspace(
drive_frame.frequency - span / 2,
drive_frame.frequency + span / 2,
N_steps,
)
qubit_spectroscopy_sequences = [pulse_sequence(frequency=frequency) for frequency in frequencies]
aaa =qubit_spectroscopy_sequences[0].to_ir()
print(aaa)
#batch = device.run_batch(qubit_spectroscopy_sequences, shots=N_shots)