pyquil.quilbase module¶
Contains the core pyQuil objects that correspond to Quil instructions.
- class pyquil.quilbase.AbstractInstruction[source]¶
Bases:
object
Abstract class for representing single instructions.
- class pyquil.quilbase.ArithmeticBinaryOp(left: MemoryReference, right: MemoryReference | int | float)[source]¶
Bases:
Arithmetic
,AbstractInstruction
The abstract class for binary arithmetic classical instructions.
- property left: MemoryReference¶
- op: ClassVar[ArithmeticOperator]¶
- property right: MemoryReference | int | float¶
- class pyquil.quilbase.Capture(frame: Frame, kernel: WaveformReference | TemplateWaveform, memory_region: MemoryReference, nonblocking: bool = False)[source]¶
Bases:
Capture
,AbstractInstruction
- get_qubits(indices: bool = True) Set[Qubit | QubitPlaceholder | FormalArgument | int] | Set[int] [source]¶
Deprecated since version 4.0: The indices flag will be removed, use get_qubit_indices() instead.
- property kernel: WaveformReference | TemplateWaveform¶
- property memory_region: MemoryReference¶
- property nonblocking: bool¶
- class pyquil.quilbase.ClassicalAdd(left: MemoryReference, right: MemoryReference | int | float)[source]¶
Bases:
ArithmeticBinaryOp
The ADD instruction.
- op: ClassVar[ArithmeticOperator] = Add¶
- class pyquil.quilbase.ClassicalAnd(left: MemoryReference, right: MemoryReference | int)[source]¶
Bases:
LogicalBinaryOp
The AND instruction.
- op: ClassVar[BinaryOperator] = And¶
- class pyquil.quilbase.ClassicalComparison(target: MemoryReference, left: MemoryReference, right: MemoryReference | int | float)[source]¶
Bases:
Comparison
,AbstractInstruction
Abstract class for ternary comparison instructions.
- property left: MemoryReference¶
- op: ClassVar[ComparisonOperator]¶
- property right: MemoryReference | int | float¶
- property target: MemoryReference¶
- class pyquil.quilbase.ClassicalConvert(left: MemoryReference, right: MemoryReference)[source]¶
Bases:
Convert
,AbstractInstruction
The CONVERT instruction.
- property left: MemoryReference¶
- property right: MemoryReference¶
- class pyquil.quilbase.ClassicalDiv(left: MemoryReference, right: MemoryReference | int | float)[source]¶
Bases:
ArithmeticBinaryOp
The DIV instruction.
- op: ClassVar[ArithmeticOperator] = Divide¶
- class pyquil.quilbase.ClassicalEqual(target: MemoryReference, left: MemoryReference, right: MemoryReference | int | float)[source]¶
Bases:
ClassicalComparison
The EQ comparison instruction.
- op: ClassVar[ComparisonOperator] = ComparisonOperator.Equal¶
- class pyquil.quilbase.ClassicalExchange(left: MemoryReference, right: MemoryReference)[source]¶
Bases:
Exchange
,AbstractInstruction
The EXCHANGE instruction.
- property left: MemoryReference¶
- property right: MemoryReference¶
- class pyquil.quilbase.ClassicalExclusiveOr(left: MemoryReference, right: MemoryReference | int)[source]¶
Bases:
LogicalBinaryOp
The XOR instruction.
- op: ClassVar[BinaryOperator] = Xor¶
- class pyquil.quilbase.ClassicalGreaterEqual(target: MemoryReference, left: MemoryReference, right: MemoryReference | int | float)[source]¶
Bases:
ClassicalComparison
The GE comparison instruction.
- op: ClassVar[ComparisonOperator] = ComparisonOperator.GreaterThanOrEqual¶
- class pyquil.quilbase.ClassicalGreaterThan(target: MemoryReference, left: MemoryReference, right: MemoryReference | int | float)[source]¶
Bases:
ClassicalComparison
The GT comparison instruction.
- op: ClassVar[ComparisonOperator] = ComparisonOperator.GreaterThan¶
- class pyquil.quilbase.ClassicalInclusiveOr(left: MemoryReference, right: MemoryReference | int)[source]¶
Bases:
LogicalBinaryOp
The IOR instruction.
- op: ClassVar[BinaryOperator] = Ior¶
- class pyquil.quilbase.ClassicalLessEqual(target: MemoryReference, left: MemoryReference, right: MemoryReference | int | float)[source]¶
Bases:
ClassicalComparison
The LE comparison instruction.
- op: ClassVar[ComparisonOperator] = ComparisonOperator.LessThanOrEqual¶
- class pyquil.quilbase.ClassicalLessThan(target: MemoryReference, left: MemoryReference, right: MemoryReference | int | float)[source]¶
Bases:
ClassicalComparison
The LT comparison instruction.
- op: ClassVar[ComparisonOperator] = ComparisonOperator.LessThan¶
- class pyquil.quilbase.ClassicalLoad(target: MemoryReference, left: str, right: MemoryReference)[source]¶
Bases:
Load
,AbstractInstruction
The LOAD instruction.
- property left: str¶
- property right: MemoryReference¶
- property target: MemoryReference¶
- class pyquil.quilbase.ClassicalMove(left: MemoryReference, right: MemoryReference | int | float)[source]¶
Bases:
Move
,AbstractInstruction
The MOVE instruction.
- property left: MemoryReference¶
- property right: MemoryReference | int | float¶
- class pyquil.quilbase.ClassicalMul(left: MemoryReference, right: MemoryReference | int | float)[source]¶
Bases:
ArithmeticBinaryOp
The MUL instruction.
- op: ClassVar[ArithmeticOperator] = Multiply¶
- class pyquil.quilbase.ClassicalNeg(target: MemoryReference)[source]¶
Bases:
UnaryClassicalInstruction
The NEG instruction.
- op: ClassVar[UnaryOperator] = Neg¶
- class pyquil.quilbase.ClassicalNot(target: MemoryReference)[source]¶
Bases:
UnaryClassicalInstruction
The NOT instruction.
- op: ClassVar[UnaryOperator] = Not¶
- class pyquil.quilbase.ClassicalStore(target: str, left: MemoryReference, right: MemoryReference | int | float)[source]¶
Bases:
Store
,AbstractInstruction
The STORE instruction.
- property left: MemoryReference¶
- property right: MemoryReference | int | float¶
- property target: str¶
- class pyquil.quilbase.ClassicalSub(left: MemoryReference, right: MemoryReference | int | float)[source]¶
Bases:
ArithmeticBinaryOp
The SUB instruction.
- op: ClassVar[ArithmeticOperator] = Subtract¶
- class pyquil.quilbase.Declare(name: str, memory_type: str, memory_size: int = 1, shared_region: str | None = None, offsets: Sequence[Tuple[int, str]] | None = None)[source]¶
Bases:
Declaration
,AbstractInstruction
A DECLARE directive.
This is printed in Quil as:
DECLARE <name> <memory-type> (SHARING <other-name> (OFFSET <amount> <type>)* )?
- property memory_size: int¶
- property memory_type: str¶
- property offsets: List[Tuple[int, str]]¶
- class pyquil.quilbase.DefCalibration(name: str, parameters: Sequence[Expression | MemoryReference | int | float | complex | number], qubits: Sequence[Qubit | FormalArgument], instrs: Sequence[AbstractInstruction], modifiers: List[GateModifier] | None = None)[source]¶
Bases:
Calibration
,AbstractInstruction
- property instrs: List[AbstractInstruction]¶
- property parameters: Sequence[Expression | MemoryReference | int | float | complex | number]¶
- property qubits: List[Qubit | QubitPlaceholder | FormalArgument | int]¶
- class pyquil.quilbase.DefCircuit(name: str, parameters: List[Parameter], qubits: List[FormalArgument], instructions: List[AbstractInstruction])[source]¶
Bases:
CircuitDefinition
,AbstractInstruction
- property instructions: List[AbstractInstruction]¶
- property qubit_variables: List[FormalArgument]¶
- class pyquil.quilbase.DefFrame(frame: Frame, direction: str | None = None, initial_frequency: float | None = None, hardware_object: str | None = None, sample_rate: float | None = None, center_frequency: float | None = None, enable_raw_capture: str | None = None, channel_delay: float | None = None)[source]¶
Bases:
FrameDefinition
,AbstractInstruction
- property center_frequency: Frame¶
Deprecated since version 4.0: Quil now supports generic key/value pairs in DEFFRAMEs. Use get_attribute(‘CENTER-FREQUENCY’) instead.
- property channel_delay: Frame¶
Deprecated since version 4.0: Quil now supports generic key/value pairs in DEFFRAMEs. Use get_attribute(‘CHANNEL-DELAY’) instead.
- property direction: str | None¶
Deprecated since version 4.0: Quil now supports generic key/value pairs in DEFFRAMEs. Use get_attribute(‘DIRECTION’) instead.
- property hardware_object: str | None¶
Deprecated since version 4.0: Quil now supports generic key/value pairs in DEFFRAMEs. Use get_attribute(‘HARDWARE-OBJECT’) instead.
- property initial_frequency: float | None¶
Deprecated since version 4.0: Quil now supports generic key/value pairs in DEFFRAMEs. Use set_attribute(‘INITIAL-FREQUENCY’) instead.
- class pyquil.quilbase.DefGate(name: str, matrix: List[List[Expression]] | ndarray | matrix, parameters: List[Parameter] | None = None)[source]¶
Bases:
GateDefinition
,AbstractInstruction
A DEFGATE directive.
- Parameters:
name – The name of the newly defined gate.
matrix – The matrix defining this gate.
parameters – list of parameters that are used in this gate
- get_constructor() Callable[[...], Gate] | Callable[[...], Callable[[...], Gate]] [source]¶
- Returns:
A function that constructs this gate on variable qubit indices. E.g. mygate.get_constructor()(1) applies the gate to qubit 1.
- property matrix: ndarray¶
- class pyquil.quilbase.DefGateByPaulis(gate_name: str, parameters: List[Parameter], arguments: List[Qubit | QubitPlaceholder | FormalArgument | int], body: PauliSum)[source]¶
Bases:
DefGate
Records a gate definition as the exponentiation of a PauliSum.
- property arguments: List[FormalArgument]¶
- class pyquil.quilbase.DefMeasureCalibration(qubit: Qubit | FormalArgument | None, memory_reference: MemoryReference, instrs: List[AbstractInstruction])[source]¶
Bases:
MeasureCalibrationDefinition
,AbstractInstruction
- property instrs: List[AbstractInstruction]¶
- property memory_reference: MemoryReference | None¶
- property qubit: Qubit | QubitPlaceholder | FormalArgument | int | None¶
- class pyquil.quilbase.DefPermutationGate(name: str, permutation: List[int] | ndarray)[source]¶
Bases:
DefGate
- property permutation: List[int]¶
- class pyquil.quilbase.DefWaveform(name: str, parameters: List[Parameter], entries: List[complex | Expression])[source]¶
Bases:
WaveformDefinition
,AbstractInstruction
- property entries: Sequence[Expression | MemoryReference | int | float | complex | number]¶
- class pyquil.quilbase.Delay(frames: List[Frame], qubits: Sequence[int | Qubit | FormalArgument], duration: float)[source]¶
Bases:
Delay
,AbstractInstruction
- property duration: float¶
- property qubits: List[Qubit | QubitPlaceholder | FormalArgument | int]¶
- class pyquil.quilbase.DelayQubits(qubits: Sequence[Qubit | FormalArgument], duration: float)[source]¶
Bases:
Delay
- class pyquil.quilbase.Fence(qubits: List[Qubit | FormalArgument])[source]¶
Bases:
Fence
,AbstractInstruction
- property qubits: List[Qubit | QubitPlaceholder | FormalArgument | int]¶
- class pyquil.quilbase.Gate(name: str, params: Sequence[Expression | MemoryReference | int | float | complex | number], qubits: Sequence[Qubit | QubitPlaceholder | FormalArgument | int], modifiers: Sequence[GateModifier] = [])[source]¶
Bases:
Gate
,AbstractInstruction
This is the pyQuil object for a quantum gate instruction.
- controlled(control_qubit: Qubit | Qubit | QubitPlaceholder | FormalArgument | int | Sequence[Qubit | QubitPlaceholder | FormalArgument | int | Qubit]) Gate [source]¶
Add the CONTROLLED modifier to the gate with the given control qubit or Sequence of control qubits.
- forked(fork_qubit: Qubit | Qubit | QubitPlaceholder | FormalArgument | int, alt_params: Sequence[Expression | MemoryReference | int | float | complex | number] | Sequence[Expression]) Gate [source]¶
Add the FORKED modifier to the gate with the given fork qubit and given additional parameters.
- get_qubits(indices: bool = True) Sequence[Qubit | QubitPlaceholder | FormalArgument | int] [source]¶
Deprecated since version 4.0: The indices flag will be removed, use get_qubit_indices() instead.
- property modifiers: List[str]¶
- property params: Sequence[Expression | MemoryReference | int | float | complex | number]¶
- property qubits: List[Qubit | QubitPlaceholder | FormalArgument | int]¶
- class pyquil.quilbase.Halt[source]¶
Bases:
SimpleInstruction
The HALT instruction.
- instruction: ClassVar[Instruction] = Halt¶
- class pyquil.quilbase.Include(filename)[source]¶
Bases:
Include
,AbstractInstruction
- class pyquil.quilbase.Jump(target: Label | LabelPlaceholder)[source]¶
Bases:
Jump
,AbstractInstruction
Representation of an unconditional jump instruction (JUMP).
- property target: Label | LabelPlaceholder¶
- class pyquil.quilbase.JumpTarget(label: Label | LabelPlaceholder)[source]¶
Bases:
Label
,AbstractInstruction
Representation of a target that can be jumped to.
- property label: Label | LabelPlaceholder¶
- class pyquil.quilbase.JumpUnless(target: Label | LabelPlaceholder, condition: MemoryReference)[source]¶
Bases:
JumpUnless
,AbstractInstruction
The JUMP-UNLESS instruction.
- property condition: MemoryReference¶
- property target: Label | LabelPlaceholder¶
- class pyquil.quilbase.JumpWhen(target: Label | LabelPlaceholder, condition: MemoryReference)[source]¶
Bases:
JumpWhen
,AbstractInstruction
The JUMP-WHEN instruction.
- property condition: MemoryReference¶
- property target: Label | LabelPlaceholder¶
- class pyquil.quilbase.LogicalBinaryOp(left: MemoryReference, right: MemoryReference | int)[source]¶
Bases:
BinaryLogic
,AbstractInstruction
The abstract class for binary logical classical instructions.
- property left: MemoryReference¶
- op: ClassVar[BinaryOperator]¶
- property right: MemoryReference | int¶
- class pyquil.quilbase.Measurement(qubit: Qubit | QubitPlaceholder | FormalArgument | int, classical_reg: MemoryReference | None)[source]¶
Bases:
Measurement
,AbstractInstruction
This is the pyQuil object for a Quil measurement instruction.
- property classical_reg: MemoryReference | None¶
- get_qubits(indices: bool = True) Set[Qubit | QubitPlaceholder | FormalArgument | int] | Set[int] [source]¶
Deprecated since version 4.0: The indices flag will be removed, use get_qubit_indices() instead.
- property qubit: Qubit | QubitPlaceholder | FormalArgument | int¶
- class pyquil.quilbase.Nop[source]¶
Bases:
SimpleInstruction
The NOP instruction.
- instruction: ClassVar[Instruction] = Nop¶
- class pyquil.quilbase.Pragma(command: str, args: Sequence[Qubit | FormalArgument | int | str] = (), freeform_string: str = '')[source]¶
Bases:
Pragma
,AbstractInstruction
A PRAGMA instruction.
This is printed in QUIL as:
PRAGMA <command> <arg1> <arg2> … <argn> “<freeform_string>”
- property args: Tuple[Qubit | QubitPlaceholder | FormalArgument | int]¶
- property command: str¶
- property freeform_string: str¶
- class pyquil.quilbase.Pulse(frame: Frame, waveform: WaveformReference | TemplateWaveform, nonblocking: bool = False)[source]¶
Bases:
Pulse
,AbstractInstruction
- get_qubits(indices: bool = True) Set[Qubit | QubitPlaceholder | FormalArgument | int] | Set[int] [source]¶
Deprecated since version 4.0: The indices flag will be removed, use get_qubit_indices() instead.
- property nonblocking: bool¶
- property waveform: WaveformReference | TemplateWaveform¶
- class pyquil.quilbase.RawCapture(frame: Frame, duration: float, memory_region: MemoryReference, nonblocking: bool = False)[source]¶
Bases:
RawCapture
,AbstractInstruction
- property duration: complex¶
- get_qubits(indices: bool = True) Set[Qubit | QubitPlaceholder | FormalArgument | int] | Set[int] [source]¶
Deprecated since version 4.0: The indices flag will be removed, use get_qubit_indices() instead.
- property memory_region: MemoryReference¶
- property nonblocking: bool¶
- class pyquil.quilbase.Reset(qubit: Qubit | QubitPlaceholder | FormalArgument | int | None = None)[source]¶
Bases:
Reset
,AbstractInstruction
The RESET instruction.
- get_qubits(indices: bool = True) Set[Qubit | QubitPlaceholder | FormalArgument | int] | None [source]¶
Deprecated since version 4.0: The indices flag will be removed, use get_qubit_indices() instead.
- property qubit: Qubit | QubitPlaceholder | FormalArgument | int | None¶
- class pyquil.quilbase.ResetQubit(qubit: Qubit | QubitPlaceholder | FormalArgument | int)[source]¶
Bases:
Reset
This is the pyQuil object for a Quil targeted reset instruction.
- class pyquil.quilbase.SetFrequency(frame: Frame, freq: Expression | MemoryReference | int | float | complex | number)[source]¶
Bases:
SetFrequency
,AbstractInstruction
- property freq: Expression | MemoryReference | int | float | complex | number¶
- get_qubits(indices: bool = True) Set[Qubit | QubitPlaceholder | FormalArgument | int] | Set[int] [source]¶
Deprecated since version 4.0: The indices flag will be removed, use get_qubit_indices() instead.
- class pyquil.quilbase.SetPhase(frame: Frame, phase: Expression | MemoryReference | int | float | complex | number)[source]¶
Bases:
SetPhase
,AbstractInstruction
- get_qubits(indices: bool = True) Set[Qubit | QubitPlaceholder | FormalArgument | int] | Set[int] [source]¶
Deprecated since version 4.0: The indices flag will be removed, use get_qubit_indices() instead.
- property phase: Expression | MemoryReference | int | float | complex | number¶
- class pyquil.quilbase.SetScale(frame: Frame, scale: Expression | MemoryReference | int | float | complex | number)[source]¶
Bases:
SetScale
,AbstractInstruction
- get_qubits(indices: bool = True) Set[Qubit | QubitPlaceholder | FormalArgument | int] | Set[int] [source]¶
Deprecated since version 4.0: The indices flag will be removed, use get_qubit_indices() instead.
- property scale: Expression | MemoryReference | int | float | complex | number¶
- class pyquil.quilbase.ShiftFrequency(frame: Frame, freq: Expression | MemoryReference | int | float | complex | number)[source]¶
Bases:
ShiftFrequency
,AbstractInstruction
- property freq: Expression | MemoryReference | int | float | complex | number¶
- get_qubits(indices: bool = True) Set[Qubit | QubitPlaceholder | FormalArgument | int] | Set[int] [source]¶
Deprecated since version 4.0: The indices flag will be removed, use get_qubit_indices() instead.
- class pyquil.quilbase.ShiftPhase(frame: Frame, phase: Expression | MemoryReference | int | float | complex | number)[source]¶
Bases:
ShiftPhase
,AbstractInstruction
- get_qubits(indices: bool = True) Set[Qubit | QubitPlaceholder | FormalArgument | int] | Set[int] [source]¶
Deprecated since version 4.0: The indices flag will be removed, use get_qubit_indices() instead.
- property phase: Expression | MemoryReference | int | float | complex | number¶
- class pyquil.quilbase.SimpleInstruction[source]¶
Bases:
AbstractInstruction
Abstract class for simple instructions with no arguments.
- instruction: ClassVar[Instruction]¶
- class pyquil.quilbase.SwapPhases(frameA: Frame, frameB: Frame)[source]¶
Bases:
SwapPhases
,AbstractInstruction
- get_qubits(indices: bool = True) Set[Qubit | QubitPlaceholder | FormalArgument | int] | Set[int] [source]¶
Deprecated since version 4.0: The indices flag will be removed, use get_qubit_indices() instead.
- class pyquil.quilbase.UnaryClassicalInstruction(target: MemoryReference)[source]¶
Bases:
UnaryLogic
,AbstractInstruction
The abstract class for unary classical instructions.
- op: ClassVar[UnaryOperator]¶
- property target: MemoryReference¶
- class pyquil.quilbase.Wait[source]¶
Bases:
SimpleInstruction
The WAIT instruction.
- instruction: ClassVar[Instruction] = Wait¶