https://github.com/dwavesystems/dwave-gate
dwave-gate is a software package for constructing, modifying and running quantum circuits on the provided state-vector simulator.
https://github.com/dwavesystems/dwave-gate
quantum quantum-computing quantum-programming-language
Last synced: 3 months ago
JSON representation
dwave-gate is a software package for constructing, modifying and running quantum circuits on the provided state-vector simulator.
- Host: GitHub
- URL: https://github.com/dwavesystems/dwave-gate
- Owner: dwavesystems
- License: apache-2.0
- Created: 2022-06-02T20:50:06.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2025-06-06T22:17:00.000Z (8 months ago)
- Last Synced: 2025-09-30T15:10:46.110Z (4 months ago)
- Topics: quantum, quantum-computing, quantum-programming-language
- Language: Python
- Homepage:
- Size: 429 KB
- Stars: 16
- Watchers: 9
- Forks: 9
- Open Issues: 11
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
Awesome Lists containing this project
README
.. image:: https://img.shields.io/pypi/v/dwave-gate.svg
:target: https://pypi.org/project/dwave-gate
.. image:: https://img.shields.io/pypi/pyversions/dwave-gate.svg
:target: https://pypi.org/project/dwave-gate
.. image:: https://circleci.com/gh/dwavesystems/dwave-gate.svg?style=svg
:target: https://circleci.com/gh/dwavesystems/dwave-gate
.. image:: https://codecov.io/gh/dwavesystems/dwave-gate/branch/main/graph/badge.svg
:target: https://codecov.io/gh/dwavesystems/dwave-gate
==========
dwave-gate
==========
.. start_gate_about
``dwave-gate`` is a software package for constructing, modifying and running
quantum circuits on the included simulator. It provides a set of tools that
enables you to:
* Construct quantum circuits using an intuitive context-manager interface.
* Utilize a comprehensive library of quantum gates with simple access to
matrix representations, various decompositions, and more.
* Simulate circuits on a performant (C++) state-vector simulator.
* Easily create your own quantum gates and templates. Any circuit can be
either directly applied in another circuit or converted into a quantum
operation.
This example uses the ``dwave.gate.Circuit`` object's context manager to append
operations to a two-qubit circuit.
>>> import dwave.gate.operations as ops
>>> from dwave.gate import Circuit
>>> circuit = Circuit(2)
>>> with circuit.context as (q, c): # doctest: +SKIP
... ops.X(q[0])
... ops.Hadamard(q[1])
... ops.CZ(q[0], q[1])
... ops.Hadamard(q[1])
You can run the ``dwave.gate.simulator`` simulator on such circuits,
>>> from dwave.gate.simulator import simulate
>>> simulate(circuit)
and then access the resulting state via the state attribute.
>>> circuit.state # doctest: +SKIP
array([0.+0.j, 0.+0.j, 0.+0.j, 1.+0.j])
.. end_gate_about
Installation
============
The simplest way to install ``dwave-gate`` is from
`PyPI `_:
.. code-block:: bash
pip install dwave-gate
It can also be installed from source by cloning this GitHub repository and
running:
.. code-block:: bash
make install
The makefile will also simplify running tests (``make test``), coverage
(``make coverage``), documentation (``make docs``), as well as formatting
(``make format``) the code using the `Black `_
formatter (set to a line-length of 100) and
`isort `_. It's available on both Unix as well
as Windows systems, via the `make.bat` batch file.
Alternatively, the package can be built and installed in development mode using
Python and pip. The simulator operations would need to be generated first by
executing `operation_generation.py`, found in `dwave/gate/simulator`.
.. code-block:: bash
python setup.py build_ext --inplace
pip install -e .
Tests and coverage can be run using Pytest.
.. code-block:: bash
python -m pytest tests/ --cov=dwave.gate
.. note::
For the QIR compiler and loader to work the PyQIR (v0.9.0) is required. It
can be installed manually with ``pip install pyqir==0.9.0`` or as an
optional dependency:
.. code-block:: bash
pip install dwave-gate[qir]
License
=======
Released under the Apache License 2.0. See LICENSE file.
Contributing
============
Ocean's `contributing guide `_
has guidelines for contributing to Ocean packages.
Release Notes
-------------
``dwave-gate`` uses `reno `_ to manage its
release notes.
When making a contribution to ``dwave-gate`` that will affect users, create a
new release note file by running
.. code-block:: bash
reno new your-short-descriptor-here
You can then edit the file created under ``releasenotes/notes/``. Remove any
sections not relevant to your changes. Commit the file along with your changes.
See reno's
`user guide `_ for
details.