Skip to content

Commit

Permalink
[Docs] Harmonise README with docs (#55)
Browse files Browse the repository at this point in the history
Co-authored-by: Mario Dagrada <[email protected]>
  • Loading branch information
RolandMacDoland and madagra committed Oct 10, 2023
1 parent 8af10dc commit 1b4960f
Show file tree
Hide file tree
Showing 4 changed files with 54 additions and 46 deletions.
3 changes: 2 additions & 1 deletion .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ jobs:
runs-on: ubuntu-22.04

steps:
- uses: actions/checkout@v4
- name: Checkout Qadence
uses: actions/checkout@v4
- name: Set up Python 3.x
uses: actions/setup-python@v4
with:
Expand Down
9 changes: 8 additions & 1 deletion .github/workflows/test_fast.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@ jobs:
matrix:
python-version: ["3.9", "3.10"]
steps:
- uses: actions/checkout@v4
- name: Checkout Qadence
uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
Expand All @@ -32,3 +33,9 @@ jobs:
- name: Run fast tests
run: |
hatch -v run test -m "not slow"
- name: Upload coverage data
uses: actions/upload-artifact@v3
with:
name: "coverage-data"
path: .coverage.*
if-no-files-found: ignore
86 changes: 43 additions & 43 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,74 +1,74 @@
# Qadence

*Qadence* is a Python package that provides a simple interface to build _**digital-analog quantum
programs**_ with tunable interaction defined on _**arbitrary qubit register layouts**_.
**Qadence** is a Python package that provides a simple interface to build _**digital-analog quantum
programs**_ with tunable qubit interaction defined on _**arbitrary register topologies**_ realizable on neutral atom devices.

[![pre-commit](https://github.com/pasqal-io/qadence/actions/workflows/lint.yml/badge.svg)](https://github.com/pasqal-io/qadence/actions/workflows/lint.yml)
[![tests](https://github.com/pasqal-io/qadence/actions/workflows/test_fast.yml/badge.svg)](https://github.com/pasqal-io/qadence/actions/workflows/test_fast.yml)
[![Build documentation](https://github.com/pasqal-io/qadence/actions/workflows/build_docs.yml/badge.svg)](https://pasqal-io.github.io/qadence/latest)

Documentation can be found [here](https://pasqal-io.github.io/qadence/latest).

## Feature highlights

* A [block-based system](tutorials/getting_started.md) for composing _**complex digital-analog
programs**_ in a flexible and extensible manner. Heavily inspired by
[`Yao.jl`](https://github.com/QuantumBFS/Yao.jl) and functional programming concepts.

* A [simple interface](digital_analog_qc/analog-basics.md) to work with _**interacting qubit systems**_
using [arbitrary qubit registers](tutorials/register.md).

* Intuitive, [expression-based system](tutorials/parameters.md) built on top of `sympy` to construct
_**parametric quantum programs**_.
programs**_ in a flexible and scalable manner, inspired by the Julia quantum SDK
[Yao.jl](https://github.com/QuantumBFS/Yao.jl) and functional programming concepts.

* [Higher-order generalized parameter shift](link to psr tutorial) rules for _**differentiating
arbitrary quantum operations**_ on real hardware.
* A [simple interface](digital_analog_qc/analog-basics.md) to work with _**interacting neutral-atom qubit systems**_
using [arbitrary registers topologies](tutorials/register.md).

* Out-of-the-box automatic differentiability of quantum programs using [https://pytorch.org](https://pytorch.org)
* An intuitive [expression-based system](tutorials/parameters.md) developed on top of the symbolic library [Sympy](https://www.sympy.org/en/index.html) to construct _**parametric quantum programs**_ easily.

* `QuantumModel`s to make `QuantumCircuit`s differentiable and runnable on a variety of different
backends like state vector simulators, tensor network emulators and real devices.
* [High-order generalized parameter shift rules](link to psr tutorial) for _**differentiating parametrized quantum operations**_.

Documentation can be found here: [https://pasqal-io.github.io/qadence/latest/](https://pasqal-io.github.io/qadence/latest/).
* Out-of-the-box _**automatic differentiability**_ of quantum programs with [PyTorch](https://pytorch.org/) integration.

* _**Efficient execution**_ on a variety of different purpose backends: from state vector simulators to tensor network emulators and real devices.

## Citation
## Installation guide

If you use Qadence for a publication, we kindly ask you to cite our work using the bibtex citation:
Qadence can be installed from PyPI with `pip` as follows:

```
@misc{qadence2023pasqal,
url = {https://github.com/pasqal-io/qadence},
title = {Qadence: {A} {D}igital-analog quantum programming interface.},
year = {2023}
}
```bash
pip install qadence
```

The default backend for Qadence is [PyQTorch](https://github.com/pasqal-io/pyqtorch), a differentiable state vector simulator for digital-analog simulation. It is possible to install additional backends and the circuit visualization library using the following extras:

## Installation guide
* `braket`: the [Braket](https://github.com/amazon-braket/amazon-braket-sdk-python) backend.
* `pulser`: the [Pulser](https://github.com/pasqal-io/Pulser) backend for composing, simulating and executing pulse sequences for neutral-atom quantum devices.
* `visualization`: to display diagrammatically quantum circuits.

Qadence can be install with `pip` as follows:
by running:

```bash
pip install qadence[pulser,visualization]
pip install qadence[braket, pulser, visualization]
```

The default backend for qadence is [`pyqtorch`](https://github.com/pasqal-io/pyqtorch) (a
differentiable state vector simulator). You can install one or all of the following additional
backends and the circuit visualization library using the following extras:
!!! warning
In order to correctly install the `visualization` extra, the `graphviz` package needs to be installed
in your system:

* `braket`: install the Amazon Braket quantum backend
* `pulser`: install the [Pulser](https://github.com/pasqal-io/Pulser) backend. Pulser is a framework
for composing, simulating and executing pulse sequences for neutral-atom quantum devices.
* `visualization`: install the library necessary to visualize quantum circuits.
```bash
# on Ubuntu
sudo apt install graphviz

**NOTE**: In order to correctly install the "visualization" extra, you need to have `graphviz` installed
in your system. This depends on the operating system you are using:
# on MacOS
brew install graphviz

```bash
# on Ubuntu
sudo apt install graphviz
# via conda
conda install python-graphviz
```

# on MacOS
brew install graphviz
## Citation

If you use Qadence for a publication, we kindly ask you to cite our work using the following BibTex entry:

# via conda
conda install python-graphviz
```
@misc{qadence2023pasqal,
url = {https://github.com/pasqal-io/qadence},
title = {Qadence: {A} {D}igital-analog quantum programming interface.},
year = {2023}
}
```
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ dependencies = [
features = ["all"]

[tool.hatch.envs.default.scripts]
test = "pytest --cov-report=xml --cov-config=pyproject.toml --cov=qadence --cov=tests --ignore=./tests/test_examples.py --ignore=./tests/test_notebooks.py {args}"
test = "pytest --cov-report lcov --cov-config=pyproject.toml --cov=qadence --cov=tests --ignore=./tests/test_examples.py --ignore=./tests/test_notebooks.py {args}"
test-examples = "pytest ./tests/test_examples.py {args}"
test-notebooks = "pytest ./tests/test_notebooks.py {args}"
no-cov = "cov --no-cov {args}"
Expand Down

0 comments on commit 1b4960f

Please sign in to comment.