Metadata-Version: 2.4
Name: qml-essentials
Version: 0.2.0
Summary: A toolbox to make working with QML models easier.
Project-URL: Homepage, https://cirkiters.github.io/qml-essentials/
Project-URL: Repository, https://github.com/cirKITers/qml-essentials
Project-URL: Documentation, https://cirkiters.github.io/qml-essentials/
Author-email: Melvin Strobl <melvin.strobl@kit.edu>, Maja Franz <maja.franz@oth-regensburg.de>
Maintainer-email: Melvin Strobl <melvin.strobl@kit.edu>
License-Expression: MIT
License-File: LICENSE
Keywords: qml,quantum,quantum machine learning
Classifier: Environment :: Console
Classifier: Intended Audience :: Science/Research
Classifier: Natural Language :: English
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering :: Physics
Requires-Python: <3.13,>=3.11
Requires-Dist: diffrax>=0.7.2
Requires-Dist: jax>=0.9.0.1
Requires-Dist: jaxlib>=0.9.0.1
Requires-Dist: optax>=0.2.7
Requires-Dist: psutil>=7.2.2
Description-Content-Type: text/markdown

# QML Essentials

<p align="center">
<img src="https://raw.githubusercontent.com/cirKITers/qml-essentials/refs/heads/main/docs/logo.svg" width="200" title="Logo">
</p>
<h3 align="center">A toolbox to make working with QML models easier.</h3>
<br/>

## 📜 About

This repo contains some of the commonly used Ansaetze and coding stuff required for working with QML and Data-Reuploading models.\
There are also dedicated classes to calculate entanglement and expressiblity of a provided model as well as its Fourier coefficients.
Checkout our [Arxiv Paper](https://arxiv.org/abs/2506.06695) to learn more.

## 🚀 Getting Started

```
pip install qml-essentials
```
or with the [uv package manager](https://github.com/astral-sh/uv):
```
uv add qml-essentials
```

to install our package from [PyPI](https://pypi.org/project/qml-essentials/).

<p align="center">
<img src="docs/figures/code.svg" width="640" title="Code Example">
</p>
<p align="center">
<img src="docs/figures/histogram.svg" width="640" title="Histogram Figure">
</p>

You can find details on how to use it and further documentation on the corresponding [Github Page](https://cirkiters.github.io/qml-essentials/).

## 📦 Package Structure

The following diagram provides an overview on how the different components within this package depend on each other.

```mermaid
flowchart LR
    qmless([QML Essentials])
    qmless --> qmless.ansaetze([Ansaetze])
    qmless.ansaetze --> qmless.blocks([Blocks])
    qmless.blocks --> qmless.gates([Gates])
    qmless.blocks --> qmless.topo([Topologies])
    qmless.gates --> qmless.unitary([UnitaryGates])
    qmless.gates --> qmless.pulse([PulseGates])
    qmless --> qmless.coefficients([Coefficients])
    qmless.coefficients --> qmless.analytical([Analytical])
    qmless.coefficients --> qmless.numerical([Numerical])
    qmless.numerical --> qmless.fcc([Fourier Coefficient Correlation])
    qmless.numerical --> qmless.fingerprint([Fourier Fingerprints])
    qmless --> qmless.models([Models])
    qmless --> qmless.expr([Expressibility])
    qmless --> qmless.ent([Entanglement])
    qmless.ent --> qmless.mw([Meyer Wallach])
    qmless.ent --> qmless.re([Relative Entropy])
    qmless.ent --> qmless.bell([Bell Measurement])
    qmless.ent --> qmless.ef([Entanglement of Formation])
    qmless.ent --> qmless.ce([Concentratable Entanglement])

    classDef l1 fill:#1f8f5a,stroke:#1f8f5a,color:#d4f7e8
    classDef l2 fill:#2fb170,stroke:#2fb170,color:#d4f7e8
    classDef l3 fill:#58e3a6,stroke:#58e3a6,color:#272a35
    classDef l4 fill:#a8f0d1,stroke:#a8f0d1,color:#272a35

    linkStyle default stroke-width:2px

    class qmless l1
    class qmless.ansaetze,qmless.coefficients,qmless.models,qmless.expr,qmless.ent l2
    class qmless.blocks,qmless.gates,qmless.numerical,qmless.analytical,qmless.mw,qmless.bell,qmless.ef,qmless.re,qmless.ce l3
    class qmless.unitary,qmless.pulse,qmless.topo,qmless.fcc,qmless.fingerprint l4
```

## 🚧 Contributing

Contributions are highly welcome! 🤗 Take a look at our [Contribution Guidelines](https://github.com/cirKITers/qml-essentials/blob/main/CONTRIBUTING.md).

See our [coverage report](coverage/index.html) if you would like to contribute with further tests.
