Metadata-Version: 2.4
Name: qse
Version: 1.1.14
Summary: Quantum Simulation Environment
Author-email: Rajarshi Tiwari <rajarshi.tiwari@ichec.ie>, Karthik Krishnakumar <karthik.krishnakumar@ichec.ie>, James Nelson <james.nelson@ichec.ie>, Sherry Blair <sherry.blair@ichec.ie>, Pablo Suárez Vieites <pablo.suarez@ichec.ie>
Project-URL: homepage, https://github.com/ichec/qse
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy
Requires-Dist: matplotlib
Requires-Dist: qutip
Provides-Extra: dev
Requires-Dist: pytest; extra == "dev"
Requires-Dist: pytest-cov; extra == "dev"
Requires-Dist: pytest-sugar; extra == "dev"
Requires-Dist: ipykernel; extra == "dev"
Requires-Dist: flake8; extra == "dev"
Requires-Dist: black[jupyter]; extra == "dev"
Requires-Dist: isort; extra == "dev"
Requires-Dist: Flake8-pyproject; extra == "dev"
Requires-Dist: pulser; extra == "dev"
Provides-Extra: pulser
Requires-Dist: pulser; extra == "pulser"
Provides-Extra: myqlm
Requires-Dist: myqlm; extra == "myqlm"
Provides-Extra: docs
Requires-Dist: jupyter-book<2.0.0,>=1.0.0; extra == "docs"
Requires-Dist: jupyter-sphinx; extra == "docs"
Requires-Dist: myst-nb>=1.1.0; extra == "docs"
Requires-Dist: sphinx-autoapi>=3.0.0; extra == "docs"
Requires-Dist: sphinx-copybutton; extra == "docs"
Requires-Dist: sphinx-togglebutton; extra == "docs"
Requires-Dist: sphinxcontrib-mermaid; extra == "docs"
Requires-Dist: ipykernel; extra == "docs"
Requires-Dist: ipywidgets; extra == "docs"
Requires-Dist: ipympl; extra == "docs"
Requires-Dist: pulser; extra == "docs"
Requires-Dist: qiskit; extra == "docs"
Dynamic: license-file

# QSE
The Quantum Simulation Environment (QSE) package is adapted from Atomic Simulation Environment (ASE) to suit the needs for an abstract representation for
- `i. defining quantum computing systems`
- `ii. computing operations/simulations`

in a vendor agnostic way. ASE's modular nature, and extensability make it very useful for a similar quantum computing application.

## Installation
See the [installation page](https://ichec.github.io/qse/INSTALLATION.html).

## Contributing
See the [contributing page](https://github.com/ICHEC/qse/blob/main/CONTRIBUTIONS.md).

## QSE Overview
Following are the primary classes for the QSE -

|Class  | Description                            |
|-------|-----------------------------------     |
| Qbit  | Class to represent sinple qubit        |
| Qbits | Class for a collection of qibits       |
| Cell  | Class to construct periodic structures |
|Calculator| Class to construct a suit of computation|

In the current stage the Qbits object can be constructed from coordinates, and periodic structures can be constructed by manipulating cell objects.

QSE layout is divided into two major objects, **Qbits** and **Calculators**.


```mermaid
---
align: center
---

graph LR;
subgraph "Qbits";
SubGraph1Flow(Cell);
Qbits1\nQbit2\nQbit3\nQbit4\nQbit5\nQbit6;
end
Qbits<-->Calculator;
style Qbits fill:, stroke:#333, stroke-width:3
style Calculator fill:,stroke:#333,stroke-width:2px
```



```mermaid
---
title: QSE components
---
classDiagram
    Qbit --|> Qbits
    Cell --|> Qbits
    Calculator <|--|> Qbits

    class Qbit{
        ndarray: position
        ndarray: state
        get_position()
    }
    class Cell{
        int: rank
        ndarray: cellpar
        repeat()
    }
    class Qbits{
        ndarray: positions
        ndarray: states
        get_scaled_positions()
        get_calc()
        set_calc()
    }
    class Calculator{
        qbits
        get_energy()
        get_state()
    }
```

# Dependency tree

![](./qse.svg)

---

Points to note

- Check interoperability of Sequence and waveform.
    - Waveform is any timeseries data. 
    - Sequence is a pair of waveforms one for $\Omega$ and one for $\delta$.
    - The output on the same time grid can be expressed as a waveform.
- Checkout channel

```mermaid
graph TD

L((Lattice))
N((Non-lattice))
A((Analog ))
G((Gate-based))


L---A
N---G
L---G
N---A

```
