Public API
MonitoredQuantumCircuits
MonitoredQuantumCircuits.CNOT Type
CNOT() <: Operation
The CNOT operation is a two-qubit gate that flips the target qubit if the control qubit is in the |1⟩ state.
sourceMonitoredQuantumCircuits.ChainGeometry Type
A data structure representing a one-dimensional chain geometry of qubits.
Constructors
ChainGeometry(Periodic, size::Integer)
Constructs a chain geometry with periodic boundary conditions (i.e., a closed loop).
ChainGeometry(Open, size::Integer)
Constructs a chain geometry with open boundary conditions (i.e., a linear chain).
Arguments
size::Integer
: The number of qubits in the chain.
Examples
# Create a chain of 8 qubits with periodic boundaries
geometry = ChainGeometry(Periodic, 8)
# Create a chain of 10 qubits with open boundaries
geometry = ChainGeometry(Open, 10)
MonitoredQuantumCircuits.Geometry Type
Geometry
Abstract type for the geometry of the qubits.
sourceMonitoredQuantumCircuits.H Type
H() <: Operation
The H operation is a single-qubit gate that creates superposition by applying a Hadamard transformation.
sourceMonitoredQuantumCircuits.HoneycombGeometry Type
A data structure representing a honeycomb lattice geometry.
Constructors
HoneycombGeometry(Periodic, sizeX::Integer, sizeY::Integer)
Create a honeycomb geometry with periodic boundary conditions.
HoneycombGeometry(Open, sizeX::Integer, sizeY::Integer)
Create a honeycomb geometry with open boundary conditions.
Arguments
sizeX::Integer
: Width of the latticesizeY::Integer
: Height of the lattice (must be even)
Examples
# Create a 4×4 honeycomb lattice with periodic boundaries
geometry = HoneycombGeometry(Periodic, 4, 4)
# Create a 6×6 honeycomb lattice with open boundaries
geometry = HoneycombGeometry(Open, 6, 6)
MonitoredQuantumCircuits.I Type
I() <: Operation
The I operation is a single-qubit gate that represents the identity operation, leaving the qubit unchanged.
sourceMonitoredQuantumCircuits.IBMQ_Falcon Type
A data structure representing the geometry of the IBM Quantum Falcon QPU.
Constructors
IBMQ_Falcon()
MonitoredQuantumCircuits.MX Type
MX() <: Operation
The MX operation is a single-qubit measurement operation that measures the state of a qubit in the X basis.
sourceMonitoredQuantumCircuits.MXX Type
MXX() <: MeasurementOperation
The MXX operation is a two-qubit gate that applies an XX interaction between the two qubits. It is a type of measurement operation that can be used in quantum circuits.
sourceMonitoredQuantumCircuits.MY Type
MY() <: Operation
The MY operation is a single-qubit measurement operation that measures the state of a qubit in the Y basis.
sourceMonitoredQuantumCircuits.MYY Type
MYY() <: MeasurementOperation
The MYY operation is a two-qubit gate that applies a YY interaction between the two qubits. The operation is used to measure the state of the qubits in the YY basis.
sourceMonitoredQuantumCircuits.MZ Type
MZ() <: Operation
The MZ operation is a single-qubit measurement operation that measures the state of a qubit in the Z basis.
sourceMonitoredQuantumCircuits.MZZ Type
MZZ() <: MeasurementOperation
The MZZ operation is a two-qubit measurement operation that measures the state of two qubits in the ZZ basis. The first qubit is the target qubit, and the second qubit is an ancilla qubit that is used to store the result of the operation.
sourceMonitoredQuantumCircuits.MnPauli Type
MnPauli{N} <: MeasurementOperation
The MnPauli operation is a N-qubit measurement operation that measures the state of multiple qubits in the Pauli basis.
sourceMonitoredQuantumCircuits.ShastrySutherlandGeometry Type
A data structure representing a Shastry-Sutherland lattice geometry.
Constructors
ShastrySutherlandGeometry(Periodic, sizeX::Integer, sizeY::Integer)
Construct a Shastry-Sutherland geometry with periodic boundary conditions.
Arguments
sizeX::Integer
: The number of sites in the x directionsizeY::Integer
: The number of sites in the y direction
Examples
# Create a 4×4 Shastry-Sutherland lattice with periodic boundaries
geometry = ShastrySutherlandGeometry(Periodic, 4, 4)
MonitoredQuantumCircuits.WeakMXX Type
WeakMXX <: MeasurementOperation
The WeakMXX operation is a three-qubit gate that applies a weak XX interaction between the first two qubits, with a strength determined by the parameter t. The third qubit is an ancilla qubit that is used to store the result of the operation.
sourceMonitoredQuantumCircuits.WeakMYY Type
WeakMYY <: MeasurementOperation
The WeakMYY operation is a three-qubit gate that applies a weak YY interaction between the first two qubits, with a strength determined by the parameter t. The third qubit is an ancilla qubit that is used to store the result of the operation.
sourceMonitoredQuantumCircuits.WeakMZZ Type
WeakMZZ <: MeasurementOperation
The WeakMZZ operation is a three-qubit gate that applies a weak ZZ interaction between the first two qubits, with a strength determined by the parameter t. The third qubit is an ancilla qubit that is used to store the result of the operation.
sourceMonitoredQuantumCircuits.X Type
X() <: Operation
The X operation is a single-qubit gate that flips the state of a qubit.
sourceMonitoredQuantumCircuits.Y Type
Y() <: Operation
The Y operation is a single-qubit gate that applies a phase of π to the |1⟩ state.
sourceMonitoredQuantumCircuits.Z Type
Z() <: Operation
The Z operation is a single-qubit gate that applies a phase of π to the |1⟩ state.
sourceMonitoredQuantumCircuits.isClifford Method
isClifford(operation::Operation)
Return whether the operation is a Clifford operation.
sourceMonitoredQuantumCircuits.isSimulator Method
isSimulator(backend::Backend)
Return whether the backend is a simulator.
sourceMonitoredQuantumCircuits.nQubits Method
nQubits(geometry::Geometry)
Return the number of qubits in the geometry.
sourceMonitoredQuantumCircuits.nQubits Method
nQubits(operation::Operation)
Return the number of qubits the operation acts on.
sourceQiskit
MonitoredQuantumCircuits.Qiskit.CliffordSimulator Type
CliffordSimulator <: AerSimulator
A Qiskit Aer stabilizer simulator.
sourceMonitoredQuantumCircuits.Qiskit.GPUStateVectorSimulator Type
GPUStateVectorSimulator <: AerSimulator
A Qiskit Aer statevector simulator that runs on the GPU.
sourceMonitoredQuantumCircuits.Qiskit.GPUTensorNetworkSimulator Type
GPUTensorNetworkSimulator <: AerSimulator
A Qiskit Aer tensor network simulator that runs on the GPU.
sourceMonitoredQuantumCircuits.Qiskit.IBMBackend Type
IBMBackend <: MonitoredQuantumCircuits.QuantumComputer
A Qiskit backend that runs on IBM's quantum computers.
sourceMonitoredQuantumCircuits.Qiskit.StateVectorSimulator Type
StateVectorSimulator <: AerSimulator
A Qiskit Aer statevector simulator.
sourceQuantumClifford
MonitoredQuantumCircuits.QuantumClifford.GPUPauliFrameSimulator Type
GPUPauliFrameSimulator()
A QuantumClifford stabilizer Pauli frame simulator that runs on the GPU.
sourceMonitoredQuantumCircuits.QuantumClifford.PauliFrameSimulator Type
PauliFrameSimulator()
A QuantumClifford stabilizer Pauli frame simulator.
sourceMonitoredQuantumCircuits.QuantumClifford.TableauSimulator Type
TableauSimulator(qubits::Integer; mixed=false, basis=:Z)
A QuantumClifford stabilizer simulator.
sourceMonitoredQuantumCircuits.QuantumClifford.projectXX! Method
projectXX!(ρ::MixedDestabilizer, q1::Int, q2::Int;
keep_result::Bool = true, phases::Bool = true)
Project in-place onto the +1 eigenspace of X_q1 ⊗ X_q2
. Returns the modified tableau, the index of the anticommuting stabiliser row (or 0
if none existed), and – when keep_result=true
– the measurement outcome (Bool
).
This is the two-qubit analogue of projectX!
and is just as fast (O(n) word scans, no allocations, fully inlined).
MonitoredQuantumCircuits.QuantumClifford.projectYY! Method
projectYY!(ρ::MixedDestabilizer, q1::Int, q2::Int;
keep_result::Bool = true, phases::Bool = true)
Project in-place onto the +1 eigenspace of Y_q1 ⊗ Y_q2
. Returns the modified tableau, the index of the anticommuting stabiliser row (or 0
if none existed), and – when keep_result=true
– the measurement outcome (Bool
).
This is the two-qubit analogue of projectY!
and is just as fast (O(n) word scans, no allocations, fully inlined).
MonitoredQuantumCircuits.QuantumClifford.projectZZ! Method
projectZZ!(ρ::MixedDestabilizer, q1::Int, q2::Int;
keep_result::Bool = true, phases::Bool = true)
Project in-place onto the +1 eigenspace of Z_q1 ⊗ Z_q2
. Returns the modified tableau, the index of the anticommuting stabiliser row (or 0
if none existed), and – when keep_result=true
– the measurement outcome (Bool
).
This is the two-qubit analogue of projectZ!
and is just as fast (O(n) word scans, no allocations, fully inlined).
MonitoredQuantumCircuits.QuantumClifford.state_entropy Method
state_entropy(state::AbstractStabilizer)
Calculate entropy, i.e. the mixedness, of a stabilizer state from QuantumClifford.
sourceMonitoredQuantumCircuits.QuantumClifford.tmi Method
tmi(state::AbstractStabilizer, A, B, C)
Calculate the tripartite mutual information of a stabilizer state from QuantumClifford.
source