Skip to content
munich-quantum-toolkitPublic

About

MQT YAQS - A Tool for Simulating Open Quantum Systems, Noisy Quantum Circuits, and Realistic Quantum Hardware

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

43 stars

Watchers

2 watching

Forks

Repository files navigation

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

About

MQT YAQS - A Tool for Simulating Open Quantum Systems, Noisy Quantum Circuits, and Realistic Quantum Hardware

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

43 stars

Watchers

2 watching

Forks

Releases

Sponsor this project

Used by

Contributors

Languages