Skip to content

Public API

MonitoredQuantumCircuits

MonitoredQuantumCircuits.CNOT Type
julia
CNOT() <: Operation

The CNOT operation is a two-qubit gate that flips the target qubit if the control qubit is in the |1⟩ state.

source
MonitoredQuantumCircuits.ChainGeometry Type

A data structure representing a one-dimensional chain geometry of qubits.

Constructors

julia
ChainGeometry(Periodic, size::Integer)

Constructs a chain geometry with periodic boundary conditions (i.e., a closed loop).

julia
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

julia
# 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)
source
MonitoredQuantumCircuits.Circuit Type
julia
Circuit{G<:Geometry}

A circuit optimized for interactive construction. The operations are stored in a vector to allow for efficient construction.

source
MonitoredQuantumCircuits.CompiledCircuit Type
julia
CompiledCircuit{Ops<:Tuple}

A circuit optimized for iteration. The operations are stored in a tuple. The operations are stored in a tuple to allow for efficient iteration.

source
MonitoredQuantumCircuits.DistributedOperation Type
julia
DistributedOperation <: Operation

An operation that applies a specified operation at multiple positions with given probabilities.

source
MonitoredQuantumCircuits.Geometry Type
julia
Geometry

Abstract type for the geometry of the qubits.

source
MonitoredQuantumCircuits.H Type
julia
H() <: Operation

The H operation is a single-qubit gate that creates superposition by applying a Hadamard transformation.

source
MonitoredQuantumCircuits.HoneycombGeometry Type

A data structure representing a honeycomb lattice geometry.

Constructors

julia
HoneycombGeometry(Periodic, sizeX::Integer, sizeY::Integer)

Create a honeycomb geometry with periodic boundary conditions.

julia
HoneycombGeometry(Open, sizeX::Integer, sizeY::Integer)

Create a honeycomb geometry with open boundary conditions.

Arguments

  • sizeX::Integer: Width of the lattice

  • sizeY::Integer: Height of the lattice (must be even)

Examples

julia
# 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)
source
MonitoredQuantumCircuits.I Type
julia
I() <: Operation

The I operation is a single-qubit gate that represents the identity operation, leaving the qubit unchanged.

source
MonitoredQuantumCircuits.Measure_X Type
julia
Measure_X() <: Operation

The Measure_X operation is a single-qubit measurement operation that measures the state of a qubit in the X basis.

source
MonitoredQuantumCircuits.Measure_Y Type
julia
Measure_Y() <: Operation

The Measure_Y operation is a single-qubit measurement operation that measures the state of a qubit in the Y basis.

source
MonitoredQuantumCircuits.Measure_Z Type
julia
Measure_Z() <: Operation

The Measure_Z operation is a single-qubit measurement operation that measures the state of a qubit in the Z basis.

source
MonitoredQuantumCircuits.NPauli Type
julia
NPauli{N} <: MeasurementOperation

The NPauli operation is a N-qubit measurement operation that measures the state of multiple qubits in the Pauli basis.

source
MonitoredQuantumCircuits.RandomOperation Type
julia
RandomOperation <: Operation

An operation that applies a random operation from a list of operations with specified probabilities and random positions.

source
MonitoredQuantumCircuits.ShastrySutherlandGeometry Type

A data structure representing a Shastry-Sutherland lattice geometry.

Constructors

julia
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 direction

  • sizeY::Integer: The number of sites in the y direction

Examples

julia
# Create a 4×4 Shastry-Sutherland lattice with periodic boundaries
geometry = ShastrySutherlandGeometry(Periodic, 4, 4)
source
MonitoredQuantumCircuits.Weak_XX Type
julia
Weak_XX <: MeasurementOperation

The Weak_XX 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.

source
MonitoredQuantumCircuits.Weak_YY Type
julia
Weak_YY <: MeasurementOperation

The Weak_YY 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.

source
MonitoredQuantumCircuits.Weak_ZZ Type
julia
Weak_ZZ <: MeasurementOperation

The Weak_ZZ 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.

source
MonitoredQuantumCircuits.X Type
julia
X() <: Operation

The X operation is a single-qubit gate that flips the state of a qubit.

source
MonitoredQuantumCircuits.XX Type
julia
XX() <: MeasurementOperation

The XX 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.

source
MonitoredQuantumCircuits.Y Type
julia
Y() <: Operation

The Y operation is a single-qubit gate that applies a phase of π to the |1⟩ state.

source
MonitoredQuantumCircuits.YY Type
julia
YY() <: MeasurementOperation

The YY 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.

source
MonitoredQuantumCircuits.Z Type
julia
Z() <: Operation

The Z operation is a single-qubit gate that applies a phase of π to the |1⟩ state.

source
MonitoredQuantumCircuits.ZZ Type
julia
ZZ() <: MeasurementOperation

The ZZ 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.

source
Base.push! Method
julia
push!(random::RandomOperation,
    op::Operation,
    positions::Matrix;
    probability,
    positionProbabilities)

