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, permanent, haar_unitary, beam_splitter

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.6.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.6.0
File Size Uploaded Provenance Actions
metatron_qso-1.6.0.tar.gz 635.3 kB With provenance Details for metatron_qso-1.6.0.tar.gz

Built distributions (wheels)

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

Total release size: 18.7 MB

Release files / metatron_qso-1.6.0.tar.gz

Download URL metatron_qso-1.6.0.tar.gz
Size 635.3 kB
Tags Source
SHA-256 checksum
How to use checksums
a810a632cbd96b03a8719462c7101ae09f362aa8e24a3ed49465d94af17f96d9
BLAKE2b-256 checksum
How to use checksums
bae921d0b243c632f3d84444473af80fe5278437fba6a15b6762cf9a8e265499
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 Oct 27, 2026.

Transparency log

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

Download URL metatron_qso-1.6.0-cp39-abi3-win_arm64.whl
Size 2.0 MB
Tags CPython 3.9 Windows ARM64 abi3
SHA-256 checksum
How to use checksums
3778b3237a93129f965a95188355e86837ef2c3f24d80da108f1ef8f97a24247
BLAKE2b-256 checksum
How to use checksums
d8f7c5bf306fd554a416acc7c8a2acbe14303e9ec15fefbe612499510bc919e0
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 Oct 27, 2026.

Transparency log

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

Download URL metatron_qso-1.6.0-cp39-abi3-win_amd64.whl
Size 2.3 MB
Tags CPython 3.9 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
5cb9e659f2fcc93d8bac4cdb0ba0d3206afd023b23df5737ee20c766f8320139
BLAKE2b-256 checksum
How to use checksums
62bae03283ad34df4f9e1ba3b3c9b16c30314aff2992c9c6cb400eee8c47756b
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 Oct 27, 2026.

Transparency log

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

Download URL metatron_qso-1.6.0-cp39-abi3-musllinux_1_2_x86_64.whl
Size 2.6 MB
Tags CPython 3.9 Linux musl 1.2+ x86-64 abi3
SHA-256 checksum
How to use checksums
ead511607ad9227de5bacd1c063817f829f191e7ca0b306c8d29bce829eb8c79
BLAKE2b-256 checksum
How to use checksums
cbf927a3af8d7e67bc1e109e172393936247c2e6502ba2019037a41c134136ff
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 Oct 27, 2026.

Transparency log

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

Download URL metatron_qso-1.6.0-cp39-abi3-musllinux_1_2_aarch64.whl
Size 2.4 MB
Tags CPython 3.9 Linux musl 1.2+ ARM64 abi3
SHA-256 checksum
How to use checksums
1ced697235f04b1847841d9923067149112b5144703a2e2fbb50551f846dfd0d
BLAKE2b-256 checksum
How to use checksums
383e6fbf74fede8837ad0e523d513ba8679ba51232db5c9ca492877060bd6e92
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 Oct 27, 2026.

Transparency log

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

Download URL metatron_qso-1.6.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 2.4 MB
Tags CPython 3.9 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
293599275cd6e1540035ca3c7bc32101b5b2690edf7d5124f11c6c74bb40580a
BLAKE2b-256 checksum
How to use checksums
5338b59163ac238feb158a437c759350679643ce8ffdb7da30eb3ad016c33a17
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 Oct 27, 2026.

Transparency log

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

Download URL metatron_qso-1.6.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 2.2 MB
Tags CPython 3.9 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
8353417f510e4f22f715007e5e145411fff10edef42df042653d0e6dce7c84b9
BLAKE2b-256 checksum
How to use checksums
375386e56fba0c34d48b2d1ef05a52493d04edc9ec80b7e801daadce84bbe887
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 Oct 27, 2026.

Transparency log

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

Download URL metatron_qso-1.6.0-cp39-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Size 4.4 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
65331e7d0514429df5d59aeffb3c6799255c2444d5d0edc3c259a06af96c2a4e
BLAKE2b-256 checksum
How to use checksums
7028542ab0bc7d3ea5cd23da061587832626af9875581e5ca776aecf970a427e
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 Oct 27, 2026.

Transparency log

Security for metatron-qso 1.6.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.6.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 Oct 27, 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