Skip to main content

PyPI OS License: MIT CI CD Documentation codecov

MQT Logo

MQT YAQS — Simulation and characterization of quantum systems and their environments

MQT YAQS (pronounced "yaks") is a Python library for simulating quantum systems and studying their interaction with the environment. It supports analog evolution, noisy quantum circuits, circuit equivalence checking, and characterization of environmental memory and noise models. It is part of the Munich Quantum Toolkit (MQT).

YAQS primarily uses tensor networks and quantum trajectories, with statevector and density matrix backends available for smaller simulations. Tensor network simulation cost depends strongly on entanglement and accuracy settings, which can make systems far larger than those accessible to statevector or density matrix methods practical to simulate. We encourage you to explore larger system sizes with our package, as we have put thought and effort into making these methods scalable.

YAQS selects simulation methods from your inputs and provides presets that balance speed and numerical accuracy. You can get started without tuning every numerical setting, while still having control over individual settings when needed.

Documentation

Key Features

Analog, digital, and analog–digital simulations support both noiseless and noisy dynamics.

Capability What users can do
Analog simulation Simulate large quantum systems using tensor networks and Monte Carlo methods.
Digital simulation Simulate quantum circuits using tensor networks and sample measurement outcomes.
Analog–digital simulation Combine analog evolution and quantum circuits in one simulation.
Equivalence checking Check whether two quantum circuits behave the same, measure differences, and study the effects of noise on compilation.
Environmental memory Study a system's environment and understand memory effects from past interactions.
Surrogate models Train models to predict dynamics that depend on past interactions (non-Markovian dynamics; requires PyTorch).
Noise characterization Learn a system's noise model from its observed dynamics.
Hardware modeling Use device Hamiltonians together with realistic noise models.

If you have any questions, feel free to create a discussion or an issue on GitHub.

Getting Started

MQT YAQS requires Python 3.11 or newer and runs on Linux, macOS, and Windows. Install it from PyPI in a virtual environment using uv:

uv pip install mqt.yaqs

Or use pip:

python -m pip install mqt.yaqs

See the installation guide for environment setup and development installation.

Optional extras support OpenQASM 3 input (qasm3) and surrogate training and prediction (torch). The linked guides include installation steps.

Noisy analog evolution

Evolve a 50-site Ising chain with local damping and print the final mean ⟨Z₀⟩.

from mqt.yaqs import AnalogSimParams, Hamiltonian, NoiseModel, Observable, Simulator, State

if __name__ == "__main__":
    length = 50
    state = State(length, initial="zeros")
    hamiltonian = Hamiltonian.ising(length, J=1.0, g=0.5)
    noise = NoiseModel([{"name": "lowering", "sites": [site], "strength": 0.05} for site in range(length)])
    params = AnalogSimParams(
        observables=[Observable("z", sites=0)],
        elapsed_time=1.0,
        dt=0.1,
    )
    simulator = Simulator()
    result = simulator.run(state, hamiltonian, params, noise)
    print(f"Final mean <Z_0>: {result.expectation_values[0][-1]:.3f}")

For more information, read the analog simulation guide.

Noisy circuit simulation

Prepare a 50-qubit GHZ circuit with local damping and print sampled bitstring counts.

from qiskit.circuit import QuantumCircuit

from mqt.yaqs import DigitalSimParams, NoiseModel, Simulator, State

if __name__ == "__main__":
    length = 50
    state = State(length, initial="zeros")
    circuit = QuantumCircuit(length)
    circuit.h(0)
    for site in range(1, length):
        circuit.cx(site - 1, site)
    circuit.measure_all()

    noise = NoiseModel([{"name": "lowering", "sites": [site], "strength": 0.05} for site in range(length)])
    params = DigitalSimParams(shots=1024)
    simulator = Simulator()
    result = simulator.run(state, circuit, params, noise)
    print({format(outcome, f"0{length}b"): count for outcome, count in result.counts.items()})

For more information, read the shot-readout guide.

Environmental memory characterization

Probe environmental memory in a 50-site chain and print the memory diagnostics.

from mqt.yaqs import AnalogSimParams, Hamiltonian, MemoryCharacterizer

if __name__ == "__main__":
    hamiltonian = Hamiltonian.ising(length=50, J=1.0, g=1.0)
    params = AnalogSimParams(dt=0.1)
    characterizer = MemoryCharacterizer()
    result = characterizer.characterize(
        hamiltonian,
        params,
        num_interventions=6,
        preset="quick",
    )
    print(result.summary())

For more information, read the memory characterization guide.

Trajectory count, time-step size, and MPS truncation affect numerical accuracy; see the simulation parameter guide.

The examples use default parallel execution. See the execution guide for worker controls.

Documentation: Quickstart · API reference · Full documentation

Contributors and Supporters

