supermarq.converters.qiskit

Attributes

CIRCUIT_TYPE

Functions

cirq_classical_control_to_qiskit(...)

Converts cirq classical control to qiskit classical control. Cirq uses sympy for its

cirq_gate_to_qiskit_gate(→ qiskit.circuit.Gate)

Convert a single cirq.Gate to a qiskit Gate.

cirq_qubits_to_qiskit(→ qiskit.QuantumCircuit)

Converts cirq qubits to qiskit qubits.

cirq_to_qiskit(→ qiskit.QuantumCircuit)

Converts cirq.Circuit into a qiskit.QuantumCircuit with a single qubit register.

decompose_measurement_inversions(→ CIRCUIT_TYPE)

Decompose inverted measurements by replacing their invert_mask with explicit X gates.

qiskit_gate_to_cirq_gate(→ cirq.Gate | None)

Convert a single qiskit instruction to a single cirq.Gate, or return None.

qiskit_to_cirq(→ cirq.Circuit)

Converts a qiskit.QuantumCircuit to a cirq.Circuit, preserving global phase.

swap_endianness(→ numpy.typing.NDArray[numpy.complex128])

Change matrix from cirq-endian and qiskit-endian (and vice versa).

Module Contents

supermarq.converters.qiskit.cirq_classical_control_to_qiskit(op: cirq.Operation, measurement_key_to_indices: dict[str, list[int]], cr: qiskit.ClassicalRegister) qiskit.circuit.classical.expr.Expr | tuple[qiskit.circuit.Clbit, int]

Converts cirq classical control to qiskit classical control. Cirq uses sympy for its classical logic, qiskit uses its own classical expressions.

Parameters:
  • op – The cirq operation that is being classically controlled

  • measurement_key_to_indices – Dictionary that maps cirq measurement keys to qiskit

  • indices. (Clbit)

  • cr – The qiskit classical register that controls the operations

Returns:

A qiskit condition for classical control.

supermarq.converters.qiskit.cirq_gate_to_qiskit_gate(cirq_gate: cirq.Gate) qiskit.circuit.Gate

Convert a single cirq.Gate to a qiskit Gate.

supermarq.converters.qiskit.cirq_qubits_to_qiskit(qubits: collections.abc.Sequence[cirq.Qid]) qiskit.QuantumCircuit

Converts cirq qubits to qiskit qubits.

Parameters:

qubits – A sequence of cirq.Qid s.

Returns:

A qiskit.QuantumCircuit object with the appropriate qubits.

supermarq.converters.qiskit.cirq_to_qiskit(cirq_circuit: cirq.Circuit, qubits: collections.abc.Sequence[cirq.Qid]) qiskit.QuantumCircuit

Converts cirq.Circuit into a qiskit.QuantumCircuit with a single qubit register.

Note: Qubits in the qiskit circuit are ordered according to the given qubits sequence (i.e. n-th qubit in qiskit_circuit.qubits = n-th qubit in sequence).

Parameters:
  • cirq_circuit – The circuit to convert into qiskit.

  • qubits – The qubits belonging to cirq_circuit.

Returns:

The qiskit equivalent of cirq_circuit.

supermarq.converters.qiskit.decompose_measurement_inversions(circuit: CIRCUIT_TYPE, context: cirq.TransformerContext | None = None) CIRCUIT_TYPE

Decompose inverted measurements by replacing their invert_mask with explicit X gates.

This is useful after running some cirq transformers (namely cirq.eject_phased_paulis), which will absorb Pauli gates into measurements by changing their invert_mask.

Parameters:
  • circuit – The circuit to be transformed.

  • context – An optional cirq.TransformerContext containing configuration and logging information.

Returns:

An equivalent circuit with X gates in place of inversion masks.

supermarq.converters.qiskit.qiskit_gate_to_cirq_gate(inst: qiskit.circuit.Instruction) cirq.Gate | None

Convert a single qiskit instruction to a single cirq.Gate, or return None.

supermarq.converters.qiskit.qiskit_to_cirq(qiskit_circuit: qiskit.QuantumCircuit, keep_global_phase: bool = False) cirq.Circuit

Converts a qiskit.QuantumCircuit to a cirq.Circuit, preserving global phase.

Parameters:
  • qiskit_circuit – The circuit to convert into cirq.

  • keep_global_phase – Boolean flag to preserve the global phase of the circuit. Defaults to False.

Returns:

The cirq equivalent circuit of qiskit_circuit.

supermarq.converters.qiskit.swap_endianness(matrix: numpy.typing.NDArray[numpy.complex128]) numpy.typing.NDArray[numpy.complex128]

Change matrix from cirq-endian and qiskit-endian (and vice versa).

supermarq.converters.qiskit.CIRCUIT_TYPE