Skip to main content

metatron-qso (Python)

Python bindings for QSO, a validated quantum simulator written in pure Rust (metatron-qso-rs): exact state-vector and density-matrix simulation, VQE and QAOA with exact gradients, Grover search, QFT and phase estimation, and continuous-time quantum walks on arbitrary graphs — including Metatron's Cube. Every algorithm is tested against closed-form or literature results.

Install

pip install metatron-qso

Wheels target the stable ABI (abi3, one wheel for CPython ≥ 3.9) and are provided for Linux (x86_64, aarch64; glibc and musl), macOS (Intel and Apple silicon) and Windows (x86_64, arm64). The only runtime dependency is NumPy. On other platforms pip builds from the source distribution, which needs a Rust toolchain ≥ 1.89.

From a clone of the repository:

pip install maturin
maturin develop --release -m metatron_qso_py/Cargo.toml   # into the active venv

Conventions

  • Qubit 0 is the least significant bit of a basis index (as in Qiskit); bit strings print qubit n−1 first ("001" means qubit 0 is 1).
  • Rotations are R_P(θ) = exp(−iθP/2); time evolution is exp(−iHt).
  • Vectors and matrices are NumPy float64 / complex128 arrays; array arguments accept lists, tuples or arrays.
  • Invalid input raises ValueError with a descriptive message.
  • Long-running calls (VQE, QAOA, walks, simulation) release the GIL.

Examples

Circuits, sampling and observables:

import metatron_qso as q

bell = q.Circuit(2).h(0).cx(0, 1)
state = q.simulate(bell)
print(state.amplitudes)                       # complex128 array of length 4
print(state.sample(1000, seed=1))             # {'00': ..., '11': ...}
print(state.expectation(q.PauliSum("Z0 Z1"))) # 1.0
print(state.entanglement_entropy([0]))        # 1.0 (bits)

Symbolic parameters, exact gradients and OpenQASM:

import numpy as np
import metatron_qso as q

c = q.Circuit(2)
a, b = c.new_parameters(2)
c.ry(0, a).cx(0, 1).rz(1, 2.0 * b + 0.5)
h = q.PauliSum("0.5*Z0 Z1 - X0")
value, grad = q.expectation_and_gradient(c, h, [0.3, 0.1])  # adjoint method
_, fd = q.expectation_and_gradient(c, h, [0.3, 0.1], method="finite_difference")
assert np.allclose(grad, fd, atol=1e-6)

text = c.to_qasm([0.3, 0.1], measure=True)      # OpenQASM 2.0
again = q.Circuit.from_qasm(text)
print(c.to_qasm3([0.3, 0.1]))                     # OpenQASM 3

Programs with mid-circuit measurement and feed-forward, from OpenQASM 2 or 3, with exact outcome probabilities:

import metatron_qso as q

p = q.Program.from_qasm('''
OPENQASM 3.0;
include "stdgates.inc";
qubit[2] q;
bit[2] c;
h q[0];
c[0] = measure q[0];
if (c[0] == 1) x q[1];
c[1] = measure q[1];
''')
print(p.probabilities())        # ≈ {'00': 0.5, '11': 0.5}, bit 0 on the right
print(p.sample(1000, seed=1))   # {'00': 504, '11': 496}
print(p.to_qasm3())

Ground state of H₂ (STO-3G) with VQE:

import metatron_qso as q

h2 = q.h2_sto3g()
result = q.run_vqe(h2["hamiltonian"], q.real_amplitudes(2, 1), restarts=4)
print(result["energy"] + h2["nuclear_repulsion"])  # -1.137306 Ha (full CI)

QAOA for MaxCut (depth 1 on a ring gives exactly 3/4):

import metatron_qso as q

qaoa = q.MaxCutQaoa(q.Graph.cycle(8), p=1)
result = qaoa.optimize(restarts=8, seed=0)
print(result["approximation_ratio"])     # 0.75
print(result["most_likely_bitstring"])   # an optimal cut, e.g. '10101010'

Quantum walks on Metatron's Cube (the complete graph K13 on the 13 Fruit-of-Life centres):

import math
import metatron_qso as q

cube = q.Graph.metatron_cube()
print(cube.automorphism_group_order())         # 6227020800 = 13!

walk = q.ContinuousWalk(cube)                   # H = γL, γ = 1
print(walk.limiting_distribution(0)[:2] * 169)  # [145. 2.]

search = q.SpatialSearch(cube, marked=[4], gamma=1 / 13)
print(search.success_probability(math.pi * math.sqrt(13) / 2))  # 1.0

