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.
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.
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:
- Starring and sharing our repositories: https://github.com/munich-quantum-toolkit
- Contributing code, documentation, tests, or examples via issues and pull requests
- Citing the MQT in your publications (see Cite This)
- Citing our research in your publications (see References)
- Using the MQT in research and teaching, and sharing feedback and use cases
- Sponsoring us on GitHub: https://github.com/sponsors/munich-quantum-toolkit
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.
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)
| File | Size | Uploaded | |
|---|---|---|---|
| mqt_yaqs-0.7.0.tar.gz | 1.8 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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 logRelease 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