# QDisc


<!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! -->

<p align="center">

<img width="250" src="figs/qdisc_logo.png">
</p>

<h3 align="center">

<em>Interpretable Machine Learning • Quantum Physics • Scientific
Discovery</em>
</h3>

<p align="center">

<img src="https://badge.fury.io/py/qdisc.svg" alt="PyPI version">
<img src="https://img.shields.io/badge/python-3.11%2B-blue" alt="Python >=3.11">
<img src="https://img.shields.io/badge/license-MIT-green" alt="License">
<img src="https://img.shields.io/badge/docs-online-blue">
</p>

<p align="center">

<a href="https://PaulinDS.github.io/qdisc/">Get started</a> |
<a href="https://PaulinDS.github.io/qdisc/nbs/lib_nbs/index_docs.html">Documentation</a>
|
<a href="https://PaulinDS.github.io/qdisc/nbs/tutorials/J1J2_tuto.html">Tutorials</a>
</p>

`QDisc` is a library for discovering quantum phenomena from raw quantum
data via interpretable machine learning. Without any prior knowledge on
the input data, the pipeline aims to uncover unknown regimes and find
order parameters that can help us identify interesting physics in a
human readable form.

The pipeline is composed of two main components: first, a variational
autoencoder (VAE) learns representations that compress the input into
the minimal set of physical parameters needed to understand the data.
Second, and based on the learned representations, a symbolic regression
(SR) module finds closed form equations able to distinguish the
different identified regimes.

<p align="center">

<img width="700" src="figs/VAE4Spins_pipeline_github.png">

## Getting Started

To begin using the library, we recommend starting with the [tutorial
notebooks](https://PaulinDS.github.io/qdisc/nbs/tutorials). We cover the
two pillars of the `Qdisc` pipeline:

1.  Using variational autoencoders to extract interpretable
    representations
    ([link](https://PaulinDS.github.io/qdisc/nbs/tutorials/J1J2_tuto1_VAE.ipynb))
2.  Finding closed forms for order paramters via symbolic regression
    ([link](https://PaulinDS.github.io/qdisc/nbs/tutorials/J1J2_tuto2_SR.ipynb))

Additional [example
notebooks](https://PaulinDS.github.io/qdisc/nbs/examples) are used to
illustrate specific applications, as those covered in the [manuscript
(TODO)](). For these examples, the quantum data are not provided:

1.  Measurement snapshots of Rydberg atom systems
    ([link](https://PaulinDS.github.io/qdisc/nbs/examples/qdisc_Rydberg.ipynb)).
2.  Classical shadows of the cluster Ising model
    ([link](https://PaulinDS.github.io/qdisc/nbs/examples/qdisc_ClusterIsing.ipynb)).
3.  Hybrid data from a fermionic system
    ([link](https://PaulinDS.github.io/qdisc/nbs/examples/qdisc_FKM.ipynb)).

## Usage

### Installation

Install latest from the GitHub
[repository](https://github.com/PaulinDS/qdisc):

``` sh
$ pip install git+https://github.com/PaulinDS/qdisc.git
```

or from [pypi](https://pypi.org/project/qdisc/)

``` sh
$ pip install qdisc
```

### Documentation

Documentation can be found hosted on this GitHub
[repository](https://github.com/PaulinDS/qdisc)’s
[pages](https://PaulinDS.github.io/qdisc/). Additionally you can find
package manager specific guidelines on
[conda](https://anaconda.org/PaulinDS/qdisc) and
[pypi](https://pypi.org/project/qdisc/) respectively.

## Citing

If you find the librairy usefull in your projects, please cite the
accompanying [paper](paper):

TODO add the citation
