Skip to content

Qutritium

A hardware-agnostic Python library for qutrit quantum computing.

Qutritium provides qutrit (three-level quantum system) gate definitions, circuit construction, statevector and density-matrix simulation, metrics, and SU(3) decomposition. It runs entirely in software — no quantum hardware or cloud account required.

Features

  • 35 qutrit gates — 29 single-qutrit (fixed + parametric) and 6 two-qutrit gates
  • Circuit model — build and compose qutrit circuits of arbitrary width; introspect with depth(), gate_count(), to_matrix()
  • Two simulators — exact statevector with Born-rule sampling, and a density-matrix backend (expectation values, partial trace) for mixed states
  • Metrics — state/process fidelity, trace distance, purity, von Neumann entropy
  • Noise modeling — Kraus channels (depolarizing, dephasing, amplitude damping, Pauli), a simulator-level NoiseModel, and classical readout error
  • State and process tomography — mutually-unbiased-basis circuits with linear-least-squares reconstruction (optionally projected onto the closest physical state), Choi-matrix process reconstruction with Kraus extraction, plus density-matrix visualization
  • SU(3) decomposition — factor any 3×3 unitary into native rotations

Quick Install

pip install qutritium

Quick Example

from qutritium import QutritCircuit, StatevectorSimulator
from qutritium.gates import H3, CSUM

# Build a 2-qutrit Bell state circuit
qc = QutritCircuit(2, None)
qc.append(H3(), first_qutrit=0)
qc.append(CSUM(), first_qutrit=0, second_qutrit=1)
qc.measure_all()

# Simulate
sim = StatevectorSimulator(qc)
sim.run(num_shots=1000)
print(sim.get_counts())
# {'00': ~333, '11': ~333, '22': ~333}

How it fits together

  Gate                  qutritium.gates - X01, H3, CSUM, Rx01, ...
    |                   a unitary; has .matrix() / .inverse()
    |  qc.append(gate, qutrit)
    v
  QutritCircuit         ordered operations (+ measure_all)
    |                   - each append wraps the gate as an Instruction
    |                     (gate + target qutrit(s); lazy 3^n x 3^n effect_matrix)
    |                   - introspect: .draw() .depth() .gate_count() .to_matrix()
    |  hand the circuit to a simulator
    v
  Simulator             StatevectorSimulator (psi - pure states)
    |                   DensityMatrixSimulator (rho - mixed states, noise)
    |                   - optional: .set_noise_model(NoiseModel(...))
    v
  results               .get_counts()  .probabilities()  .return_final_state()
    |
    +--> tomography.reconstruct_state   counts -> reconstructed rho
    +--> tomography.reconstruct_process counts -> Choi matrix -> Kraus ops
    +--> metrics                        state_fidelity, purity, entropy, ...

  SU3Decomposition(U) --> QutritCircuit   decompose any 3x3 unitary into
                                          native gates, then run it

Supported by

Unitary Fund