Skip to content

GraphiQ is a Python library for the simulation, design, and optimization of quantum photonic circuits.

License

Notifications You must be signed in to change notification settings

graphiq-dev/graphiq

Repository files navigation

GraphiQ

PyPI Version Python Versions GitHub Workflow Status Documentation Status arXiv Paper arXiv Paper codecov Code style: black

GraphiQ is a Python library for the simulation, design, and optimization of quantum photonic circuits.

GraphiQ is an open-source framework for designing photonic graph state generation schemes. Photonic graph states are an important resource for many quantum information processing tasks including quantum computing and quantum communication.

Features

  • Diverse backends for the simulation of noisy quantum circuits comprised of hundreds of qubits.

  • Algorithms for the inverse design and optimization of circuits that output a desired quantum state.

  • Circuits support emitter and photonic qubits, as a basis for simulations of realistic near-term quantum photonic devices.

  • Library of models for the study of noise and optical loss.

Installation

GraphiQ can be installed from PyPI,

pip install graphiq 

This package is built on top of the standard Python scientific computing ecosystem, including networkx, numpy, matplotlib, and scipy.

Getting started

GraphiQ can simulate quantum circuits using the density matrix and stabilizer formalisms, and can identify circuits which generate a target quantum state. In this example, we simulate a Bell state circuit and find a generating circuit for a 3-qubit linear cluster state.

import graphiq as gq
from graphiq.benchmarks.circuits import bell_state_circuit
import networkx as nx

#%%
circuit, _ = bell_state_circuit()
backend = gq.StabilizerCompiler()
state = backend.compile(circuit)
print(state)

#%%
target = gq.QuantumState(data=nx.Graph([(1, 2), (2, 3)]), rep_type="g")
metric = gq.Infidelity(target=target)
solver = gq.TimeReversedSolver(compiler=backend, metric=metric, target=target)

#%%
solver.solve()
score, circuit = solver.result
circuit.draw_circuit()

Overview

  • backends - simulate a quantum circuit using different state representations, including, the density matrix, stabilizer, and graph formalisms.
  • noise - models for the study of noise and optical loss in realistic quantum devices.
  • solvers - design and optimization algorithms that identifying circuits satisfying which generate target quantum states.
  • benchmarks - a suite of automated tools for benchmarking solvers and compilers, scaled to run on high-performance computing clusters.
  • visualizers - functions for plotting backends and quantum circuits.
  • tests - automated code testing framework

Documentation

Documentation can be found here. See also "GraphiQ: Quantum circuit design for photonic graph states" (https://arxiv.org/abs/2402.09285), and "Optimization of deterministic photonic graph state generation via local operations" (https://arxiv.org/abs/2401.00635)

Acknowledgement

Version 0.1.0 was jointly developed by Quantum Bridge Technologies, Inc. ("Quantum Bridge") and Ki3 Photonics Technologies under the US Air Force Office of Scientific Research (AFOSR) Grant FA9550-22-1-0062.

Contributing

Quantum Bridge continues to maintain and develop new versions of GraphiQ. Collaborations from the community are encouraged and welcomed.

License

GraphiQ is licensed under an Apache License Version 2.0.

Citation

@article{
  title={GraphiQ: Quantum circuit design for photonic graph states}, 
  author={Jie Lin and Benjamin MacLellan and Sobhan Ghanbari and Julie Belleville and Khuong Tran and Luc Robichaud and Roger G. Melko and Hoi-Kwong Lo and Piotr Roztocki},
  year={2024},
  eprint={2402.09285},
  archivePrefix={arXiv},
  primaryClass={quant-ph}
}