• Stars
    star
    363
  • Rank 117,374 (Top 3 %)
  • Language
    Python
  • License
    Apache License 2.0
  • Created almost 8 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Quantum algorithms built using pyQuil.

Grove

A collection of quantum algorithms built using the Rigetti Forest platform. Grove is licensed under the Apache 2.0 license.

Build Status Documentation Status

Grove currently includes:

Features in the alpha package are considered experimental.

Documentation

Documentation is hosted at http://grove-docs.readthedocs.io/en/latest/

Installation

You can install Grove directly from the Python package manager pip using:

pip install quantum-grove

To instead install Grove from source, clone this repository, cd into it, and run:

pip install -e .

This will install Grove’s dependencies if you do not already have them. However, you will still need to install pyQuil and set up a connection to the Rigetti Forest (see below). To enable the tomography module, you will also have to install qutip and cvxpy, see below for more details.

Forest and pyQuil

Grove also requires the Python library for Quil, called pyQuil.

You can install pyQuil directly from the Python package manager pip using:

pip install pyquil

To instead install pyQuil from source, clone the pyQuil GitHub repository, cd into it, and run:

pip install -e .

You will need to make sure that your pyQuil installation is properly configured to run with a quantum virtual machine (QVM) or real quantum processor (QPU) hosted on the Rigetti Forest, which requires an API key. See the pyQuil docs for instructions on how to do this.

Installing the dependencies for Quantum Tomography

Quantum tomography relies on the external packages qutip and and cvxpy, which can be somewhat tricky to install.

You can first attempt to just run

pip install -r requirements.txt
pip install -r optional-requirements.txt
pip install quantum-grove

If the installation of the optional requirements fails, you can manually install the individual packages as

pip install cython==0.24.1 scs==1.2.6
pip install qutip==4.1 cvxpy==0.4.11

These are not the most recent versions but they are the only ones that have consistently worked for us across different platforms and python versions.

For Windows users: Both qutip and cvxpy are fairly tricky to install under windows and we therefore recommend using Anaconda's conda package manager to install these first and then pip to install quantum-grove.

Building the Docs

We use sphinx to build the documentation. To do this, navigate into Grove's top-level directory and run:

sphinx-build -b html docs/ docs/_build

To view the docs navigate to the newly-created docs/_build directory and open the index.html file in a browser. Note that we use the Read the Docs theme for our documentation, so this may need to be installed using pip install sphinx_rtd_theme.

Development and Testing

We use tox and pytest for testing. Tests can be executed from the top-level directory by simply running:

tox

The setup is currently testing Python 2.7 and Python 3.6.

How to cite Grove and Forest

If you use pyquil, grove or other parts of Forest in your research, please cite it as follows:

bibTeX:

@misc{1608.03355,
  title={A Practical Quantum Instruction Set Architecture},
  author={Smith, Robert S and Curtis, Michael J and Zeng, William J},
  journal={arXiv preprint arXiv:1608.03355},
  year={2016}
}

Text:

R. Smith, M. J. Curtis and W. J. Zeng, "A Practical Quantum Instruction Set Architecture," (2015), 
  arXiv:1608.03355 [quant-ph], https://arxiv.org/abs/1608.03355

More Repositories

1

pyquil

A Python library for quantum programming using Quil.
Python
1,322
star
2

quantumflow

QuantumFlow: A Quantum Algorithms Development Toolkit
Python
94
star
3

rpcq

The RPC framework and message specification for @rigetti Quantum Cloud Services.
Common Lisp
70
star
4

forest-openfermion

OpenFermion quantum chemistry plugin for @rigetti Forest.
Python
69
star
5

forest-benchmarking

A library for quantum characterization, verification, validation (QCVV), and benchmarking using pyQuil.
Python
45
star
6

reference-qvm

A reference implementation for a quantum virtual machine in Python
Python
44
star
7

forest-software

A curated list of projects developed using the Forest quantum programming environment.
42
star
8

oqaml

An OCaml based implementation of a Quil QVM
OCaml
37
star
9

gym-forest

Reinforcement learning environment for the classical synthesis of quantum programs.
Python
28
star
10

quantumflow-qaoa

Optimize QAOA circuits for graph maxcut using tensorflow
Python
25
star
11

DiscreteExteriorCalculus.jl

Discrete differential geometry on simplicial complexes
Julia
23
star
12

forest-tutorials

Binder repository of interactive tutorial notebooks for pyQuil and Forest.
Jupyter Notebook
23
star
13

docker-lisp

Docker image that contains SBCL, Quicklisp, and some QL libraries.
Dockerfile
20
star
14

qcs-paper

Binder repository of supplementary interactive notebooks for the QCS paper.
Jupyter Notebook
19
star
15

quil-rs

Quil Parser & Program Builder
Rust
18
star
16

AdmittanceModels.jl

Analysis of linear systems using admittance models
Julia
17
star
17

pyquil-quantum-dice

Getting started with PyQuil: Quantum dice example
Jupyter Notebook
12
star
18

DiscretePDEs.jl

Partial differential equations using Discrete Exterior Calculus
Julia
12
star
19

forest-notebook

Interactive quantum programming with Forest & Jupyter.
Dockerfile
12
star
20

qcs-sdk-rust

Rust SDK for Rigetti Quantum Cloud Services (QCS)
Rust
9
star
21

qcs-cli

The Rigetti Quantum Cloud Services Command Line Interface (CLI)
TypeScript
8
star
22

representability

Representability is a library to work with linearly constrained mathematical programs over tensors.
Python
8
star
23

qiskit-rigetti

Qiskit provider serving Rigetti hardware & simulator backends.
Python
7
star
24

qcs-sdk-qir

Compile & Run Quantum Intermediate Representation (QIR) Programs on Rigetti Quantum Cloud Services (QCS)
Rust
7
star
25

qcs-api-client-python

Python client for the QCS API
Python
3
star
26

gitlab-pipelines

GitLab CI YAML files containing useful template pipelines.
3
star
27

demo-notebooks

Jupyter Notebook
3
star
28

rigetti-pyo3

Utilities to support common patterns in pyo3-generated bindings
Rust
2
star
29

quil-qir

Utilities for Integrating QIR with Quil
LLVM
2
star
30

qcs-api-client-rust

Rust clients for Rigetti APIs
Rust
2
star
31

qcs-sdk-c

C SDK for Rigetti Quantum Cloud Services (QCS)
Rust
2
star
32

pyquil-for-azure-quantum

Microsoft Azure cloud integration for pyQuil
Python
1
star