The Munich Quantum Toolkit (MQT) is developed by the Chair for Design Automation at the Technical University of Munich and supported by MQSC. Among others, it is part of the Munich Quantum Software Stack (MQSS) ecosystem, which is being developed as part of the Munich Quantum Valley (MQV) initiative.

MQT Partner Logos

Thank you to all the contributors who have helped make MQT YAQS a reality!

The MQT will remain free, open-source, and permissively licensed—now and in the future. We are firmly committed to keeping it open and actively maintained for the quantum computing community.

To support this endeavor, please consider:

Sponsor the MQT

Cite This

If you use YAQS in academic work, please cite both the YAQS software and the MQT Handbook. Also cite the papers for the methods you use.

YAQS software

We expect to replace this software citation with a dedicated YAQS publication. Please use the citation below for now.

@misc{YAQS,
  author       = {Aaron Sander},
  title        = {{YAQS}: Yet Another Quantum Simulator},
  year         = {2025},
  howpublished = {\url{https://github.com/munich-quantum-toolkit/yaqs}}
}

MQT Handbook

[8] R. Wille et al. The MQT Handbook: A Summary of Design Automation Tools and Software for Quantum Computing. IEEE International Conference on Quantum Software (QSW) (2024).

Research publications

When citing the underlying methods and research, please reference the most relevant publications from the list below:

[1] A. Sander, M. Fröhlich, M. Eigel, J. Eisert, P. Gelß, M. Hintermüller, R. M. Milbradt, R. Wille, C. B. Mendl. Large-scale stochastic simulation of open quantum systems. Nature Communications 16, 11074 (2025).

[2] A. Sander, L. Burgholzer, and R. Wille. Equivalence checking of quantum circuits via intermediary matrix product operator. Phys. Rev. Research 7, 023261 (2025).

[3] A. Sander, M. Fröhlich, M. Ali, M. Eigel, J. Eisert, M. Hintermüller, C. B. Mendl, R. M. Milbradt, R. Wille. Quantum circuit simulation with a local time-dependent variational principle. arXiv:2508.10096 (2025).

[4] A. Sander, S. Cichy, M. Eigel, J. Eisert, M. Fröhlich, T. Peham, R. Wille. Computational regimes in matrix-product-state-based quantum trajectory simulations. arXiv:2606.13779 (2026).

[5] M. Fröhlich, A. Sander, M. Eigel, R. Wille, M. Hintermüller. Noisy quantum circuit simulation with the tensor jump method. arXiv:2607.01323 (2026).

[6] A. R. Ramos Ramos, M. Fröhlich, A. Sander, R. Wille, M. Eigel, P. Gelß, S. Pokutta. Scalable Lindblad Noise Learning via Stochastic Tensor-Network Simulation. arXiv:2608.24668 (2026).

[7] M. Fröhlich, R. M. Milbradt, M. Eigel, A. Sander, R. Wille, C. B. Mendl. Basis-update and Galerkin time integration in canonical matrix-product-state form. arXiv:2608.16994 (2026).


Acknowledgements

The Munich Quantum Toolkit has been supported by the European Research Council (ERC) under the European Union's Horizon 2020 research and innovation program (grant agreement No. 101001318), the Bavarian State Ministry for Science and Arts through the Distinguished Professorship Program, as well as the Munich Quantum Valley, which is supported by the Bavarian state government with funds from the Hightech Agenda Bayern Plus.

MQT Funding Footer

Metadata

Release files for mqt-yaqs 0.7.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 mqt-yaqs 0.7.0
File Size Uploaded
mqt_yaqs-0.7.0.tar.gz 1.8 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for mqt-yaqs 0.7.0
File Interpreter ABI Platform
mqt_yaqs-0.7.0-py3-none-any.whl Python 3 none any Details

Total release size: 2.1 MB

Release files / mqt_yaqs-0.7.0.tar.gz

Download URL mqt_yaqs-0.7.0.tar.gz
Size 1.8 MB
Tags Source
SHA-256 checksum
How to use checksums
0d99c8fa0c49bd157836ddb35a0c4716dba4fe0c97201cb4c3ae61a6f952318c
BLAKE2b-256 checksum
How to use checksums
65d87167b8ebf86decbf9daa453721a4bc7a686f60fe01af6ca3bb1a8ae1de05
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 13, 2026.

Transparency log

Release files / mqt_yaqs-0.7.0-py3-none-any.whl

Download URL mqt_yaqs-0.7.0-py3-none-any.whl
Size 350.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cb68aafbaa0be7b7e15319e7e1e51a175c9e94e26655c632f93be1d1977c983b
BLAKE2b-256 checksum
How to use checksums
1fff55ae96eecbf5a523f016d503ccc8ed8947d63ab02ff86692212fedededb8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 13, 2026.

Transparency log

Release history Release notifications | RSS feed

2

2 release files

1

2 release files

This release

0.7.0 This release

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

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