Push a new operation to the list of operations in the RandomOperation object. The operation is applied with a specified probability and the positions are given as a matrix. The positionProbabilities argument specifies the probabilities for each position (column) in the matrix.

source
MonitoredQuantumCircuits.apply! Method
julia
apply!(circuit::Circuit, operation::DistributedOperation)

Apply a [DistributedOperation] to the circuit.

source
MonitoredQuantumCircuits.apply! Method
julia
apply!(circuit::Circuit, i::Integer)

Apply the i-th operation in the circuit again.

source
MonitoredQuantumCircuits.apply! Method
julia
apply!(circuit::Circuit, operation::Operation, position::Integer)

Apply an operation to a position in the circuit.

source
MonitoredQuantumCircuits.apply! Method
julia
apply!(circuit::Circuit, operation::RandomOperation)

Apply a [RandomOperation] to the circuit.

source
MonitoredQuantumCircuits.compile Method
julia
compile(circuit::Circuit)

Compile the circuit. The function will return a CompiledCircuit object. The CompiledCircuit object is optimized for iteration and is not meant to be modified. The execute function only accepts CompiledCircuit objects.

source
MonitoredQuantumCircuits.depth Method
julia
depth(circuit::QuantumCircuit)

Return the depth of the circuit. The depth is the number of instructions in the circuit.

source
MonitoredQuantumCircuits.execute Method
julia
execute(circuit::CompiledCircuit, backend::Backend)

Execute the circuit on the given backend. The backend must be a subclass of Backend. The function will return the result of the execution.

source
MonitoredQuantumCircuits.isClifford Method
julia
isClifford(operation::Operation)

Return whether the operation is a Clifford operation.

source
MonitoredQuantumCircuits.isSimulator Method
julia
isSimulator(backend::Backend)

Return whether the backend is a simulator.

source
MonitoredQuantumCircuits.nAncilla Method
julia
nAncilla(circuit::CompiledCircuit)

Return the number of ancilla qubits in the compiled circuit. An ancilla qubits gets added for every unique combination of position and operation.

source
MonitoredQuantumCircuits.nQubits Method
julia
nQubits(circuit::CompiledCircuit)

Return the number of qubits in the compiled circuit. This can differ from the number of qubits in the original circuit, since unused qubits get deleated during compilation. Ancilla qubits are not included, use nAncilla to get the number of ancilla qubits.

source
MonitoredQuantumCircuits.nQubits Method
julia
nQubits(geometry::Geometry)

Return the number of qubits in the geometry.

source
MonitoredQuantumCircuits.nQubits Method
julia
nQubits(operation::Operation)

Return the number of qubits the operation acts on.

source

Qiskit

MonitoredQuantumCircuits.Qiskit.IBMBackend Type
julia
IBMBackend <: MonitoredQuantumCircuits.QuantumComputer

A Qiskit backend that runs on IBM's quantum computers.

source
MonitoredQuantumCircuits.Qiskit.CliffordSimulator Method
julia
CliffordSimulator()

A Qiskit Aer stabilizer simulator.

source
MonitoredQuantumCircuits.Qiskit.GPUStateVectorSimulator Method
julia
GPUStateVectorSimulator()

A Qiskit Aer statevector simulator that runs on the GPU.

source
MonitoredQuantumCircuits.Qiskit.GPUTensorNetworkSimulator Method
julia
GPUTensorNetworkSimulator()

A Qiskit Aer tensor network simulator that runs on the GPU.

source
MonitoredQuantumCircuits.Qiskit.StateVectorSimulator Method
julia
StateVectorSimulator()

A Qiskit Aer statevector simulator.

source

QuantumClifford

MonitoredQuantumCircuits.QuantumClifford.GPUPauliFrameSimulator Type
julia
GPUPauliFrameSimulator()

A QuantumClifford stabilizer Pauli frame simulator that runs on the GPU.

source
MonitoredQuantumCircuits.QuantumClifford.PauliFrameSimulator Type
julia
PauliFrameSimulator()

A QuantumClifford stabilizer Pauli frame simulator.

source
MonitoredQuantumCircuits.QuantumClifford.TableauSimulator Type
julia
TableauSimulator(qubits::Integer; mixed=true, basis=:Z)
TableauSimulator(initial_state::QuantumClifford.MixedDestabilizer)

A QuantumClifford stabilizer simulator.

source
MonitoredQuantumCircuits.QuantumClifford.native_codeV1 Method
julia
fast_execute(circuit::MonitoredQuantumCircuits.CompiledCircuit, simulator::TableauSimulator)

This function executes the circuit using the TableauSimulator. It generates native QuantumClifford code which then gets executed. This makes executing the same circuit many times much faster and more efficient.

source
MonitoredQuantumCircuits.QuantumClifford.state_entropy Method
julia
state_entropy(state::AbstractStabilizer)

Calculate entropy, i.e. the mixedness, of a stabilizer state from QuantumClifford.

source
MonitoredQuantumCircuits.QuantumClifford.tmi Method
julia
tmi(state::AbstractStabilizer, A, B, C)

Calculate the tripartite mutual information of a stabilizer state from QuantumClifford.

source