quantum software research · est. 2023

Software for the era of noisy quantum computers.

Quantuva is a research effort in quantum software. We study the layer where a quantum algorithm meets a real device — circuit transpilation, qubit mapping, decoherence, and the error mitigation that stands between a measured answer and the one you meant. We build the tooling and publish the notes, open.

$ pip install quantuva · a compiler, a simulator, and a mitigation toolkit
quantuva · ghz_state.qv compiled · depth 6
qubits 3 gates 3 depth 6 state |ψ⟩ backend simulator
|ψ⟩ = (|000⟩ + |111⟩)/√2 q₀ q₁ q₂ |0⟩ |0⟩ |0⟩ H measure → bits ⟨Z₀ ⊗ Z₁⟩ = +1  (GHZ stabilizer)
What we work on

Three questions we keep returning to.

All research →
01 · COMPILATION

Circuit transpilation

Given a backend's topology and native gate set, how do you rewrite an algorithm into the shortest circuit that still computes the same thing? Gate decomposition, SWAP routing, and scheduling.

02 · SIMULATION

Statevector & noise

A fast local simulator for the day-to-day, and a density-matrix simulator for modelling decoherence and readout error before you spend hardware time.

03 · MITIGATION

Error mitigation

Zero-noise extrapolation, Pauli twirling, and readout correction — methods that trade classical sampling budget for a less biased expectation value.

From the lab

Recent notes.

All notes →
Quickstart

From |ψ⟩ to a measured expectation in minutes.

The SDK treats a circuit and its observables as first-class objects. You describe the physics; the transpiler, simulator, and mitigation passes handle the parts that have nothing to do with your science.

  1. Build a circuit and declare its observables
  2. Compile against a target topology and gate set
  3. Simulate locally, or submit to hardware with one flag
  4. Read back a calibrated expectation value
Read the docs →
bell_state.pypython
# GHZ state with readout-error mitigation
from quantuva import Circuit, Observable, transpile

qc = Circuit(3)
qc.h(0)
qc.cx(0, 1)
qc.cx(0, 2)
qc.measure_all()

backend = transpile.target("superconducting-v2")
compiled = transpile(qc, backend, opt_level=2)

obs = Observable("Z(0) @ Z(1)")
result = compiled.run(shots=2048, mitigate="zne")
print(result.expectation(obs))  # -> a calibrated ⟨Z₀⊗Z₁⟩
Circuit library

Worked examples, drawn out.

Open the library →

Bell pairs, GHZ states, a four-qubit QFT, and a surface-code patch — each with the circuit, its statevector, and the routine that produced it.

Publications

What we've written down.

All papers →
Open by default

The code, the notes, and the papers are all public.

Quantuva is written in the open. Follow along, reproduce the experiments, or contribute — there is no separate academic edition.

Join the community →