Symmetry, state transfer and discrete-time walks:

import math
import metatron_qso as q

walk = q.QuotientWalk(q.Quotient.hypercube(30))       # 2^30 nodes, 31 cells
print(walk.cell_probabilities(0, math.pi / 2)[-1])     # 1.0: the antipode

print(q.StateTransfer(q.Graph.path(3), 0, 2, "adjacency").perfect_transfer_time)  # pi/sqrt(2)
print(q.Graph.shrikhande().is_isomorphic(q.Graph.rook(4, 4)))                     # False

skw = q.CoinedWalk(q.Graph.hypercube(10), "grover", marked=[0]).search(60)
print(skw["steps"], skw["success_probability"])        # 38 0.435
print(q.SzegedyWalk(q.Graph.cycle(64), 0).hitting_time(1000))                    # 16

Noise:

import metatron_qso as q

bell = q.Circuit(2).h(0).cx(0, 1)
rho = q.DensityMatrix.simulate(bell, noise=q.NoiseModel.depolarizing(0.01, 0.02))
print(rho.purity(), rho.fidelity_with_pure(q.simulate(bell)))
energy = q.estimate_expectation(bell, q.PauliSum("Z0 Z1"), shots=10_000,
                                noise=q.NoiseModel.depolarizing(0.01, 0.02))

Device models, trajectories and error mitigation (readout mitigation plus zero-noise extrapolation):

import metatron_qso as q

device = (q.DeviceModel("toy")
          .with_default_qubit(t1=100.0, t2=80.0, readout=(0.02, 0.04))
          .with_rule(gate="cx", duration=0.3, depolarizing=0.01)
          .with_rule(duration=0.035, depolarizing=0.001))
ghz = q.Circuit(3).h(0).cx(0, 1).cx(1, 2)
h = q.PauliSum("Z0 Z1 + Z1 Z2")                                  # noiseless value 2
cal = q.ReadoutCalibration.tensored(3, 100_000, seed=1, device=device)

def run(circuit):
    return q.estimate(circuit, h, 100_000, device=device, readout_calibration=cal, seed=2)[0]

raw, _ = q.estimate(ghz, h, 100_000, device=device, seed=2)
mitigated = q.zne(ghz, [1.0, 3.0, 5.0], run)["estimate"]
print(f"{raw.value:.3f} {mitigated.value:.3f} ± {mitigated.std_error:.3f}")  # 1.725 2.001 ± 0.007
print(q.TrajectorySimulator(device, 2000, seed=3).expectation(ghz, h).value)  # 1.969

Molecules, time evolution and amplitude estimation (run from the repository root, which holds the FCIDUMP files):

import metatron_qso as q

lih = q.MolecularIntegrals.from_file("metatron-qso-rs/examples/molecules/lih_sto3g.fcidump")
adapt = q.adapt_vqe(lih, "parity", two_qubit_reduction=True)          # 10 qubits
print(f"{adapt['energy'] - lih.fci_energies()[0]:.1e}", len(adapt["operators"]))  # 1.1e-05 30

h = q.heisenberg_xxz(4, 1.0, 0.5)
c = q.trotter_circuit(h, 4, 1.0, steps=20, order=2)
print(len(c), f"{q.trotter_error_bound(h, 1.0, steps=20, order=2):.4f}")  # 321 0.0229

r = q.ml_amplitude_estimation(q.AmplitudeProblem.bernoulli(0.3), levels=8, shots=100, seed=1)
print(f"{r['estimate']:.4f}", r["oracle_calls"])                        # 0.2998 26200

More complete scripts are in examples/; the user guide has tutorials and the full API reference.

API overview

