Circuit¶
The Circuit class is the core abstraction in QuantSDK. It represents a
sequence of quantum gates applied to qubits and provides a fluent API for
circuit construction.
Overview¶
import quantsdk as qs
# Create and build a circuit using the fluent API
circuit = (
qs.Circuit(3, name="ghz")
.h(0)
.cx(0, 1)
.cx(0, 2)
.measure_all()
)
# Run and inspect
result = qs.run(circuit, shots=1000)
print(result.counts)
API Reference¶
Circuit
¶
A framework-agnostic quantum circuit.
Create quantum circuits using a clean, Pythonic API and run them on any backend — IBM Quantum, IonQ, simulators, and more.
| PARAMETER | DESCRIPTION |
|---|---|
num_qubits
|
Number of qubits in the circuit.
TYPE:
|
name
|
Optional name for the circuit.
TYPE:
|
Example::
import quantsdk as qs
circuit = qs.Circuit(2, name="bell_state")
circuit.h(0)
circuit.cx(0, 1)
circuit.measure_all()
Attributes¶
depth
property
¶
Circuit depth — the number of time steps needed to execute all gates.
Gates on different qubits can execute in parallel (same time step).
Functions¶
u3
¶
u3(
qubit: int, theta: float, phi: float, lam: float
) -> Circuit
Apply general single-qubit rotation U3(theta, phi, lambda).
cu3
¶
cu3(
control: int,
target: int,
theta: float,
phi: float,
lam: float,
) -> Circuit
Apply Controlled-U3 gate.
toffoli
¶
toffoli(
control1: int, control2: int, target: int
) -> Circuit
Apply Toffoli gate (alias for ccx).
fredkin
¶
fredkin(
control: int, target1: int, target2: int
) -> Circuit
Apply Fredkin gate (alias for cswap).
ccz
¶
ccz(control1: int, control2: int, target: int) -> Circuit
Apply CCZ (double-controlled Z) gate.
measure
¶
measure(
qubit: int, classical_bit: int | None = None
) -> Circuit
Measure a qubit in the computational basis.
| PARAMETER | DESCRIPTION |
|---|---|
qubit
|
Qubit index to measure.
TYPE:
|
classical_bit
|
Optional classical bit to store the result. Defaults to same index as qubit.
TYPE:
|
barrier
¶
barrier(qubits: Sequence[int] | None = None) -> Circuit
Add a barrier to prevent gate optimization across this point.
to_qiskit
¶
Convert this circuit to a Qiskit QuantumCircuit.
Requires: pip install quantsdk[ibm]
| RETURNS | DESCRIPTION |
|---|---|
Any
|
A |
Example::
circuit = qs.Circuit(2).h(0).cx(0, 1).measure_all()
qiskit_circuit = circuit.to_qiskit()
to_openqasm
¶
Export this circuit as an OpenQASM 2.0 string.
| RETURNS | DESCRIPTION |
|---|---|
str
|
An OpenQASM 2.0 compliant string. |
Example::
circuit = qs.Circuit(2).h(0).cx(0, 1).measure_all()
print(circuit.to_openqasm())
from_qiskit
classmethod
¶
from_qiskit(qiskit_circuit: Any) -> Circuit
Create a QuantSDK Circuit from a Qiskit QuantumCircuit.
Requires: pip install quantsdk[ibm]
| PARAMETER | DESCRIPTION |
|---|---|
qiskit_circuit
|
A
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
Circuit
|
A QuantSDK Circuit equivalent. |
from_openqasm
classmethod
¶
from_openqasm(qasm_str: str) -> Circuit
Create a QuantSDK Circuit from an OpenQASM 2.0 string.
| PARAMETER | DESCRIPTION |
|---|---|
qasm_str
|
An OpenQASM 2.0 compliant string.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
Circuit
|
A QuantSDK Circuit. |
count_ops
¶
Count the number of each gate type in the circuit.
| RETURNS | DESCRIPTION |
|---|---|
dict[str, int]
|
Dictionary mapping gate name to count. |
draw
¶
Draw the circuit as ASCII art.
| RETURNS | DESCRIPTION |
|---|---|
str
|
String representation of the circuit. |
Example::
>>> circuit = qs.Circuit(2)
>>> circuit.h(0).cx(0, 1).measure_all()
>>> print(circuit.draw())
q0: ──H──●──M──
q1: ─────X──M──