Stim: Quantum Stabilizer Circuits

1.15.0 · active · verified Thu Apr 16

Stim is a fast Python library for high-performance simulation and analysis of quantum stabilizer circuits, particularly those used in quantum error correction (QEC). It focuses on providing low-level, fast building blocks for simulating circuits with thousands of qubits and millions of operations, enabling rapid Monte Carlo sampling. The library maintains a regular release cadence, with minor versions typically released every few months, ensuring active development and improvements.

Common errors

Warnings

Install

Imports

Quickstart

This quickstart demonstrates how to create a basic quantum circuit, add gates, compile a sampler for efficient measurement shot generation, and extract a detector error model from a noisy circuit. The example includes fundamental operations and a simple noise model.

import stim

# Create a quantum circuit
circuit = stim.Circuit()
circuit.append("H", [0])
circuit.append("CNOT", [0, 1])
circuit.append("M", [0, 1])

# Compile a sampler for the circuit
sampler = circuit.compile_sampler()

# Sample measurement shots
shots = sampler.sample(shots=10)

print("Circuit:\n", circuit)
print("Sampled shots (first 5):\n", shots[:5])

# Example of adding noise and extracting a detector error model
noisy_circuit = stim.Circuit()
noisy_circuit.append("H", [0])
noisy_circuit.append("DEPOLARIZE1(0.001)", [0])
noisy_circuit.append("CNOT", [0, 1])
noisy_circuit.append("DEPOLARIZE2(0.002)", [0, 1])
noisy_circuit.append("M", [0, 1])
noisy_circuit.append("DETECTOR", [0]) # Add a simple detector at qubit 0

dem = noisy_circuit.detector_error_model()
print("\nDetector Error Model (first few lines):\n", str(dem).splitlines()[0:5])

view raw JSON →