Area Names
Graphs Graph (from_spec, metatron_cube, fruit_of_life, metatron_distance_graph, complete, cycle, path, star, complete_bipartite, hypercube, petersen, grid, platonic, random_regular, erdos_renyi, heawood, johnson, kneser, hamming, rook, paley, circulant, cayley_z2, shrikhande; cartesian_product, strongly_regular_parameters, girth, triangle_count, automorphisms, spectra; canonical_labelling, canonical_form, is_isomorphic, isomorphism, relabeled; from_edge_list/to_edge_list, from_graphml/to_graphml, from_networkx), metatron_line_lengths
Circuits Circuit, Parameter, qft, inverse_qft, grover_circuit
States StateVector, simulate, PauliSum, bitstring
Models h2_sto3g, transverse_field_ising, heisenberg_xxz, maxcut_cost
Variational real_amplitudes, efficient_su2, hardware_efficient, qaoa_maxcut_circuit, expectation_and_gradient, expectation_batch, expectation_and_gradient_batch, run_vqe, MaxCutQaoa, optimize_qaoa_layerwise, VariationalClassifier, GraphClassifier
Textbook grover_search, estimate_phase
Walks ContinuousWalk, SpatialSearch (optimize tunes rate and time jointly), DephasingWalk, DrivenWalk, classical_walk_probabilities, classical_hitting_times; Quotient, QuotientWalk, QuotientSearch, StateTransfer; CoinedWalk, DecoherentCoinedWalk, LineWalk, SzegedyWalk; circulant_walk_circuit, cayley_walk_circuit, trotter_walk_circuit, diagonal_unitary_circuit
Noise Channel, NoiseModel, DeviceModel, DensityMatrix, TrajectorySimulator, estimate_expectation
Estimation Estimate, estimate (uniform, weighted, adaptive shot allocation), ClassicalShadow
Mitigation ReadoutCalibration, nearest_probability_distribution, fold, extrapolate, zne, pec_expectation, twirl, twirled_average; noise learning: SparsePauliLindblad, learn_layer, pec_layered, pea_layered
Hamiltonian simulation Circuit.pauli_rotation, trotter_circuit, trotter_error_bound, qdrift_circuit, qdrift_error_bound
Chemistry FermionOperator, QubitOperator, MolecularIntegrals, uccsd, k_upccgsd, adapt_vqe
Excited states and geometry vqd, ssvqe, quantum_fisher_information, natural_gradient, quantum_natural_gradient, imaginary_time_evolution
Optimisation and estimation Qubo, Qaoa (X, XY and warm-start mixers), AmplitudeProblem, canonical_amplitude_estimation, iterative_amplitude_estimation, ml_amplitude_estimation
Boson sampling BosonSampler, ImperfectBosonSampler, permanent, haar_unitary, beam_splitter; Gaussian boson sampling: GaussianState, hafnian, hafnian_repeated, torontonian

Graph.from_spec accepts the graph specifications of the qso command-line tool, e.g. "metatron", "metatron:1", "hypercube:4", "platonic:cube" (full list in the main README).

Type information ships with the package (_core.pyi, py.typed).

Optimisers for run_vqe / MaxCutQaoa.optimize: lbfgs (default), adam, gradient_descent, nelder_mead, spsa. Gradient methods: adjoint (default), parameter_shift, finite_difference.

Tests

pip install pytest
pytest metatron_qso_py/tests -q

License

Apache-2.0

Metadata

Release files for metatron-qso 1.9.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for metatron-qso 1.9.0
File Size Uploaded Provenance Actions
metatron_qso-1.9.0.tar.gz 1.3 MB With provenance Details for metatron_qso-1.9.0.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for metatron-qso 1.9.0
File Actions
metatron_qso-1.9.0-cp39-abi3-win_arm64.whl CPython 3.9 abi3 Windows ARM64 Details for metatron_qso-1.9.0-cp39-abi3-win_arm64.whl
metatron_qso-1.9.0-cp39-abi3-win_amd64.whl CPython 3.9 abi3 Windows x86-64 Details for metatron_qso-1.9.0-cp39-abi3-win_amd64.whl
metatron_qso-1.9.0-cp39-abi3-musllinux_1_2_x86_64.whl CPython 3.9 abi3 Linux musl 1.2+ x86-64 Details for metatron_qso-1.9.0-cp39-abi3-musllinux_1_2_x86_64.whl
metatron_qso-1.9.0-cp39-abi3-musllinux_1_2_aarch64.whl CPython 3.9 abi3 Linux musl 1.2+ ARM64 Details for metatron_qso-1.9.0-cp39-abi3-musllinux_1_2_aarch64.whl
metatron_qso-1.9.0-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.9 abi3 Linux glibc 2.17+ x86-64 Details for metatron_qso-1.9.0-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
metatron_qso-1.9.0-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl CPython 3.9 abi3 Linux glibc 2.17+ ARM64 Details for metatron_qso-1.9.0-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
metatron_qso-1.9.0-cp39-abi3-macosx_10_12_universal2.macosx_10_12_x86_64.macosx_11_0_arm64.whl CPython 3.9 abi3 macOS 10.12+ x86-64, macOS 10.12+ universal2 (ARM64, x86-64), macOS 11.0+ ARM64 Details for metatron_qso-1.9.0-cp39-abi3-macosx_10_12_universal2.macosx_10_12_x86_64.macosx_11_0_arm64.whl

Total release size: 34.3 MB

