sequence


Namesequence JSON
Version 0.6.4 PyPI version JSON
download
home_pageNone
SummarySimulator of QUantum Network Communication (SeQUeNCe) is an open-source tool that allows modeling of quantum networks including photonic network components, control protocols, and applications.
upload_time2024-09-27 00:11:49
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseNone
keywords quantum network discrete event simulator
VCS
bugtrack_url
requirements numpy scipy matplotlib dash dash-core-components dash-html-components dash-bootstrap-components dash-table dash-cytoscape plotly pandas qutip tqdm networkx pytest
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <p align="center">
  <picture>
   <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/sequence-toolbox/SeQUeNCe/master/docs/Sequence_Icon_Name_Dark.png">
   <img src="https://raw.githubusercontent.com/sequence-toolbox/SeQUeNCe/master/docs/Sequence_Icon_Name.svg" alt="sequence icon" width="450" class="center">
  </picture>
</p>

<h3><p align="center">Quantum Networking in SeQUeNCe: Customizable, Scalable, Easy Debugging</p></h3>


[![Documentation](https://img.shields.io/readthedocs/sequence-rtd-tutorial)](https://sequence-rtd-tutorial.readthedocs.io/)
[![PyPi](https://img.shields.io/pypi/v/sequence)](https://pypi.org/project/sequence/)
[![Qutip](https://img.shields.io/badge/integration%20-Qutip-blue)](https://qutip.org/)
[![Paper](https://img.shields.io/badge/10.1088%2F2058-9565%2Fac22f6?label=DOI)](https://iopscience.iop.org/article/10.1088/2058-9565/ac22f6)



<br>

## SeQUeNCe: Simulator of QUantum Network Communication

SeQUeNCe is an open source, discrete-event simulator for quantum networks. As described in our [paper](http://arxiv.org/abs/2009.12000), the simulator includes 5 modules on top of a simulation kernel:
* Hardware
* Entanglement Management
* Resource Management
* Network Management
* Application

These modules can be edited by users to define additional functionality and test protocol schemes, or may be used as-is to test network parameters and topologies.

## Installing
SeQUeNCe requires [Python](https://www.python.org/downloads/) 3.9 or later. You can simply install SeQUeNCe using `pip`:
```
pip install sequence
```

If you wish to make your own edits to the codebase, SeQUeNCe should be installed in [development mode](https://setuptools.pypa.io/en/latest/userguide/development_mode.html) (a.k.a. editable install).
To do so, clone and install the simulator as follows:
```
git clone https://github.com/sequence-toolbox/SeQUeNCe.git
cd SeQUeNCe
make install_editable
```

If you do not have `make` command (i.e., Windows user), replace `make install_editable` with `pip install --editable . --config-settings editable_mode=strict`.


## Citation
Please cite us, thank you!
```
@article{sequence,
author = {Xiaoliang Wu and Alexander Kolar and Joaquin Chung and Dong Jin and Tian Zhong and Rajkumar Kettimuthu and Martin Suchara},
title = {SeQUeNCe: a customizable discrete-event simulator of quantum networks},
journal = {Quantum Science and Technology},
volume = {6},
year = {2021},
month = {sep},
doi = {10.1088/2058-9565/ac22f6},
url = {https://dx.doi.org/10.1088/2058-9565/ac22f6},
publisher = {IOP Publishing},
}
```

<!-- * X. Wu, A. Kolar, J. Chung, D. Jin, T. Zhong, R. Kettimuthu and M. Suchara. "SeQUeNCe: Simulator of QUantum Network Communication." GitHub repository, https://github.com/sequence-toolbox/SeQUeNCe, 2021. -->

## Running the GUI
Once SeQUeNCe has been installed as described above, simply run the `gui.py` script found in the root of the project directory
```
python gui.py
```

## Usage Examples
Many examples of SeQUeNCe in action can be found in the [example](/example) folder. These include both quantum key distribution and entanglement distribution examples.

### Starlight Experiments
Code for the experiments performed in our paper can be found in the file `starlight_experiments.py`. This script uses the `starlight.json` file (also within the example folder) to specify the network topology.

### Jupyter Notebook Examples
The example folder contains several scripts that can be run with jupyter notebook for easy editing and visualization. These files require that the notebook package be installed (Anaconda recommended):
```
pip install notebook
pip install ipywidgets
```
To run each file, simply run
```
jupyter notebook <filename>
```
These examples include:
* `BB84_eg.ipynb`, which uses the BB84 protocol to distribute secure keys between two quantum nodes
* `two_node_eg.ipynb`, which performs entanglement generation between two adjacent quantum routers
* `three_node_eg_ep_es.ipynb`, which performs entanglement generation, purification, and swapping for a linear network of three quantum routers

## Additional Tools

### Network Visualization
The example directory contains an example json file `starlight.json` to specify a network topology, and the utils directory contains the script `draw_topo.py` to visualize json files. To use this script, the Graphviz library must be installed. Installation information can be found on the [Graphviz website](https://www.graphviz.org/download/).

To view a network, simply run the script and specify the relative location of your json file:
```
python utils/draw_topo.py example/starlight.json
```
This script also supports a flag `-m` to visualize BSM nodes created by default on quantum links between routers.

## Libraries Used
This project includes a modified fork of the Quantum++ library version 2.6.
Please see the Quantum++ [`LICENSE`](https://github.com/softwareQinc/qpp/blob/main/LICENSE) file for more information.

## Contact
If you have questions, please contact [Caitao Zhan](https://caitaozhan.github.io/) at [czhan@anl.gov](mailto:czhan@anl.gov).

## Papers that Used and/or Extended SeQUeNCe

* X. Wu et al., ["Simulations of Photonic Quantum Networks for Performance Analysis and Experiment Design"](https://ieeexplore.ieee.org/document/8950718), IEEE/ACM Workshop on Photonics-Optics Technology Oriented Networking, Information and Computing Systems (PHOTONICS), 2019

* X. Wu, A. Kolar, J. Chung, D. Jin, T. Zhong, R. Kettimuthu and M. Suchara. ["SeQUeNCe: A Customizable Discrete-Event Simulator of Quantum Networks"](https://iopscience.iop.org/article/10.1088/2058-9565/ac22f6), Quantum Science and Technology, 2021

* V. Semenenko et al., ["Entanglement generation in a quantum network with finite quantum memory lifetime"](https://pubs.aip.org/avs/aqs/article/4/1/012002/2835237/Entanglement-generation-in-a-quantum-network-with), AVS Quantum Science, 2022

* A. Zang et al., ["Simulation of Entanglement Generation between Absorptive Quantum Memories"](https://ieeexplore.ieee.org/abstract/document/9951205), IEEE QCE 2022

* M.G. Davis et al., ["Towards Distributed Quantum Computing by Qubit and Gate Graph Partitioning Techniques"](https://ieeexplore.ieee.org/abstract/document/10313645), IEEE QCE 2023

* R. Zhou et al., ["A Simulator of Atom-Atom Entanglement with Atomic Ensembles and Quantum Optics"](https://ieeexplore.ieee.org/abstract/document/10313610), IEEE QCE 2023

* X. Wu et al., ["Parallel Simulation of Quantum Networks with Distributed Quantum State Management"](https://dl.acm.org/doi/abs/10.1145/3634701), ACM Transactions on Modeling and Computer Simulation, 2024


Please do a Pull Request to add your paper here! 

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "sequence",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": "Caitao Zhan <czhan@anl.gov>",
    "keywords": "quantum, network, discrete, event, simulator",
    "author": null,
    "author_email": "\"Xiaoliang Wu, Joaquin Chung, Alexander Kolar, Alexander Kiefer, Eugene Wang, Tian Zhong, Rajkumar Kettimuthu, Martin Suchara\" <chungmiranda@anl.gov>",
    "download_url": "https://files.pythonhosted.org/packages/16/fc/d72d1950c56409cdd3172a28eaa1801678e39c5783b983fd9ccb839a36ed/sequence-0.6.4.tar.gz",
    "platform": null,
    "description": "<p align=\"center\">\n  <picture>\n   <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/sequence-toolbox/SeQUeNCe/master/docs/Sequence_Icon_Name_Dark.png\">\n   <img src=\"https://raw.githubusercontent.com/sequence-toolbox/SeQUeNCe/master/docs/Sequence_Icon_Name.svg\" alt=\"sequence icon\" width=\"450\" class=\"center\">\n  </picture>\n</p>\n\n<h3><p align=\"center\">Quantum Networking in SeQUeNCe: Customizable, Scalable, Easy Debugging</p></h3>\n\n\n[![Documentation](https://img.shields.io/readthedocs/sequence-rtd-tutorial)](https://sequence-rtd-tutorial.readthedocs.io/)\n[![PyPi](https://img.shields.io/pypi/v/sequence)](https://pypi.org/project/sequence/)\n[![Qutip](https://img.shields.io/badge/integration%20-Qutip-blue)](https://qutip.org/)\n[![Paper](https://img.shields.io/badge/10.1088%2F2058-9565%2Fac22f6?label=DOI)](https://iopscience.iop.org/article/10.1088/2058-9565/ac22f6)\n\n\n\n<br>\n\n## SeQUeNCe: Simulator of QUantum Network Communication\n\nSeQUeNCe is an open source, discrete-event simulator for quantum networks. As described in our [paper](http://arxiv.org/abs/2009.12000), the simulator includes 5 modules on top of a simulation kernel:\n* Hardware\n* Entanglement Management\n* Resource Management\n* Network Management\n* Application\n\nThese modules can be edited by users to define additional functionality and test protocol schemes, or may be used as-is to test network parameters and topologies.\n\n## Installing\nSeQUeNCe requires [Python](https://www.python.org/downloads/) 3.9 or later. You can simply install SeQUeNCe using `pip`:\n```\npip install sequence\n```\n\nIf you wish to make your own edits to the codebase, SeQUeNCe should be installed in [development mode](https://setuptools.pypa.io/en/latest/userguide/development_mode.html) (a.k.a. editable install).\nTo do so, clone and install the simulator as follows:\n```\ngit clone https://github.com/sequence-toolbox/SeQUeNCe.git\ncd SeQUeNCe\nmake install_editable\n```\n\nIf you do not have `make` command (i.e., Windows user), replace `make install_editable` with `pip install --editable . --config-settings editable_mode=strict`.\n\n\n## Citation\nPlease cite us, thank you!\n```\n@article{sequence,\nauthor = {Xiaoliang Wu and Alexander Kolar and Joaquin Chung and Dong Jin and Tian Zhong and Rajkumar Kettimuthu and Martin Suchara},\ntitle = {SeQUeNCe: a customizable discrete-event simulator of quantum networks},\njournal = {Quantum Science and Technology},\nvolume = {6},\nyear = {2021},\nmonth = {sep},\ndoi = {10.1088/2058-9565/ac22f6},\nurl = {https://dx.doi.org/10.1088/2058-9565/ac22f6},\npublisher = {IOP Publishing},\n}\n```\n\n<!-- * X. Wu, A. Kolar, J. Chung, D. Jin, T. Zhong, R. Kettimuthu and M. Suchara. \"SeQUeNCe: Simulator of QUantum Network Communication.\" GitHub repository, https://github.com/sequence-toolbox/SeQUeNCe, 2021. -->\n\n## Running the GUI\nOnce SeQUeNCe has been installed as described above, simply run the `gui.py` script found in the root of the project directory\n```\npython gui.py\n```\n\n## Usage Examples\nMany examples of SeQUeNCe in action can be found in the [example](/example) folder. These include both quantum key distribution and entanglement distribution examples.\n\n### Starlight Experiments\nCode for the experiments performed in our paper can be found in the file `starlight_experiments.py`. This script uses the `starlight.json` file (also within the example folder) to specify the network topology.\n\n### Jupyter Notebook Examples\nThe example folder contains several scripts that can be run with jupyter notebook for easy editing and visualization. These files require that the notebook package be installed (Anaconda recommended):\n```\npip install notebook\npip install ipywidgets\n```\nTo run each file, simply run\n```\njupyter notebook <filename>\n```\nThese examples include:\n* `BB84_eg.ipynb`, which uses the BB84 protocol to distribute secure keys between two quantum nodes\n* `two_node_eg.ipynb`, which performs entanglement generation between two adjacent quantum routers\n* `three_node_eg_ep_es.ipynb`, which performs entanglement generation, purification, and swapping for a linear network of three quantum routers\n\n## Additional Tools\n\n### Network Visualization\nThe example directory contains an example json file `starlight.json` to specify a network topology, and the utils directory contains the script `draw_topo.py` to visualize json files. To use this script, the Graphviz library must be installed. Installation information can be found on the [Graphviz website](https://www.graphviz.org/download/).\n\nTo view a network, simply run the script and specify the relative location of your json file:\n```\npython utils/draw_topo.py example/starlight.json\n```\nThis script also supports a flag `-m` to visualize BSM nodes created by default on quantum links between routers.\n\n## Libraries Used\nThis project includes a modified fork of the Quantum++ library version 2.6.\nPlease see the Quantum++ [`LICENSE`](https://github.com/softwareQinc/qpp/blob/main/LICENSE) file for more information.\n\n## Contact\nIf you have questions, please contact [Caitao Zhan](https://caitaozhan.github.io/) at [czhan@anl.gov](mailto:czhan@anl.gov).\n\n## Papers that Used and/or Extended SeQUeNCe\n\n* X. Wu et al., [\"Simulations of Photonic Quantum Networks for Performance Analysis and Experiment Design\"](https://ieeexplore.ieee.org/document/8950718), IEEE/ACM Workshop on Photonics-Optics Technology Oriented Networking, Information and Computing Systems (PHOTONICS), 2019\n\n* X. Wu, A. Kolar, J. Chung, D. Jin, T. Zhong, R. Kettimuthu and M. Suchara. [\"SeQUeNCe: A Customizable Discrete-Event Simulator of Quantum Networks\"](https://iopscience.iop.org/article/10.1088/2058-9565/ac22f6), Quantum Science and Technology, 2021\n\n* V. Semenenko et al., [\"Entanglement generation in a quantum network with finite quantum memory lifetime\"](https://pubs.aip.org/avs/aqs/article/4/1/012002/2835237/Entanglement-generation-in-a-quantum-network-with), AVS Quantum Science, 2022\n\n* A. Zang et al., [\"Simulation of Entanglement Generation between Absorptive Quantum Memories\"](https://ieeexplore.ieee.org/abstract/document/9951205), IEEE QCE 2022\n\n* M.G. Davis et al., [\"Towards Distributed Quantum Computing by Qubit and Gate Graph Partitioning Techniques\"](https://ieeexplore.ieee.org/abstract/document/10313645), IEEE QCE 2023\n\n* R. Zhou et al., [\"A Simulator of Atom-Atom Entanglement with Atomic Ensembles and Quantum Optics\"](https://ieeexplore.ieee.org/abstract/document/10313610), IEEE QCE 2023\n\n* X. Wu et al., [\"Parallel Simulation of Quantum Networks with Distributed Quantum State Management\"](https://dl.acm.org/doi/abs/10.1145/3634701), ACM Transactions on Modeling and Computer Simulation, 2024\n\n\nPlease do a Pull Request to add your paper here! \n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Simulator of QUantum Network Communication (SeQUeNCe) is an open-source tool that allows modeling of quantum networks including photonic network components, control protocols, and applications.",
    "version": "0.6.4",
    "project_urls": {
        "Changelog": "https://github.com/sequence-toolbox/SeQUeNCe/blob/master/CHANGELOG.md",
        "Documentation": "https://sequence-toolbox.github.io/",
        "Homepage": "https://github.com/sequence-toolbox/SeQUeNCe",
        "Issues": "https://github.com/sequence-toolbox/SeQUeNCe/issues"
    },
    "split_keywords": [
        "quantum",
        " network",
        " discrete",
        " event",
        " simulator"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a26c0ff5b7e1343e17933f8c5d1309bf2bd95db591cd989964dbed699004ea19",
                "md5": "7f08be21c0ad5ed35633adf9cacea3be",
                "sha256": "247607d0fabedf5c808a5550fcc8984751493403316de43b9aab1bcd74cb8521"
            },
            "downloads": -1,
            "filename": "sequence-0.6.4-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "7f08be21c0ad5ed35633adf9cacea3be",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 148058,
            "upload_time": "2024-09-27T00:11:47",
            "upload_time_iso_8601": "2024-09-27T00:11:47.487370Z",
            "url": "https://files.pythonhosted.org/packages/a2/6c/0ff5b7e1343e17933f8c5d1309bf2bd95db591cd989964dbed699004ea19/sequence-0.6.4-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "16fcd72d1950c56409cdd3172a28eaa1801678e39c5783b983fd9ccb839a36ed",
                "md5": "cdf9b4c66bf967a251224947396b1906",
                "sha256": "4054593bdbf13613594d014e597593e57be0e28aba2696262d3dad8b373a797f"
            },
            "downloads": -1,
            "filename": "sequence-0.6.4.tar.gz",
            "has_sig": false,
            "md5_digest": "cdf9b4c66bf967a251224947396b1906",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 120770,
            "upload_time": "2024-09-27T00:11:49",
            "upload_time_iso_8601": "2024-09-27T00:11:49.784883Z",
            "url": "https://files.pythonhosted.org/packages/16/fc/d72d1950c56409cdd3172a28eaa1801678e39c5783b983fd9ccb839a36ed/sequence-0.6.4.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-09-27 00:11:49",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "sequence-toolbox",
    "github_project": "SeQUeNCe",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "numpy",
            "specs": [
                [
                    ">=",
                    "1.22"
                ]
            ]
        },
        {
            "name": "scipy",
            "specs": [
                [
                    "==",
                    "1.11.4"
                ]
            ]
        },
        {
            "name": "matplotlib",
            "specs": []
        },
        {
            "name": "dash",
            "specs": [
                [
                    ">=",
                    "1.20.0"
                ]
            ]
        },
        {
            "name": "dash-core-components",
            "specs": []
        },
        {
            "name": "dash-html-components",
            "specs": []
        },
        {
            "name": "dash-bootstrap-components",
            "specs": []
        },
        {
            "name": "dash-table",
            "specs": []
        },
        {
            "name": "dash-cytoscape",
            "specs": []
        },
        {
            "name": "plotly",
            "specs": []
        },
        {
            "name": "pandas",
            "specs": []
        },
        {
            "name": "qutip",
            "specs": [
                [
                    "==",
                    "4.7.5"
                ]
            ]
        },
        {
            "name": "tqdm",
            "specs": [
                [
                    ">=",
                    "4.54.0"
                ]
            ]
        },
        {
            "name": "networkx",
            "specs": []
        },
        {
            "name": "pytest",
            "specs": []
        }
    ],
    "lcname": "sequence"
}
        
Elapsed time: 4.78009s