qoqo logo

qoqo

Quantum Operation Quantum Operation
Yes we use reduplication

qoqo/roqoqo is a toolkit to represent quantum circuits by HQS Quantum Simulations.

For a detailed introduction see the user documentation and the qoqo examples repository

What roqoqo/qoqo is:

What roqoqo/qoqo is not:

This repository contains two components:

roqoqo

Crates.io GitHub Workflow Status docs.rs Crates.io codecov

roqoqo provides:

This software is still in the beta stage. Functions and documentation are not yet complete and breaking changes can occur.

Installation

To use roqoqo in a Rust project simply add

TOML roqoqo = {version="1.0"}

to the [dependencies] section of the project Cargo.toml.

qoqo

Documentation Status GitHub Workflow Status PyPI PyPI - Format Crates.io Crates.io

qoqo provides the Python interface to the underlying roqoqo library, including:

Installation

On Linux, macOS and Windows on x86 precompiled packages can be found on PyPi and installed via

shell pip install qoqo

If no pre-built python wheel is available for your architecture you can install qoqo from the source distribution using a rust toolchain (for example available via rustup) and maturin (also available via pip). After installing the rust toolchain and maturing run the same pip install command as above. In some cases on macOS it can be necessary to provide specific linker arguments as shown below:

```shell

can be necessary on mscOS

RUSTFLAGS="-C link-arg=-undefined -C link-arg=dynamic_lookup" pip install qoqo ```

shell RUSTFLAGS="-C link-arg=-undefined -C link-arg=dynamic_lookup" maturin build -m qoqo/Cargo.toml --release pip install target/wheels/$NAME_OF_WHEEL

When using qoqo in a rust project providing a python interface add

TOML qoqo = {version="1.0", default-features=false}

to the [dependencies] section of the project Cargo.toml.

A source distribution now exists but requires a Rust install with a rust version > 1.47 and a maturin version { >= 0.12, <0.13 } in order to be built.

Examples

Since qoqo provides a full python interface to the underlying roqoqo library, there are examples for python users and for Rust users.

For an expanded collection of examples please see the jupyter notebooks in the extra repository qoqoexamples. The qoqo examples require the qoqoquest and qoqo_mock interfaces.

This project is partly supported by PlanQK.

Contributing

We welcome contributions to the project. If you want to contribute code, please have a look at CONTRIBUTE.md for our code contribution guidelines.