Release files / metatron_qso-1.9.0.tar.gz

Download URL metatron_qso-1.9.0.tar.gz
Size 1.3 MB
Tags Source
SHA-256 checksum
How to use checksums
b96ad81af1781c3dab237c80f603bad0724b60cf3120eefe1f58181078183bb7
BLAKE2b-256 checksum
How to use checksums
91020aa1e2be59783707e02669700b6f53f081ac7a6a9e20bceb487a0ff29826
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.

Transparency log

Release files / metatron_qso-1.9.0-cp39-abi3-win_arm64.whl

Download URL metatron_qso-1.9.0-cp39-abi3-win_arm64.whl
Size 3.8 MB
Tags CPython 3.9 Windows ARM64 abi3
SHA-256 checksum
How to use checksums
107773d62bd5537faa2c12cdf8995fa21c74eba4905fc29783e206710265dd00
BLAKE2b-256 checksum
How to use checksums
13057183267d43a0c59681aa3b9c0a1f37fb3218bd2f5639df744abaf1484908
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.

Transparency log

Release files / metatron_qso-1.9.0-cp39-abi3-win_amd64.whl

Download URL metatron_qso-1.9.0-cp39-abi3-win_amd64.whl
Size 4.3 MB
Tags CPython 3.9 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
a071995b654e0a76d33073996f614b3aa26a37e61c9f3334bcd3698a29b74757
BLAKE2b-256 checksum
How to use checksums
1ad431412c757175b5337c97e4eb537eb3182cb5696d62bb324838b3a3be3703
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.

Transparency log

Release files / metatron_qso-1.9.0-cp39-abi3-musllinux_1_2_x86_64.whl

Download URL metatron_qso-1.9.0-cp39-abi3-musllinux_1_2_x86_64.whl
Size 4.5 MB
Tags CPython 3.9 Linux musl 1.2+ x86-64 abi3
SHA-256 checksum
How to use checksums
2d10598f5b5393f22f00d1f01e3b71f5132ba5fc958462b0efc5cd5eea249572
BLAKE2b-256 checksum
How to use checksums
afc14b539295009547ab66cf9b4f5e027aaac232d1570e86ff49d6122d4bde63
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.

Transparency log

Release files / metatron_qso-1.9.0-cp39-abi3-musllinux_1_2_aarch64.whl

Download URL metatron_qso-1.9.0-cp39-abi3-musllinux_1_2_aarch64.whl
Size 4.1 MB
Tags CPython 3.9 Linux musl 1.2+ ARM64 abi3
SHA-256 checksum
How to use checksums
062a8c0a19f180a65da877d4d6cde639011c330bd8a49dcf91a5745daec0fa24
BLAKE2b-256 checksum
How to use checksums
cdb59e841022ef64008435759c333716eb7e4063eb6923f440bd5e51677af22e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.

Transparency log

Release files / metatron_qso-1.9.0-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL metatron_qso-1.9.0-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 4.3 MB
Tags CPython 3.9 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
8e8c4d6b3aa7f8024b72ad1a57e49a893f67a783714c0d390399bf83b0ba3d00
BLAKE2b-256 checksum
How to use checksums
e55ea526ac5db6663659b6f2cfcd84a701275452faafb0dc859c016458f8244c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.

Transparency log

Release files / metatron_qso-1.9.0-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl

Download URL metatron_qso-1.9.0-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Size 4.0 MB
Tags CPython 3.9 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
7c2978fce52c7c4bc32e7a74fe8c1efe1d0934ee5fdad9ef3868432514c9e6e8
BLAKE2b-256 checksum
How to use checksums
fdaed81354d18cacf186be1e51b25974e52ab02d035c491d3ec659fc86261934
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.

Transparency log

Release files / metatron_qso-1.9.0-cp39-abi3-macosx_10_12_universal2.macosx_10_12_x86_64.macosx_11_0_arm64.whl

Download URL metatron_qso-1.9.0-cp39-abi3-macosx_10_12_universal2.macosx_10_12_x86_64.macosx_11_0_arm64.whl
Size 8.0 MB
Tags CPython 3.9 abi3 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
f73341853255d31076e41d0ec4fb383d98487b7844fd2f763a59d3837799d849
BLAKE2b-256 checksum
How to use checksums
17bee279b26fef511c21c42e96e92429eacfd36bb93b147d74227987faf87687
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.

Transparency log

Security for metatron-qso 1.9.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 8 files in this release have been uploaded with provenance metadata.

Select from 8 files

Attestation for metatron_qso-1.9.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page