Metadata-Version: 2.1
Name: lightworks
Version: 1.0.0
Summary: Open-source Python SDK for photonic quantum computation.
Home-page: https://github.com/Aegiq/lightworks
Author: Aegiq Ltd.
License: Apache 2.0
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Natural Language :: English
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Operating System :: OS Independent
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: thewalrus ==0.20.0
Requires-Dist: matplotlib >=3.7.1
Requires-Dist: pandas >=2.0.1
Requires-Dist: numpy >=1.24.3
Requires-Dist: bayesian-optimization >=1.4.3
Requires-Dist: drawsvg >=2.3.0
Requires-Dist: zoopt >=0.4.2
Requires-Dist: pyarrow
Requires-Dist: ipython

![Tests](https://github.com/Aegiq/lightworks/actions/workflows/tests.yml/badge.svg?event=push)
![Docs](https://github.com/Aegiq/lightworks/actions/workflows/sphinx_deploy.yml/badge.svg?event=push)

# Lightworks

Lightworks is an open source Python SDK, designed for the encoding of linear optic circuits for application in photonic quantum computing. These circuits can be packaged with the other SDK components to create quantum jobs for execution on photonic hardware. Lightworks focuses on discrete-variable quantum computing, and can be utilized for both qubit and boson sampling paradigms.

Included within Lightworks in also an emulator, allowing users to evaluate the operation and performance of a particular configuration before hardware execution. There is a number of simulation objects, each offering a differing functionality, ranging from direct quantum state evolution to replicating the typical sampling process from a photonic system. The emulator also supports complex photonic specific noise modelling, providing a valuable insight into the effect of imperfections in photon generation, QPU programming, and detectors, on a target algorithm.

Key features:
- Circuit
- State
- Emulator

## Usage

Python 3.10+ is required.

Currently the package is not hosted on pypi, this will be added once general 1.0 release is ready. For now, installation can be achieved with:

```console
pip install git+https://github.com/Aegiq/lightworks
```

## Documentation

Documentation of this package is hosted at: https://aegiq.github.io/lightworks/

## Roadmap

The following features/improvements are planned to be added to Lightworks in the future.

1) Expansion of emulator beyond permanent calculation, adding some of the alternate algorithms designed to improve computation & sampling speed (Clifford, SLOS, etc...).
2) Improvement of display method to add option to adjust display style beyond the current 'Aegiq' colour theme that is used.
3) Conversion from qubit to photonic systems - potentially using an existing framework suggest as Qiskit.
4) Hardware job submission.

## Contributing

Contributions to Lightworks can be made via a pull request. If you have an idea for a feature that you'd like to implement it may be best to first raise this in the issues sections, as it may be the case that this is already in development internally or is potentially incompatible with the existing Lightworks framework.

Some things to keep in mind before contributing:
1) Any pull requests should currently be made to the development branch and not main. 
2) We aim to follow the Google Python style guide (https://google.github.io/styleguide/pyguide.html) including their proposed doc strings format. 
3) The existing unit tests should be used to ensure the core functionality of Lightworks remains intact. Additionally, any new features should ideally include a set of tests.
4) Type hints are used throughout the code to indicate the expected inputs and return for each class and function within Lightworks. These are also used for generating the Sphinx documentation.
5) Where possible, a line limit of 80 is used across the code.
