nv_element ========== .. py:module:: quantify_scheduler.device_under_test.nv_element .. autoapi-nested-parse:: Device elements for NV centers. Currently only for the electronic qubit, but could be extended for other qubits (eg. carbon qubit). Module Contents --------------- Classes ~~~~~~~ .. autoapisummary:: quantify_scheduler.device_under_test.nv_element.Ports quantify_scheduler.device_under_test.nv_element.ClockFrequencies quantify_scheduler.device_under_test.nv_element.SpectroscopyOperationHermiteMW quantify_scheduler.device_under_test.nv_element.ResetSpinpump quantify_scheduler.device_under_test.nv_element.Measure quantify_scheduler.device_under_test.nv_element.ChargeReset quantify_scheduler.device_under_test.nv_element.CRCount quantify_scheduler.device_under_test.nv_element.RxyHermite quantify_scheduler.device_under_test.nv_element.BasicElectronicNVElement .. py:class:: Ports(parent: qcodes.instrument.base.InstrumentBase, name: str, **kwargs: float) Bases: :py:obj:`qcodes.instrument.InstrumentModule` Submodule containing the ports. .. py:attribute:: microwave Name of the element's microwave port. .. py:attribute:: optical_control Port to control the device element with optical pulses. .. py:attribute:: optical_readout Port to readout photons from the device element. .. py:class:: ClockFrequencies(parent: qcodes.instrument.base.InstrumentBase, name: str, **kwargs: float) Bases: :py:obj:`qcodes.instrument.InstrumentModule` Submodule with clock frequencies specifying the transitions to address. .. py:attribute:: f01 Microwave frequency to resonantly drive the electron spin state of a negatively charged diamond NV center from the 0-state to 1-state :cite:t:`DOHERTY20131`. .. py:attribute:: spec Parameter that is swept for a spectroscopy measurement. It does not track properties of the device element. .. py:attribute:: ge0 Transition frequency from the m_s=0 state to the E_x,y state .. py:attribute:: ge1 Transition frequency from the m_s=+-1 state to any of the A_1, A_2, or E_1,2 states .. py:attribute:: ionization Frequency of the green ionization laser for manipulation of the NVs charge state. .. py:class:: SpectroscopyOperationHermiteMW(parent: qcodes.instrument.base.InstrumentBase, name: str, **kwargs: float) Bases: :py:obj:`qcodes.instrument.InstrumentModule` Convert the SpectroscopyOperation into a hermite microwave pulse. This class contains parameters with a certain amplitude and duration for spin-state manipulation. The modulation frequency of the pulse is determined by the clock ``spec`` in :class:`~.ClockFrequencies`. .. py:attribute:: amplitude Amplitude of spectroscopy pulse .. py:attribute:: duration Duration of the MW pulse. .. py:class:: ResetSpinpump(parent: qcodes.instrument.base.InstrumentBase, name: str, **kwargs: float) Bases: :py:obj:`qcodes.instrument.InstrumentModule` Submodule containing parameters to run the spinpump laser with a square pulse. This should reset the NV to the :math:`|0\rangle` state. .. py:attribute:: amplitude Amplitude of reset pulse .. py:attribute:: duration Duration of reset pulse .. py:class:: Measure(parent: qcodes.instrument.base.InstrumentBase, name: str, **kwargs: float) Bases: :py:obj:`qcodes.instrument.InstrumentModule` Submodule containing parameters to read out the spin state of the NV center. Excitation with a readout laser from the :math:`|0\rangle` to an excited state. Acquisition of photons when decaying back into the :math:`|0\rangle` state. .. py:attribute:: pulse_amplitude Amplitude of readout pulse .. py:attribute:: pulse_duration Readout pulse duration .. py:attribute:: acq_duration Duration of the acquisition. .. py:attribute:: acq_delay Delay between the start of the readout pulse and the start of the acquisition. .. py:attribute:: acq_channel Acquisition channel of this device element. .. py:attribute:: time_source Optional time source, in case the :class:`~quantify_scheduler.operations.acquisition_library.Timetag` acquisition protocols are used. Please see that protocol for more information. .. py:attribute:: time_ref Optional time reference, in case :class:`~quantify_scheduler.operations.acquisition_library.Timetag` or :class:`~quantify_scheduler.operations.acquisition_library.TimetagTrace` acquisition protocols are used. Please see those protocols for more information. .. py:class:: ChargeReset(parent: qcodes.instrument.base.InstrumentBase, name: str, **kwargs: float) Bases: :py:obj:`qcodes.instrument.InstrumentModule` Submodule containing parameters to run an ionization laser square pulse to reset the NV. After resetting, the qubit should be in its negatively charged state. .. py:attribute:: amplitude Amplitude of charge reset pulse. .. py:attribute:: duration Duration of the charge reset pulse. .. py:class:: CRCount(parent: qcodes.instrument.base.InstrumentBase, name: str, **kwargs: float | None) Bases: :py:obj:`qcodes.instrument.InstrumentModule` Submodule containing parameters to run the ionization laser and the spin pump laser. This uses a photon count to perform a charge and resonance count. .. py:attribute:: readout_pulse_amplitude Amplitude of readout pulse .. py:attribute:: spinpump_pulse_amplitude Amplitude of spin-pump pulse .. py:attribute:: readout_pulse_duration Readout pulse duration .. py:attribute:: spinpump_pulse_duration Readout pulse duration .. py:attribute:: acq_duration Duration of the acquisition. .. py:attribute:: acq_delay Delay between the start of the readout pulse and the start of the acquisition. .. py:attribute:: acq_channel Default acquisition channel of this device element. .. py:class:: RxyHermite(parent: qcodes.instrument.base.InstrumentBase, name: str, **kwargs: float | None) Bases: :py:obj:`qcodes.instrument.InstrumentModule` Submodule containing parameters to perform an Rxy operation using a Hermite pulse. .. py:attribute:: amp180 Amplitude of :math:`\pi` pulse. .. py:attribute:: skewness First-order amplitude to the Hermite pulse envelope. .. py:attribute:: duration Duration of the pi pulse. .. py:class:: BasicElectronicNVElement(name: str, **kwargs) Bases: :py:obj:`quantify_scheduler.device_under_test.device_element.DeviceElement` A device element representing an electronic qubit in an NV center. The submodules contain the necessary qubit parameters to translate higher-level operations into pulses. Please see the documentation of these classes. .. admonition:: Examples Qubit parameters can be set through submodule attributes .. jupyter-execute:: from quantify_scheduler import BasicElectronicNVElement qubit = BasicElectronicNVElement("q2") qubit.rxy.amp180(0.1) qubit.measure.pulse_amplitude(0.25) qubit.measure.pulse_duration(300e-9) qubit.measure.acq_delay(430e-9) qubit.measure.acq_duration(1e-6) ... .. py:attribute:: spectroscopy_operation :type: SpectroscopyOperationHermiteMW Submodule :class:`~.SpectroscopyOperationHermiteMW`. .. py:attribute:: ports :type: Ports Submodule :class:`~.Ports`. .. py:attribute:: clock_freqs :type: ClockFrequencies Submodule :class:`~.ClockFrequencies`. .. py:attribute:: reset :type: ResetSpinpump Submodule :class:`~.ResetSpinpump`. .. py:attribute:: charge_reset :type: ChargeReset Submodule :class:`~.ChargeReset`. .. py:attribute:: measure :type: Measure Submodule :class:`~.Measure`. .. py:attribute:: pulse_compensation :type: quantify_scheduler.device_under_test.transmon_element.PulseCompensationModule Submodule :class:`~.PulseCompensationModule`. .. py:attribute:: cr_count :type: CRCount Submodule :class:`~.CRCount`. .. py:attribute:: rxy :type: RxyHermite Submodule :class:`~.Rxy`. .. py:method:: _generate_config() -> dict[str, dict[str, quantify_scheduler.backends.graph_compilation.OperationCompilationConfig]] Generate part of the device configuration specific to a single qubit. This method is intended to be used when this object is part of a device object containing multiple elements. .. py:method:: generate_device_config() -> quantify_scheduler.backends.graph_compilation.DeviceCompilationConfig Generate a valid device config for the quantify-scheduler. This makes use of the :func:`~.circuit_to_device.compile_circuit_to_device_with_config_validation` function. This enables the settings of this qubit to be used in isolation. .. note: This config is only valid for single qubit experiments.