pulses#
Classes for handling pulses.
Module Contents#
Classes#
| Contains the logic shared between all the pulses. | |
| Default class for handling pulses. | |
| Interface class for  | |
| If this strategy is used a digital pulse is played on the corresponding marker. | |
| If this strategy is used a digital pulse is played | 
Attributes#
- class PulseStrategyPartial(operation_info: quantify_scheduler.backends.types.qblox.OpInfo, channel_name: str)[source]#
- Bases: - quantify_scheduler.backends.qblox.operation_handling.base.IOperationStrategy,- abc.ABC- Contains the logic shared between all the pulses. - Parameters:
- operation_info – The operation info that corresponds to this pulse. 
- channel_name – Specifies the channel identifier of the hardware config (e.g. complex_output_0). 
 
 - property operation_info: quantify_scheduler.backends.types.qblox.OpInfo[source]#
- Property for retrieving the operation info. 
 
- class GenericPulseStrategy(operation_info: quantify_scheduler.backends.types.qblox.OpInfo, channel_name: str)[source]#
- Bases: - PulseStrategyPartial- Default class for handling pulses. - No assumptions are made with regards to the pulse shape and no optimizations are done. - Parameters:
- operation_info – The operation info that corresponds to this pulse. 
- channel_name – Specifies the channel identifier of the hardware config (e.g. complex_output_0). 
 
 - generate_data(wf_dict: dict[str, Any]) None[source]#
- Generates the data and adds them to the - wf_dict(if not already present).- In complex mode (e.g. - complex_output_0), the NCO produces real-valued data (\(I_\text{IF}\)) on sequencer path_I and imaginary data (\(Q_\text{IF}\)) on sequencer path_Q.\[\begin{split}\underbrace{\begin{bmatrix} \cos\omega t & -\sin\omega t \\ \sin\omega t & \phantom{-}\cos\omega t \end{bmatrix}}_\text{NCO} \begin{bmatrix} I \\ Q \end{bmatrix} = \begin{bmatrix} I \cdot \cos\omega t - Q \cdot\sin\omega t \\ I \cdot \sin\omega t + Q \cdot\cos\omega t \end{bmatrix} \begin{matrix} \ \text{(path_I)} \\ \ \text{(path_Q)} \end{matrix} = \begin{bmatrix} I_\text{IF} \\ Q_\text{IF} \end{bmatrix}\end{split}\]- In real mode (e.g. - real_output_0), the NCO produces \(I_\text{IF}\) on path_I\[\begin{split}\underbrace{\begin{bmatrix} \cos\omega t & -\sin\omega t \\ \sin\omega t & \phantom{-}\cos\omega t \end{bmatrix}}_\text{NCO} \begin{bmatrix} I \\ Q \end{bmatrix} = \begin{bmatrix} I \cdot \cos\omega t - Q \cdot\sin\omega t\\ - \end{bmatrix} \begin{matrix} \ \text{(path_I)} \\ \ \text{(path_Q)} \end{matrix} = \begin{bmatrix} I_\text{IF} \\ - \end{bmatrix}\end{split}\]- Note that the fields marked with - represent waveforms that are not relevant for the mode. - Parameters:
- wf_dict – The dictionary to add the waveform to. N.B. the dictionary is modified in function. 
- Raises:
- ValueError – Data is complex (has an imaginary component), but the channel_name is not set as complex (e.g. - complex_output_0).
 
 - insert_qasm(qasm_program: quantify_scheduler.backends.qblox.qasm_program.QASMProgram) None[source]#
- Add the assembly instructions for the Q1 sequence processor that corresponds to this pulse. - Parameters:
- qasm_program – The QASMProgram to add the assembly instructions to. 
 
 
- class DigitalOutputStrategy(operation_info: quantify_scheduler.backends.types.qblox.OpInfo, channel_name: str)[source]#
- Bases: - PulseStrategyPartial,- abc.ABC- Interface class for - MarkerPulseStrategyand- DigitalPulseStrategy.- Both classes work very similarly, since they are both strategy classes for the ~quantify_scheduler.operations.pulse_library.MarkerPulse. The - MarkerPulseStrategyis for the QCM/QRM modules, and the- DigitalPulseStrategyfor the QTM.
- class MarkerPulseStrategy(operation_info: quantify_scheduler.backends.types.qblox.OpInfo, channel_name: str, module_options: quantify_scheduler.backends.types.qblox.ClusterModuleDescription)[source]#
- Bases: - DigitalOutputStrategy- If this strategy is used a digital pulse is played on the corresponding marker. - insert_qasm(qasm_program: quantify_scheduler.backends.qblox.qasm_program.QASMProgram) None[source]#
- Inserts the QASM instructions to play the marker pulse. Note that for RF modules the first two bits of set_mrk are used as switches for the RF outputs. - Parameters:
- qasm_program – The QASMProgram to add the assembly instructions to. 
 
 
- class DigitalPulseStrategy(operation_info: quantify_scheduler.backends.types.qblox.OpInfo, channel_name: str)[source]#
- Bases: - DigitalOutputStrategy- If this strategy is used a digital pulse is played on the corresponding digital output channel. - insert_qasm(qasm_program: quantify_scheduler.backends.qblox.qasm_program.QASMProgram) None[source]#
- Inserts the QASM instructions to play the marker pulse. Note that for RF modules the first two bits of set_mrk are used as switches for the RF outputs. - Parameters:
- qasm_program – The QASMProgram to add the assembly instructions to.