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: pyquil.quilatom.MemoryReference, right: Union[pyquil.quilatom.MemoryReference, int, float])[source]¶
Bases:
pyquil.quilbase.AbstractInstruction
The abstract class for binary arithmetic classical instructions.
- class pyquil.quilbase.Capture(frame: pyquil.quilatom.Frame, kernel: Union[pyquil.quilatom.WaveformReference, pyquil.quilatom.TemplateWaveform], memory_region: pyquil.quilatom.MemoryReference, nonblocking: bool = False)[source]¶
Bases:
pyquil.quilbase.AbstractInstruction
- get_qubits(indices: bool = True) Set[Union[pyquil.quilatom.Qubit, pyquil.quilatom.QubitPlaceholder, pyquil.quilatom.FormalArgument, int]] [source]¶
- class pyquil.quilbase.ClassicalAdd(left: pyquil.quilatom.MemoryReference, right: Union[pyquil.quilatom.MemoryReference, int, float])[source]¶
Bases:
pyquil.quilbase.ArithmeticBinaryOp
The ADD instruction.
- class pyquil.quilbase.ClassicalAnd(left: pyquil.quilatom.MemoryReference, right: Union[pyquil.quilatom.MemoryReference, int])[source]¶
Bases:
pyquil.quilbase.LogicalBinaryOp
WARNING: The operand order for ClassicalAnd has changed. In pyQuil versions <= 1.9, AND had signature
AND %source %target
Now, AND has signature
AND %target %source
- class pyquil.quilbase.ClassicalComparison(target: pyquil.quilatom.MemoryReference, left: pyquil.quilatom.MemoryReference, right: Union[pyquil.quilatom.MemoryReference, int, float])[source]¶
Bases:
pyquil.quilbase.AbstractInstruction
Abstract class for ternary comparison instructions.
- class pyquil.quilbase.ClassicalConvert(left: pyquil.quilatom.MemoryReference, right: pyquil.quilatom.MemoryReference)[source]¶
Bases:
pyquil.quilbase.AbstractInstruction
The CONVERT instruction.
- op = 'CONVERT'¶
- class pyquil.quilbase.ClassicalDiv(left: pyquil.quilatom.MemoryReference, right: Union[pyquil.quilatom.MemoryReference, int, float])[source]¶
Bases:
pyquil.quilbase.ArithmeticBinaryOp
The DIV instruction.
- class pyquil.quilbase.ClassicalEqual(target: pyquil.quilatom.MemoryReference, left: pyquil.quilatom.MemoryReference, right: Union[pyquil.quilatom.MemoryReference, int, float])[source]¶
Bases:
pyquil.quilbase.ClassicalComparison
The EQ comparison instruction.
- class pyquil.quilbase.ClassicalExchange(left: pyquil.quilatom.MemoryReference, right: pyquil.quilatom.MemoryReference)[source]¶
Bases:
pyquil.quilbase.AbstractInstruction
The EXCHANGE instruction.
- op = 'EXCHANGE'¶
- class pyquil.quilbase.ClassicalExclusiveOr(left: pyquil.quilatom.MemoryReference, right: Union[pyquil.quilatom.MemoryReference, int])[source]¶
Bases:
pyquil.quilbase.LogicalBinaryOp
The XOR instruction.
- class pyquil.quilbase.ClassicalGreaterEqual(target: pyquil.quilatom.MemoryReference, left: pyquil.quilatom.MemoryReference, right: Union[pyquil.quilatom.MemoryReference, int, float])[source]¶
Bases:
pyquil.quilbase.ClassicalComparison
The GE comparison instruction.
- class pyquil.quilbase.ClassicalGreaterThan(target: pyquil.quilatom.MemoryReference, left: pyquil.quilatom.MemoryReference, right: Union[pyquil.quilatom.MemoryReference, int, float])[source]¶
Bases:
pyquil.quilbase.ClassicalComparison
The GT comparison instruction.
- class pyquil.quilbase.ClassicalInclusiveOr(left: pyquil.quilatom.MemoryReference, right: Union[pyquil.quilatom.MemoryReference, int])[source]¶
Bases:
pyquil.quilbase.LogicalBinaryOp
The IOR instruction.
- class pyquil.quilbase.ClassicalLessEqual(target: pyquil.quilatom.MemoryReference, left: pyquil.quilatom.MemoryReference, right: Union[pyquil.quilatom.MemoryReference, int, float])[source]¶
Bases:
pyquil.quilbase.ClassicalComparison
The LE comparison instruction.
- class pyquil.quilbase.ClassicalLessThan(target: pyquil.quilatom.MemoryReference, left: pyquil.quilatom.MemoryReference, right: Union[pyquil.quilatom.MemoryReference, int, float])[source]¶
Bases:
pyquil.quilbase.ClassicalComparison
The LT comparison instruction.
- class pyquil.quilbase.ClassicalLoad(target: pyquil.quilatom.MemoryReference, left: str, right: pyquil.quilatom.MemoryReference)[source]¶
Bases:
pyquil.quilbase.AbstractInstruction
The LOAD instruction.
- op = 'LOAD'¶
- class pyquil.quilbase.ClassicalMove(left: pyquil.quilatom.MemoryReference, right: Union[pyquil.quilatom.MemoryReference, int, float])[source]¶
Bases:
pyquil.quilbase.AbstractInstruction
The MOVE instruction.
- WARNING: In pyQuil 2.0, the order of operands is as MOVE <target> <source>.
In pyQuil 1.9, the order of operands was MOVE <source> <target>. These have reversed.
- op = 'MOVE'¶
- class pyquil.quilbase.ClassicalMul(left: pyquil.quilatom.MemoryReference, right: Union[pyquil.quilatom.MemoryReference, int, float])[source]¶
Bases:
pyquil.quilbase.ArithmeticBinaryOp
The MUL instruction.
- class pyquil.quilbase.ClassicalNeg(target: pyquil.quilatom.MemoryReference)[source]¶
Bases:
pyquil.quilbase.UnaryClassicalInstruction
The NEG instruction.
- class pyquil.quilbase.ClassicalNot(target: pyquil.quilatom.MemoryReference)[source]¶
Bases:
pyquil.quilbase.UnaryClassicalInstruction
The NOT instruction.
- class pyquil.quilbase.ClassicalStore(target: str, left: pyquil.quilatom.MemoryReference, right: Union[pyquil.quilatom.MemoryReference, int, float])[source]¶
Bases:
pyquil.quilbase.AbstractInstruction
The STORE instruction.
- op = 'STORE'¶
- class pyquil.quilbase.ClassicalSub(left: pyquil.quilatom.MemoryReference, right: Union[pyquil.quilatom.MemoryReference, int, float])[source]¶
Bases:
pyquil.quilbase.ArithmeticBinaryOp
The SUB instruction.
- class pyquil.quilbase.Declare(name: str, memory_type: str, memory_size: int = 1, shared_region: Optional[str] = None, offsets: Optional[Iterable[Tuple[int, str]]] = None)[source]¶
Bases:
pyquil.quilbase.AbstractInstruction
A DECLARE directive.
This is printed in Quil as:
DECLARE <name> <memory-type> (SHARING <other-name> (OFFSET <amount> <type>)* )?
- class pyquil.quilbase.DefCalibration(name: str, parameters: List[Union[pyquil.quilatom.Expression, pyquil.quilatom.MemoryReference, numpy.int64, int, float, complex]], qubits: List[Union[pyquil.quilatom.Qubit, pyquil.quilatom.FormalArgument]], instrs: List[pyquil.quilbase.AbstractInstruction])[source]¶
- class pyquil.quilbase.DefFrame(frame: pyquil.quilatom.Frame, direction: Union[str, NoneType] = None, initial_frequency: Union[float, NoneType] = None, hardware_object: Union[str, NoneType] = None, sample_rate: Union[float, NoneType] = None, center_frequency: Union[float, NoneType] = None)[source]¶
Bases:
pyquil.quilbase.AbstractInstruction
- center_frequency: Optional[float] = None¶
The ‘center’ frequency of the frame, used for detuning arithmetic.
- frame: pyquil.quilatom.Frame¶
The frame being defined.
- class pyquil.quilbase.DefGate(name: str, matrix: Union[List[List[Any]], numpy.ndarray, numpy.matrix], parameters: Optional[List[pyquil.quilatom.Parameter]] = None)[source]¶
Bases:
pyquil.quilbase.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() Union[Callable[[...], pyquil.quilbase.Gate], Callable[[...], Callable[[...], pyquil.quilbase.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.
- class pyquil.quilbase.DefGateByPaulis(gate_name: str, parameters: List[pyquil.quilatom.Parameter], arguments: List[Union[pyquil.quilatom.Qubit, pyquil.quilatom.QubitPlaceholder, pyquil.quilatom.FormalArgument, int]], body: PauliSum)[source]¶
Bases:
pyquil.quilbase.DefGate
Records a gate definition as the exponentiation of a PauliSum.
- class pyquil.quilbase.DefMeasureCalibration(qubit: Union[pyquil.quilatom.Qubit, pyquil.quilatom.FormalArgument], memory_reference: Optional[pyquil.quilatom.MemoryReference], instrs: List[pyquil.quilbase.AbstractInstruction])[source]¶
- class pyquil.quilbase.DefPermutationGate(name: str, permutation: Union[List[Union[int, numpy.int64]], numpy.ndarray])[source]¶
Bases:
pyquil.quilbase.DefGate
- class pyquil.quilbase.DefWaveform(name: str, parameters: List[pyquil.quilatom.Parameter], entries: List[Union[numbers.Complex, pyquil.quilatom.Expression]])[source]¶
- class pyquil.quilbase.DelayFrames(frames: List[pyquil.quilatom.Frame], duration: float)[source]¶
- class pyquil.quilbase.DelayQubits(qubits: List[Union[pyquil.quilatom.Qubit, pyquil.quilatom.FormalArgument]], duration: float)[source]¶
- class pyquil.quilbase.Fence(qubits: List[Union[pyquil.quilatom.Qubit, pyquil.quilatom.FormalArgument]])[source]¶
- class pyquil.quilbase.FenceAll[source]¶
Bases:
pyquil.quilbase.SimpleInstruction
The FENCE instruction.
- class pyquil.quilbase.Gate(name: str, params: Iterable[Union[pyquil.quilatom.Expression, pyquil.quilatom.MemoryReference, numpy.int64, int, float, complex]], qubits: Iterable[Union[pyquil.quilatom.Qubit, pyquil.quilatom.QubitPlaceholder, pyquil.quilatom.FormalArgument]])[source]¶
Bases:
pyquil.quilbase.AbstractInstruction
This is the pyQuil object for a quantum gate instruction.
- controlled(control_qubit: Union[pyquil.quilatom.Qubit, pyquil.quilatom.QubitPlaceholder, pyquil.quilatom.FormalArgument, int, Sequence[Union[pyquil.quilatom.Qubit, pyquil.quilatom.QubitPlaceholder, pyquil.quilatom.FormalArgument, int]]]) pyquil.quilbase.Gate [source]¶
Add the CONTROLLED modifier to the gate with the given control qubit or Sequence of control qubits.
- dagger() pyquil.quilbase.Gate [source]¶
Add the DAGGER modifier to the gate.
- forked(fork_qubit: Union[pyquil.quilatom.Qubit, pyquil.quilatom.QubitPlaceholder, pyquil.quilatom.FormalArgument, int], alt_params: List[Union[pyquil.quilatom.Expression, pyquil.quilatom.MemoryReference, numpy.int64, int, float, complex]]) pyquil.quilbase.Gate [source]¶
Add the FORKED modifier to the gate with the given fork qubit and given additional parameters.
- get_qubits(indices: bool = True) Set[Union[pyquil.quilatom.Qubit, pyquil.quilatom.QubitPlaceholder, pyquil.quilatom.FormalArgument, int]] [source]¶
- class pyquil.quilbase.Halt[source]¶
Bases:
pyquil.quilbase.SimpleInstruction
The HALT instruction.
- class pyquil.quilbase.Jump(target: Union[pyquil.quilatom.Label, pyquil.quilatom.LabelPlaceholder])[source]¶
Bases:
pyquil.quilbase.AbstractInstruction
Representation of an unconditional jump instruction (JUMP).
- class pyquil.quilbase.JumpConditional(target: Union[pyquil.quilatom.Label, pyquil.quilatom.LabelPlaceholder], condition: pyquil.quilatom.MemoryReference)[source]¶
Bases:
pyquil.quilbase.AbstractInstruction
Abstract representation of an conditional jump instruction.
- class pyquil.quilbase.JumpTarget(label: Union[pyquil.quilatom.Label, pyquil.quilatom.LabelPlaceholder])[source]¶
Bases:
pyquil.quilbase.AbstractInstruction
Representation of a target that can be jumped to.
- class pyquil.quilbase.JumpUnless(target: Union[pyquil.quilatom.Label, pyquil.quilatom.LabelPlaceholder], condition: pyquil.quilatom.MemoryReference)[source]¶
Bases:
pyquil.quilbase.JumpConditional
The JUMP-UNLESS instruction.
- class pyquil.quilbase.JumpWhen(target: Union[pyquil.quilatom.Label, pyquil.quilatom.LabelPlaceholder], condition: pyquil.quilatom.MemoryReference)[source]¶
Bases:
pyquil.quilbase.JumpConditional
The JUMP-WHEN instruction.
- class pyquil.quilbase.LogicalBinaryOp(left: pyquil.quilatom.MemoryReference, right: Union[pyquil.quilatom.MemoryReference, int])[source]¶
Bases:
pyquil.quilbase.AbstractInstruction
The abstract class for binary logical classical instructions.
- class pyquil.quilbase.Measurement(qubit: Union[pyquil.quilatom.Qubit, pyquil.quilatom.QubitPlaceholder, pyquil.quilatom.FormalArgument], classical_reg: Optional[pyquil.quilatom.MemoryReference])[source]¶
Bases:
pyquil.quilbase.AbstractInstruction
This is the pyQuil object for a Quil measurement instruction.
- get_qubits(indices: bool = True) Set[Union[pyquil.quilatom.Qubit, pyquil.quilatom.QubitPlaceholder, pyquil.quilatom.FormalArgument, int]] [source]¶
- class pyquil.quilbase.Nop[source]¶
Bases:
pyquil.quilbase.SimpleInstruction
The NOP instruction.
- class pyquil.quilbase.Pragma(command: str, args: Iterable[Union[pyquil.quilatom.Qubit, pyquil.quilatom.QubitPlaceholder, pyquil.quilatom.FormalArgument, int, str]] = (), freeform_string: str = '')[source]¶
Bases:
pyquil.quilbase.AbstractInstruction
A PRAGMA instruction.
This is printed in QUIL as:
PRAGMA <command> <arg1> <arg2> ... <argn> "<freeform_string>"
- class pyquil.quilbase.Pulse(frame: pyquil.quilatom.Frame, waveform: Union[pyquil.quilatom.WaveformReference, pyquil.quilatom.TemplateWaveform], nonblocking: bool = False)[source]¶
Bases:
pyquil.quilbase.AbstractInstruction
- get_qubits(indices: bool = True) Set[Union[pyquil.quilatom.Qubit, pyquil.quilatom.QubitPlaceholder, pyquil.quilatom.FormalArgument, int]] [source]¶
- class pyquil.quilbase.RawCapture(frame: pyquil.quilatom.Frame, duration: float, memory_region: pyquil.quilatom.MemoryReference, nonblocking: bool = False)[source]¶
Bases:
pyquil.quilbase.AbstractInstruction
- get_qubits(indices: bool = True) Set[Union[pyquil.quilatom.Qubit, pyquil.quilatom.QubitPlaceholder, pyquil.quilatom.FormalArgument, int]] [source]¶
- class pyquil.quilbase.RawInstr(instr_str: str)[source]¶
Bases:
pyquil.quilbase.AbstractInstruction
A raw instruction represented as a string.
- class pyquil.quilbase.Reset[source]¶
Bases:
pyquil.quilbase.SimpleInstruction
The RESET instruction.
- class pyquil.quilbase.ResetQubit(qubit: Union[pyquil.quilatom.Qubit, pyquil.quilatom.QubitPlaceholder, pyquil.quilatom.FormalArgument])[source]¶
Bases:
pyquil.quilbase.AbstractInstruction
This is the pyQuil object for a Quil targeted reset instruction.
- get_qubits(indices: bool = True) Set[Union[pyquil.quilatom.Qubit, pyquil.quilatom.QubitPlaceholder, pyquil.quilatom.FormalArgument, int]] [source]¶
- class pyquil.quilbase.SetFrequency(frame: pyquil.quilatom.Frame, freq: Union[pyquil.quilatom.Expression, pyquil.quilatom.MemoryReference, numpy.int64, int, float, complex])[source]¶
Bases:
pyquil.quilbase.AbstractInstruction
- get_qubits(indices: bool = True) Set[Union[pyquil.quilatom.Qubit, pyquil.quilatom.QubitPlaceholder, pyquil.quilatom.FormalArgument, int]] [source]¶
- class pyquil.quilbase.SetPhase(frame: pyquil.quilatom.Frame, phase: Union[pyquil.quilatom.Expression, pyquil.quilatom.MemoryReference, numpy.int64, int, float, complex])[source]¶
Bases:
pyquil.quilbase.AbstractInstruction
- get_qubits(indices: bool = True) Set[Union[pyquil.quilatom.Qubit, pyquil.quilatom.QubitPlaceholder, pyquil.quilatom.FormalArgument, int]] [source]¶
- class pyquil.quilbase.SetScale(frame: pyquil.quilatom.Frame, scale: Union[pyquil.quilatom.Expression, pyquil.quilatom.MemoryReference, numpy.int64, int, float, complex])[source]¶
Bases:
pyquil.quilbase.AbstractInstruction
- get_qubits(indices: bool = True) Set[Union[pyquil.quilatom.Qubit, pyquil.quilatom.QubitPlaceholder, pyquil.quilatom.FormalArgument, int]] [source]¶
- class pyquil.quilbase.ShiftFrequency(frame: pyquil.quilatom.Frame, freq: Union[pyquil.quilatom.Expression, pyquil.quilatom.MemoryReference, numpy.int64, int, float, complex])[source]¶
Bases:
pyquil.quilbase.AbstractInstruction
- get_qubits(indices: bool = True) Set[Union[pyquil.quilatom.Qubit, pyquil.quilatom.QubitPlaceholder, pyquil.quilatom.FormalArgument, int]] [source]¶
- class pyquil.quilbase.ShiftPhase(frame: pyquil.quilatom.Frame, phase: Union[pyquil.quilatom.Expression, pyquil.quilatom.MemoryReference, numpy.int64, int, float, complex])[source]¶
Bases:
pyquil.quilbase.AbstractInstruction
- get_qubits(indices: bool = True) Set[Union[pyquil.quilatom.Qubit, pyquil.quilatom.QubitPlaceholder, pyquil.quilatom.FormalArgument, int]] [source]¶
- class pyquil.quilbase.SimpleInstruction[source]¶
Bases:
pyquil.quilbase.AbstractInstruction
Abstract class for simple instructions with no arguments.
- class pyquil.quilbase.SwapPhase(frameA: pyquil.quilatom.Frame, frameB: pyquil.quilatom.Frame)[source]¶
Bases:
pyquil.quilbase.AbstractInstruction
- get_qubits(indices: bool = True) Set[Union[pyquil.quilatom.Qubit, pyquil.quilatom.QubitPlaceholder, pyquil.quilatom.FormalArgument, int]] [source]¶
- class pyquil.quilbase.UnaryClassicalInstruction(target: pyquil.quilatom.MemoryReference)[source]¶
Bases:
pyquil.quilbase.AbstractInstruction
The abstract class for unary classical instructions.
- class pyquil.quilbase.Wait[source]¶
Bases:
pyquil.quilbase.SimpleInstruction
The WAIT instruction.