spectroscopy_schedules#
Module containing schedules for common spectroscopy experiments.
Module Contents#
Functions#
Generate a schedule for performing heterodyne spectroscopy. |
|
Generate a batched schedule for performing fast heterodyne spectroscopy |
|
|
Generate a schedule for performing two-tone spectroscopy. |
Generate a batched schedule for performing fast two-tone spectroscopy using |
|
|
Generates a schedule for a dark ESR experiment on an NV-center. |
Generates a schedule for a dark ESR experiment on an NV-center, in which |
- heterodyne_spec_sched(pulse_amp: float, pulse_duration: float, frequency: float, acquisition_delay: float, integration_time: float, port: str, clock: str, init_duration: float = 1e-05, repetitions: int = 1, port_out: str | None = None) quantify_scheduler.schedules.schedule.Schedule [source]#
Generate a schedule for performing heterodyne spectroscopy.
- Parameters:
pulse_amp – Amplitude of the spectroscopy pulse in Volt.
pulse_duration – Duration of the spectroscopy pulse in seconds.
frequency – Frequency of the spectroscopy pulse in Hertz.
acquisition_delay – Start of the data acquisition with respect to the start of the spectroscopy pulse in seconds.
integration_time – Integration time of the data acquisition in seconds.
port – Location on the device where the acquisition is performed.
clock – Reference clock used to track the spectroscopy frequency.
init_duration – The relaxation time or dead time.
repetitions – The amount of times the Schedule will be repeated.
port_out – Output port on the device where the pulse should be applied. If None, then use the same as port.
- heterodyne_spec_sched_nco(pulse_amp: float, pulse_duration: float, frequencies: numpy.ndarray, acquisition_delay: float, integration_time: float, port: str, clock: str, init_duration: float = 1e-05, repetitions: int = 1, port_out: str | None = None) quantify_scheduler.schedules.schedule.Schedule [source]#
Generate a batched schedule for performing fast heterodyne spectroscopy using the
SetClockFrequency
operation for doing an NCO sweep.Example use of the
heterodyne_spec_sched_nco
scheduleimport numpy as np from qcodes.instrument.parameter import ManualParameter from quantify_scheduler.gettables import ScheduleGettable from quantify_scheduler.device_under_test.quantum_device import QuantumDevice from quantify_scheduler.device_under_test.transmon_element import BasicTransmonElement from quantify_scheduler.schedules.spectroscopy_schedules import heterodyne_spec_sched_nco quantum_device = QuantumDevice(name="quantum_device") q0 = BasicTransmonElement("q0") quantum_device.add_element(q0) ... # Manual parameter for batched schedule ro_freq = ManualParameter("ro_freq", unit="Hz") ro_freq.batched = True ro_freqs = np.linspace(start=4.5e9, stop=5.5e9, num=11) quantum_device.cfg_sched_repetitions(5) # Configure the gettable qubit = quantum_device.get_element("q0") schedule_kwargs = { "pulse_amp": qubit.measure.pulse_amp(), "pulse_duration": qubit.measure.pulse_duration(), "frequencies": ro_freqs, "acquisition_delay": qubit.measure.acq_delay(), "integration_time": qubit.measure.integration_time(), "port": qubit.ports.readout(), "clock": qubit.name + ".ro", "init_duration": qubit.reset.duration(), } spec_gettable = ScheduleGettable( quantum_device=quantum_device, schedule_function=heterodyne_spec_sched_nco, schedule_kwargs=schedule_kwargs, real_imag=False, batched=True, ) ... quantum_device.close() q0.close()
- Parameters:
pulse_amp – Amplitude of the spectroscopy pulse in Volt.
pulse_duration – Duration of the spectroscopy pulse in seconds.
frequencies – Sample frequencies for the spectroscopy pulse in Hertz.
acquisition_delay – Start of the data acquisition with respect to the start of the spectroscopy pulse in seconds.
integration_time – Integration time of the data acquisition in seconds.
port – Location on the device where the acquisition is performed.
clock – Reference clock used to track the spectroscopy frequency.
init_duration – The relaxation time or dead time.
repetitions – The amount of times the Schedule will be repeated.
port_out – Output port on the device where the pulse should be applied. If None, then use the same as port.
- two_tone_spec_sched(spec_pulse_amp: float, spec_pulse_duration: float, spec_pulse_port: str, spec_pulse_clock: str, spec_pulse_frequency: float, ro_pulse_amp: float, ro_pulse_duration: float, ro_pulse_delay: float, ro_pulse_port: str, ro_pulse_clock: str, ro_pulse_frequency: float, ro_acquisition_delay: float, ro_integration_time: float, init_duration: float = 1e-05, repetitions: int = 1) quantify_scheduler.schedules.schedule.Schedule [source]#
Generate a schedule for performing two-tone spectroscopy.
- Parameters:
spec_pulse_amp – Amplitude of the spectroscopy pulse in Volt.
spec_pulse_duration – Duration of the spectroscopy pulse in seconds.
spec_pulse_port – Location on the device where the spectroscopy pulse should be applied.
spec_pulse_clock – Reference clock used to track the spectroscopy frequency.
spec_pulse_frequency – Frequency of the spectroscopy pulse in Hertz.
ro_pulse_amp – Amplitude of the readout (spectroscopy) pulse in Volt.
ro_pulse_duration – Duration of the readout (spectroscopy) pulse in seconds.
ro_pulse_delay – Time between the end of the spectroscopy pulse and the start of the readout (spectroscopy) pulse.
ro_pulse_port – Location on the device where the readout (spectroscopy) pulse should be applied.
ro_pulse_clock – Reference clock used to track the readout (spectroscopy) frequency.
ro_pulse_frequency – Frequency of the readout (spectroscopy) pulse in Hertz.
ro_acquisition_delay – Start of the data acquisition with respect to the start of the readout pulse in seconds.
ro_integration_time – Integration time of the data acquisition in seconds.
init_duration – The relaxation time or dead time.
repetitions – The amount of times the Schedule will be repeated.
- two_tone_spec_sched_nco(spec_pulse_amp: float, spec_pulse_duration: float, spec_pulse_port: str, spec_pulse_clock: str, spec_pulse_frequencies: numpy.ndarray, ro_pulse_amp: float, ro_pulse_duration: float, ro_pulse_delay: float, ro_pulse_port: str, ro_pulse_clock: str, ro_pulse_frequency: float, ro_acquisition_delay: float, ro_integration_time: float, init_duration: float, repetitions: int = 1) quantify_scheduler.schedules.schedule.Schedule [source]#
Generate a batched schedule for performing fast two-tone spectroscopy using the
SetClockFrequency
operation for doing an NCO sweep.For long-lived qubits, it is advisable to use a small number of repetitions and compensate by doing continuous spectroscopy (low amplitude, long duration pulse with simultaneous long readout).
The “dead-time” between two data points needs to be sufficient to properly reset the qubit. That means that init_duration should be >> T1 (so typically >200us).
Example use of the
two_tone_spec_sched_nco
scheduleimport numpy as np from qcodes.instrument.parameter import ManualParameter from quantify_scheduler.gettables import ScheduleGettable from quantify_scheduler.device_under_test.quantum_device import QuantumDevice from quantify_scheduler.device_under_test.transmon_element import BasicTransmonElement from quantify_scheduler.schedules.spectroscopy_schedules import two_tone_spec_sched_nco quantum_device = QuantumDevice(name="quantum_device") q0 = BasicTransmonElement("q0") quantum_device.add_element(q0) ... # Manual parameter for batched schedule spec_freq = ManualParameter("spec_freq", unit="Hz") spec_freq.batched = True spec_freqs = np.linspace(start=4.5e9, stop=5.5e9, num=11) quantum_device.cfg_sched_repetitions(5) # Configure the gettable qubit = quantum_device.get_element("q0") schedule_kwargs = { "spec_pulse_amp": 0.5, "spec_pulse_duration": 8e-6, "spec_pulse_port": qubit.ports.microwave(), "spec_pulse_clock": qubit.name + ".01", "spec_pulse_frequencies": spec_freqs, "ro_pulse_amp": qubit.measure.pulse_amp(), "ro_pulse_duration": qubit.measure.pulse_duration(), "ro_pulse_delay": 300e-9, "ro_pulse_port": qubit.ports.readout(), "ro_pulse_clock": qubit.name + ".ro", "ro_pulse_frequency": 7.04e9, "ro_acquisition_delay": qubit.measure.acq_delay(), "ro_integration_time": qubit.measure.integration_time(), "init_duration": 300e-6, } spec_gettable = ScheduleGettable( quantum_device=quantum_device, schedule_function=two_tone_spec_sched_nco, schedule_kwargs=schedule_kwargs, real_imag=False, batched=True, ) ... quantum_device.close() q0.close()
- Parameters:
spec_pulse_amp – Amplitude of the spectroscopy pulse in Volt.
spec_pulse_duration – Duration of the spectroscopy pulse in seconds.
spec_pulse_port – Location on the device where the spectroscopy pulse should be applied.
spec_pulse_clock – Reference clock used to track the spectroscopy frequency.
spec_pulse_frequencies – Sample frequencies for the spectroscopy pulse in Hertz.
ro_pulse_amp – Amplitude of the readout (spectroscopy) pulse in Volt.
ro_pulse_duration – Duration of the readout (spectroscopy) pulse in seconds.
ro_pulse_delay – Time between the end of the spectroscopy pulse and the start of the readout (spectroscopy) pulse.
ro_pulse_port – Location on the device where the readout (spectroscopy) pulse should be applied.
ro_pulse_clock – Reference clock used to track the readout (spectroscopy) frequency.
ro_pulse_frequency – Frequency of the readout (spectroscopy) pulse in Hertz.
ro_acquisition_delay – Start of the data acquisition with respect to the start of the readout pulse in seconds.
ro_integration_time – Integration time of the data acquisition in seconds.
init_duration – The relaxation time or dead time.
repetitions – The amount of times the Schedule will be repeated.
- nv_dark_esr_sched(qubit: str, repetitions: int = 1) quantify_scheduler.schedules.schedule.Schedule [source]#
Generates a schedule for a dark ESR experiment on an NV-center.
The spectroscopy frequency is taken from the device element. Please use the clock specified in the spectroscopy_operation entry of the device config.
This schedule can currently not be compiled with the Zurich Instruments backend.
- Parameters:
qubit – Name of the DeviceElement representing the NV-center.
repetitions – Number of schedule repetitions.
- Returns:
Schedule with a single frequency
- nv_dark_esr_sched_nco(qubit: str, spec_clock: str, spec_frequencies: numpy.ndarray, repetitions: int = 1) quantify_scheduler.schedules.schedule.Schedule [source]#
Generates a schedule for a dark ESR experiment on an NV-center, in which the NCO frequency is swept.
Note
This schedule currently cannot be compiled with the Zurich Instruments backend.
- Parameters:
qubit – Name of the DeviceElement representing the NV-center.
spec_clock – Reference clock of the spectroscopy operation.
spec_frequencies – Sample frequencies for the spectroscopy pulse in Hertz.
repetitions – Number of schedule repetitions.
- Returns:
Schedule with NCO frequency sweeping for spectroscopy operation.