Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
83 changes: 44 additions & 39 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# Q-CTRL Open Controls

Q-CTRL Open Controls is an open-source Python package that makes it easy to create
and deploy established error-robust quantum control protocols from the open literature.
The aim of the package is to be the most comprehensive library of published and
tested quantum control techniques developed by the community, with easy to use
export functions allowing users to deploy these controls on:
Q-CTRL Open Controls is an open-source Python package that makes it easy to
create and deploy established error-robust quantum control protocols from the
open literature. The aim of the package is to be the most comprehensive library
of published and tested quantum control techniques developed by the community,
with easy to use export functions allowing users to deploy these controls on:

- Custom quantum hardware
- Publicly available cloud quantum computers
Expand All @@ -28,16 +28,17 @@ latest features then install from source.

### Requirements

To use Q-CTRL Open Controls you will need an installation of Python. We recommend
using the [Anaconda](https://www.anaconda.com/) distribution of Python. Anaconda
includes standard numerical and scientific Python packages which are optimally
compiled for your machine. Follow the [Anaconda Installation](https://docs.anaconda.com/anaconda/install/)
instructions and consult the [Anaconda User guide](https://docs.anaconda.com/anaconda/user-guide/)
to get started.
To use Q-CTRL Open Controls you will need an installation of Python. We
recommend using the [Anaconda](https://www.anaconda.com/) distribution of
Python. Anaconda includes standard numerical and scientific Python packages
which are optimally compiled for your machine. Follow the [Anaconda
Installation](https://docs.anaconda.com/anaconda/install/) instructions and
consult the [Anaconda User
guide](https://docs.anaconda.com/anaconda/user-guide/) to get started.

We use interactive jupyter notebooks for our usage examples. The Anaconda python
distribution comes with editors for these files, or you can [install the jupyter
notebook editor](https://jupyter.org/install) on its own.
We use interactive jupyter notebooks for our usage examples. The Anaconda
python distribution comes with editors for these files, or you can [install the
jupyter notebook editor](https://jupyter.org/install) on its own.

### Using PyPi

Expand All @@ -49,8 +50,9 @@ pip install qctrl-open-controls

### From Source

The source code is hosted on [Github](https://github.com/qctrl/python-open-controls).
The repository can be cloned using
The source code is hosted on
[Github](https://github.com/qctrl/python-open-controls). The repository can be
cloned using

```shell
git clone git@github.com:qctrl/python-open-controls.git
Expand All @@ -65,8 +67,8 @@ Once the clone is complete, you have two options:
python setup.py develop
```

**Note:** We recommend installing using `develop` to point your installation at
the source code in the directory where you cloned the repository.
**Note:** We recommend installing using `develop` to point your installation
at the source code in the directory where you cloned the repository.

1. Using Poetry

Expand All @@ -75,15 +77,16 @@ Once the clone is complete, you have two options:
./setup-poetry.sh
```

**Note:** if you are on Windows, you'll need to install [Poetry](https://poetry.eustace.io)
manually, and use:
**Note:** if you are on Windows, you'll need to install
[Poetry](https://poetry.eustace.io) manually, and use:

```cmd
cd python-open-controls
poetry install
```

Once installed via one of the above methods, test your installation by running `pytest`
Once installed via one of the above methods, test your installation by running
`pytest`
in the `python-open-controls` directory.

```shell
Expand All @@ -92,46 +95,48 @@ pytest

## Usage

Usage depends on the application. We've provided a set of [example Jupyter notebooks](examples)
addressing a variety of quantum control problems. Below is a short description
of each notebook grouped by application. For further details on usage, use the
inline documentation in the source code.
Usage depends on the application. We've provided a set of [example Jupyter
notebooks](examples) addressing a variety of quantum control problems. Below is
a short description of each notebook grouped by application. For further
details on usage, use the inline documentation in the source code.

### Dynamical Decoupling Sequences (DDS)

Q-CTRL Open Controls can create a large library of standard DDS which can be exported
in a variety of formats.
Q-CTRL Open Controls can create a large library of standard DDS which can be
exported in a variety of formats.

#### Create a DDS

[`examples/creating_a_dds.ipynb`](examples/creating_a_dds.ipynb) demonstrates
how to use Q-CTRL Open Controls to create a DDS from a large library of published
dynamical decoupling protocols. It also shows how to make Custom DDS with timings,
offsets and unitaries defined by the user. The notebook shows how to export a
DDS for deployment in the [Q-CTRL products](https://q-ctrl.com/products/) or your
quantum hardware.
how to use Q-CTRL Open Controls to create a DDS from a large library of
published dynamical decoupling protocols. It also shows how to make Custom DDS
with timings, offsets and unitaries defined by the user. The notebook shows how
to export a DDS for deployment in the [Q-CTRL
products](https://q-ctrl.com/products/) or your quantum hardware.

#### Export a DDS to Qiskit

[`examples/export_a_dds_to_qiskit.ipynb`](examples/export_a_dds_to_qiskit.ipynb)
demonstrates how to take a DDS and convert it to a Qiskit circuit so it can be
run on IBM's quantum computers. It also demonstrates using a DDS to improve the
performance of a quantum circuit execution by extending the coherence time of
a qubit.
performance of a quantum circuit execution by extending the coherence time of a
qubit.

#### Export a DDS to Cirq

[`examples/export_a_dds_to_cirq.ipynb`](examples/export_a_dds_to_cirq.ipynb) demonstrates
how to take a DDS and convert it to a Cirq circuit or schdule. It also shows how
to run a circuit or schedule in a Cirq simulator.
[`examples/export_a_dds_to_cirq.ipynb`](examples/export_a_dds_to_cirq.ipynb)
demonstrates how to take a DDS and convert it to a Cirq circuit or schdule. It
also shows how to run a circuit or schedule in a Cirq simulator.

## Contributing

See [Contributing](https://github.com/qctrl/.github/blob/master/CONTRIBUTING.md).
See
[Contributing](https://github.com/qctrl/.github/blob/master/CONTRIBUTING.md).

## Credits

See [Contributors](https://github.com/qctrl/python-open-controls/graphs/contributors).
See
[Contributors](https://github.com/qctrl/python-open-controls/graphs/contributors).

## License

Expand Down
83 changes: 44 additions & 39 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@
Q-CTRL Open Controls
====================

Q-CTRL Open Controls is an open-source Python package that makes it easy to create
and deploy established error-robust quantum control protocols from the open literature.
The aim of the package is to be the most comprehensive library of published and
tested quantum control techniques developed by the community, with easy to use
export functions allowing users to deploy these controls on:
Q-CTRL Open Controls is an open-source Python package that makes it easy to
create and deploy established error-robust quantum control protocols from the
open literature. The aim of the package is to be the most comprehensive library
of published and tested quantum control techniques developed by the community,
with easy to use export functions allowing users to deploy these controls on:


* Custom quantum hardware
Expand Down Expand Up @@ -35,16 +35,17 @@ latest features then install from source.
Requirements
^^^^^^^^^^^^

To use Q-CTRL Open Controls you will need an installation of Python. We recommend
using the `Anaconda <https://www.anaconda.com/>`_ distribution of Python. Anaconda
includes standard numerical and scientific Python packages which are optimally
compiled for your machine. Follow the `Anaconda Installation <https://docs.anaconda.com/anaconda/install/>`_
instructions and consult the `Anaconda User guide <https://docs.anaconda.com/anaconda/user-guide/>`_
to get started.
To use Q-CTRL Open Controls you will need an installation of Python. We
recommend using the `Anaconda <https://www.anaconda.com/>`_ distribution of
Python. Anaconda includes standard numerical and scientific Python packages
which are optimally compiled for your machine. Follow the `Anaconda
Installation <https://docs.anaconda.com/anaconda/install/>`_ instructions and
consult the `Anaconda User
guide <https://docs.anaconda.com/anaconda/user-guide/>`_ to get started.

We use interactive jupyter notebooks for our usage examples. The Anaconda python
distribution comes with editors for these files, or you can `install the jupyter
notebook editor <https://jupyter.org/install>`_ on its own.
We use interactive jupyter notebooks for our usage examples. The Anaconda
python distribution comes with editors for these files, or you can `install the
jupyter notebook editor <https://jupyter.org/install>`_ on its own.

Using PyPi
^^^^^^^^^^
Expand All @@ -58,8 +59,9 @@ Use ``pip`` to install the latest version of Q-CTRL Open Controls.
From Source
^^^^^^^^^^^

The source code is hosted on `Github <https://github.com/qctrl/python-open-controls>`_.
The repository can be cloned using
The source code is hosted on
`Github <https://github.com/qctrl/python-open-controls>`_. The repository can be
cloned using

.. code-block:: shell

Expand All @@ -76,8 +78,8 @@ Once the clone is complete, you have two options:
cd python-open-controls
python setup.py develop

**Note:** We recommend installing using ``develop`` to point your installation at
the source code in the directory where you cloned the repository.
**Note:** We recommend installing using ``develop`` to point your installation
at the source code in the directory where you cloned the repository.

#.
Using Poetry
Expand All @@ -87,15 +89,16 @@ Once the clone is complete, you have two options:
cd python-open-controls
./setup-poetry.sh

**Note:** if you are on Windows, you'll need to install `Poetry <https://poetry.eustace.io>`_
manually, and use:
**Note:** if you are on Windows, you'll need to install
`Poetry <https://poetry.eustace.io>`_ manually, and use:

.. code-block:: cmd

cd python-open-controls
poetry install

Once installed via one of the above methods, test your installation by running ``pytest``
Once installed via one of the above methods, test your installation by running
``pytest``
in the ``python-open-controls`` directory.

.. code-block:: shell
Expand All @@ -105,52 +108,54 @@ in the ``python-open-controls`` directory.
Usage
-----

Usage depends on the application. We've provided a set of `example Jupyter notebooks <examples>`_
addressing a variety of quantum control problems. Below is a short description
of each notebook grouped by application. For further details on usage, use the
inline documentation in the source code.
Usage depends on the application. We've provided a set of `example Jupyter
notebooks <examples>`_ addressing a variety of quantum control problems. Below is
a short description of each notebook grouped by application. For further
details on usage, use the inline documentation in the source code.

Dynamical Decoupling Sequences (DDS)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Q-CTRL Open Controls can create a large library of standard DDS which can be exported
in a variety of formats.
Q-CTRL Open Controls can create a large library of standard DDS which can be
exported in a variety of formats.

Create a DDS
~~~~~~~~~~~~

`\ ``examples/creating_a_dds.ipynb`` <examples/creating_a_dds.ipynb>`_ demonstrates
how to use Q-CTRL Open Controls to create a DDS from a large library of published
dynamical decoupling protocols. It also shows how to make Custom DDS with timings,
offsets and unitaries defined by the user. The notebook shows how to export a
DDS for deployment in the `Q-CTRL products <https://q-ctrl.com/products/>`_ or your
quantum hardware.
how to use Q-CTRL Open Controls to create a DDS from a large library of
published dynamical decoupling protocols. It also shows how to make Custom DDS
with timings, offsets and unitaries defined by the user. The notebook shows how
to export a DDS for deployment in the `Q-CTRL
products <https://q-ctrl.com/products/>`_ or your quantum hardware.

Export a DDS to Qiskit
~~~~~~~~~~~~~~~~~~~~~~

`\ ``examples/export_a_dds_to_qiskit.ipynb`` <examples/export_a_dds_to_qiskit.ipynb>`_
demonstrates how to take a DDS and convert it to a Qiskit circuit so it can be
run on IBM's quantum computers. It also demonstrates using a DDS to improve the
performance of a quantum circuit execution by extending the coherence time of
a qubit.
performance of a quantum circuit execution by extending the coherence time of a
qubit.

Export a DDS to Cirq
~~~~~~~~~~~~~~~~~~~~

`\ ``examples/export_a_dds_to_cirq.ipynb`` <examples/export_a_dds_to_cirq.ipynb>`_ demonstrates
how to take a DDS and convert it to a Cirq circuit or schdule. It also shows how
to run a circuit or schedule in a Cirq simulator.
`\ ``examples/export_a_dds_to_cirq.ipynb`` <examples/export_a_dds_to_cirq.ipynb>`_
demonstrates how to take a DDS and convert it to a Cirq circuit or schdule. It
also shows how to run a circuit or schedule in a Cirq simulator.

Contributing
------------

See `Contributing <https://github.com/qctrl/.github/blob/master/CONTRIBUTING.md>`_.
See
`Contributing <https://github.com/qctrl/.github/blob/master/CONTRIBUTING.md>`_.

Credits
-------

See `Contributors <https://github.com/qctrl/python-open-controls/graphs/contributors>`_.
See
`Contributors <https://github.com/qctrl/python-open-controls/graphs/contributors>`_.

License
-------
Expand Down