sequence 0.8.5.dev217420613__tar.gz → 1.0.0.dev1539950__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- sequence-1.0.0.dev1539950/LICENSE +41 -0
- sequence-1.0.0.dev1539950/PKG-INFO +209 -0
- sequence-1.0.0.dev1539950/README.md +165 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/pyproject.toml +25 -9
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/__init__.py +1 -1
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/app/request_app.py +22 -12
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/components/bsm.py +11 -13
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/components/circuit.py +0 -1
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/components/detector.py +3 -3
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/components/interferometer.py +2 -2
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/components/memory.py +19 -16
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/components/optical_channel.py +10 -8
- sequence-1.0.0.dev1539950/sequence/constants.py +60 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/entanglement_management/__init__.py +1 -1
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/entanglement_management/entanglement_protocol.py +3 -3
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/entanglement_management/generation/barret_kok.py +1 -2
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/entanglement_management/generation/generation_base.py +9 -12
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/entanglement_management/generation/generation_message.py +0 -1
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/entanglement_management/generation/single_heralded.py +2 -4
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/entanglement_management/purification/bbpssw_bds.py +5 -7
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/entanglement_management/purification/bbpssw_circuit.py +2 -2
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/entanglement_management/purification/bbpssw_protocol.py +16 -18
- sequence-1.0.0.dev1539950/sequence/entanglement_management/swapping/__init__.py +9 -0
- sequence-1.0.0.dev1539950/sequence/entanglement_management/swapping/swapping_base.py +392 -0
- sequence-1.0.0.dev1539950/sequence/entanglement_management/swapping/swapping_bds.py +218 -0
- sequence-1.0.0.dev1539950/sequence/entanglement_management/swapping/swapping_circuit.py +205 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/app.py +0 -2
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/simulator_bindings.py +1 -3
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/kernel/eventlist.py +10 -12
- sequence-1.0.0.dev1539950/sequence/kernel/quantum_manager/__init__.py +19 -0
- sequence-1.0.0.dev1539950/sequence/kernel/quantum_manager/base.py +252 -0
- sequence-1.0.0.dev1539950/sequence/kernel/quantum_manager/bell_diagonal.py +66 -0
- sequence-1.0.0.dev1539950/sequence/kernel/quantum_manager/density_matrix.py +187 -0
- sequence-1.0.0.dev1539950/sequence/kernel/quantum_manager/fock_density_matrix.py +314 -0
- sequence-1.0.0.dev1539950/sequence/kernel/quantum_manager/ket_vector.py +192 -0
- sequence-1.0.0.dev1539950/sequence/kernel/quantum_manager/stabilizer.py +777 -0
- sequence-1.0.0.dev1539950/sequence/kernel/quantum_state/__init__.py +28 -0
- sequence-1.0.0.dev1539950/sequence/kernel/quantum_state/base.py +24 -0
- sequence-1.0.0.dev1539950/sequence/kernel/quantum_state/bell_diagonal.py +41 -0
- sequence-1.0.0.dev1539950/sequence/kernel/quantum_state/density_matrix.py +56 -0
- sequence-1.0.0.dev1539950/sequence/kernel/quantum_state/free.py +225 -0
- sequence-1.0.0.dev1539950/sequence/kernel/quantum_state/ket_vector.py +54 -0
- sequence-1.0.0.dev1539950/sequence/kernel/quantum_state/stabilizer.py +134 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/kernel/timeline.py +6 -9
- sequence-1.0.0.dev1539950/sequence/network_management/__init__.py +4 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/network_management/forwarding.py +15 -10
- sequence-1.0.0.dev1539950/sequence/network_management/memory_timecard.py +85 -0
- sequence-1.0.0.dev1539950/sequence/network_management/network_manager.py +261 -0
- sequence-1.0.0.dev1539950/sequence/network_management/reservation.py +82 -0
- sequence-1.0.0.dev1539950/sequence/network_management/routing/__init__.py +8 -0
- sequence-1.0.0.dev1539950/sequence/network_management/routing/routing_base.py +111 -0
- {sequence-0.8.5.dev217420613/sequence/network_management → sequence-1.0.0.dev1539950/sequence/network_management/routing}/routing_distributed.py +220 -161
- sequence-1.0.0.dev1539950/sequence/network_management/routing/routing_static.py +41 -0
- sequence-1.0.0.dev1539950/sequence/network_management/rsvp.py +239 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/protocol.py +12 -6
- sequence-1.0.0.dev1539950/sequence/resource_management/action_condition_set.py +492 -0
- sequence-1.0.0.dev1539950/sequence/resource_management/resource_manager.py +544 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/resource_management/rule_manager.py +12 -11
- sequence-1.0.0.dev1539950/sequence/topology/__init__.py +4 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/topology/dqc_net_topo.py +5 -8
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/topology/node.py +51 -54
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/topology/router_net_topo.py +24 -16
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/topology/topology.py +21 -12
- sequence-1.0.0.dev1539950/sequence/utils/__init__.py +3 -0
- sequence-1.0.0.dev1539950/sequence/utils/config_generator_cli.py +464 -0
- sequence-1.0.0.dev1539950/sequence/utils/dqc_node_generator.py +20 -0
- sequence-1.0.0.dev1539950/sequence/utils/draw_topo.py +81 -0
- sequence-1.0.0.dev1539950/sequence/utils/graphs.py +256 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/utils/noise.py +5 -4
- sequence-1.0.0.dev1539950/sequence/utils/nx_converter.py +189 -0
- sequence-0.8.5.dev217420613/PKG-INFO +0 -166
- sequence-0.8.5.dev217420613/README.md +0 -124
- sequence-0.8.5.dev217420613/sequence/constants.py +0 -36
- sequence-0.8.5.dev217420613/sequence/entanglement_management/swapping.py +0 -366
- sequence-0.8.5.dev217420613/sequence/kernel/quantum_manager.py +0 -944
- sequence-0.8.5.dev217420613/sequence/kernel/quantum_state.py +0 -411
- sequence-0.8.5.dev217420613/sequence/network_management/__init__.py +0 -4
- sequence-0.8.5.dev217420613/sequence/network_management/network_manager.py +0 -232
- sequence-0.8.5.dev217420613/sequence/network_management/reservation.py +0 -823
- sequence-0.8.5.dev217420613/sequence/network_management/routing_static.py +0 -78
- sequence-0.8.5.dev217420613/sequence/qlan/correction.py +0 -191
- sequence-0.8.5.dev217420613/sequence/qlan/graph_gen.py +0 -55
- sequence-0.8.5.dev217420613/sequence/qlan/measurement.py +0 -357
- sequence-0.8.5.dev217420613/sequence/resource_management/resource_manager.py +0 -373
- sequence-0.8.5.dev217420613/sequence/topology/__init__.py +0 -4
- sequence-0.8.5.dev217420613/sequence/topology/qlan/client.py +0 -127
- sequence-0.8.5.dev217420613/sequence/topology/qlan/orchestrator.py +0 -193
- sequence-0.8.5.dev217420613/sequence/topology/qlan_star_topo.py +0 -198
- sequence-0.8.5.dev217420613/sequence/utils/__init__.py +0 -4
- sequence-0.8.5.dev217420613/sequence/utils/config_generator.py +0 -130
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/app/__init__.py +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/app/random_request.py +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/app/teleport_app.py +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/components/__init__.py +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/components/beam_splitter.py +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/components/fiber_stretcher.py +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/components/light_source.py +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/components/mirror.py +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/components/photon.py +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/components/spdc_lens.py +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/components/switch.py +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/components/transducer.py +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/components/transmon.py +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/entanglement_management/generation/__init__.py +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/entanglement_management/purification/__init__.py +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/entanglement_management/teleportation.py +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/__init__.py +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/assets/argonne.png +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/assets/attributions_req +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/assets/bsmnode.png +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/assets/detector.png +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/assets/logo.png +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/assets/photonsource.png +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/assets/quantum.png +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/assets/repeater.png +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/assets/router.png +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/assets/sequence.jpg +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/assets/svg/bsmnode.svg +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/assets/svg/detector.svg +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/assets/svg/photonsource.svg +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/assets/svg/quantum.svg +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/assets/svg/repeater.svg +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/assets/svg/router.svg +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/assets/svg/temp.svg +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/assets/temp.png +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/css_styles.py +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/default_params.json +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/default_templates.json +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/graph_comp.py +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/layout.py +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/menus.py +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/run_gui.py +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/starlight.json +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/test.txt +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/user_templates.json +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/kernel/__init__.py +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/kernel/entity.py +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/kernel/event.py +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/kernel/process.py +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/kernel/quantum_utils.py +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/message.py +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/qkd/BB84.py +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/qkd/__init__.py +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/qkd/cascade.py +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/resource_management/__init__.py +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/resource_management/memory_manager.py +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/topology/qkd_topo.py +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/utils/encoding.py +0 -0
- {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/utils/log.py +0 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
Copyright © 2026, UChicago Argonne, LLC
|
|
2
|
+
|
|
3
|
+
All Rights Reserved
|
|
4
|
+
|
|
5
|
+
Software Name: SeQUeNCe: Simulator of QUantum Network Communication
|
|
6
|
+
|
|
7
|
+
By: Argonne National Laboratory, Illinois Institute of Technology, and
|
|
8
|
+
Encore Consulting Services, Inc.
|
|
9
|
+
|
|
10
|
+
OPEN SOURCE LICENSE
|
|
11
|
+
|
|
12
|
+
Redistribution and use in source and binary forms, with or without
|
|
13
|
+
modification, are permitted provided that the following conditions are met:
|
|
14
|
+
|
|
15
|
+
1. Redistributions of source code must retain the above copyright notice,
|
|
16
|
+
this list of conditions and the following disclaimer.
|
|
17
|
+
|
|
18
|
+
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
19
|
+
this list of conditions and the following disclaimer in the documentation
|
|
20
|
+
and/or other materials provided with the distribution.
|
|
21
|
+
|
|
22
|
+
3. Neither the name of the copyright holder nor the names of its contributors
|
|
23
|
+
may be used to endorse or promote products derived from this software without
|
|
24
|
+
specific prior written permission.
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
*****************************************************************************
|
|
28
|
+
DISCLAIMER
|
|
29
|
+
|
|
30
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
31
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
32
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
33
|
+
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
|
34
|
+
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
35
|
+
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
36
|
+
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
37
|
+
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
38
|
+
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
|
39
|
+
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
|
40
|
+
OF SUCH DAMAGE.
|
|
41
|
+
*****************************************************************************
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: sequence
|
|
3
|
+
Version: 1.0.0.dev1539950
|
|
4
|
+
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.
|
|
5
|
+
Keywords: quantum,network,discrete,event,simulator
|
|
6
|
+
Author: Xiaoliang Wu, Joaquin Chung, Alexander Kolar, Alexander Kiefer, Eugene Wang, Tian Zhong, Rajkumar Kettimuthu, Martin Suchara, Robert Hayek, Ansh Singal, Caitao Zhan
|
|
7
|
+
Author-email: Xiaoliang Wu, Joaquin Chung, Alexander Kolar, Alexander Kiefer, Eugene Wang, Tian Zhong, Rajkumar Kettimuthu, Martin Suchara, Robert Hayek, Ansh Singal, Caitao Zhan <czhan@anl.gov>
|
|
8
|
+
License-File: LICENSE
|
|
9
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
10
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
12
|
+
Requires-Dist: dash>=3.3.0
|
|
13
|
+
Requires-Dist: dash-bootstrap-components>=2.0.4
|
|
14
|
+
Requires-Dist: dash-core-components>=2.0.0
|
|
15
|
+
Requires-Dist: dash-cytoscape>=1.0.2
|
|
16
|
+
Requires-Dist: dash-html-components>=2.0.0
|
|
17
|
+
Requires-Dist: dash-table>=5.0.0
|
|
18
|
+
Requires-Dist: gmpy2>=2.2.2
|
|
19
|
+
Requires-Dist: graphviz>=0.21
|
|
20
|
+
Requires-Dist: ipywidgets>=8.1.8
|
|
21
|
+
Requires-Dist: jupyterlab>=4.5.0
|
|
22
|
+
Requires-Dist: matplotlib>=3.10.7
|
|
23
|
+
Requires-Dist: networkx>=3.6.1
|
|
24
|
+
Requires-Dist: numpy>=2.3.5
|
|
25
|
+
Requires-Dist: pandas>=2.3.3
|
|
26
|
+
Requires-Dist: plotly>=6.5.0
|
|
27
|
+
Requires-Dist: pytest>=9.0.2
|
|
28
|
+
Requires-Dist: pyyaml>=6.0.3
|
|
29
|
+
Requires-Dist: qutip>=5.2.2
|
|
30
|
+
Requires-Dist: qutip-qip>=0.4.1
|
|
31
|
+
Requires-Dist: scipy>=1.16.3
|
|
32
|
+
Requires-Dist: seaborn>=0.13.2
|
|
33
|
+
Requires-Dist: tqdm>=4.67.1
|
|
34
|
+
Requires-Dist: typer>=0.24.1
|
|
35
|
+
Requires-Dist: stim>=1.15
|
|
36
|
+
Maintainer: Caitao Zhan, Robert Hayek
|
|
37
|
+
Maintainer-email: Caitao Zhan <czhan@anl.gov>, Robert Hayek <rhayek@anl.gov>
|
|
38
|
+
Requires-Python: >=3.12, <3.15
|
|
39
|
+
Project-URL: Homepage, https://github.com/sequence-toolbox/SeQUeNCe
|
|
40
|
+
Project-URL: Documentation, https://sequence-rtd-tutorial.readthedocs.io/
|
|
41
|
+
Project-URL: Issues, https://github.com/sequence-toolbox/SeQUeNCe/issues
|
|
42
|
+
Project-URL: Changelog, https://github.com/sequence-toolbox/SeQUeNCe/blob/master/CHANGELOG.md
|
|
43
|
+
Description-Content-Type: text/markdown
|
|
44
|
+
|
|
45
|
+
<p align="center">
|
|
46
|
+
<picture>
|
|
47
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/sequence-toolbox/SeQUeNCe/master/docs/Sequence_Icon_Name_Dark.png">
|
|
48
|
+
<img src="https://raw.githubusercontent.com/sequence-toolbox/SeQUeNCe/master/docs/Sequence_Icon_Name.svg" alt="sequence icon" width="450" class="center">
|
|
49
|
+
</picture>
|
|
50
|
+
</p>
|
|
51
|
+
|
|
52
|
+
<h3><p align="center">Quantum Networking in SeQUeNCe: Customizable, Scalable, Easy Debugging</p></h3>
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
<div align="center">
|
|
57
|
+
|
|
58
|
+
[](https://pypi.org/project/sequence/)
|
|
59
|
+

|
|
60
|
+
[](https://sequence-rtd-tutorial.readthedocs.io/)
|
|
61
|
+
[](https://qutip.org/)
|
|
62
|
+
[](https://github.com/quantumlib/Stim)
|
|
63
|
+
[](https://iopscience.iop.org/article/10.1088/2058-9565/ac22f6)
|
|
64
|
+
[](https://pypistats.org/packages/sequence)
|
|
65
|
+
|
|
66
|
+
</div>
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
<br>
|
|
71
|
+
|
|
72
|
+
## SeQUeNCe: Simulator of QUantum Network Communication
|
|
73
|
+
|
|
74
|
+
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:
|
|
75
|
+
* Hardware
|
|
76
|
+
* Entanglement Management
|
|
77
|
+
* Resource Management
|
|
78
|
+
* Network Management
|
|
79
|
+
* Application
|
|
80
|
+
|
|
81
|
+
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.
|
|
82
|
+
|
|
83
|
+
## Installation
|
|
84
|
+
### For Users
|
|
85
|
+
SeQUeNCe requires [Python](https://www.python.org/downloads/) 3.12 or later. You can install SeQUeNCe using `pip`:
|
|
86
|
+
```
|
|
87
|
+
pip install sequence
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Development Environment Setup
|
|
91
|
+
If you wish to modify the source code, use an editable installation with either pip or [uv](https://docs.astral.sh/uv/):
|
|
92
|
+
|
|
93
|
+
Editable installations let Python use your local source tree directly, so changes you make to the SeQUeNCe code are available **without reinstalling the package after each edit**. The `pip` option is a lightweight way to install the local package into an environment you already manage, while `uv` can create and synchronize a reproducible virtual environment from the project's dependency files.
|
|
94
|
+
|
|
95
|
+
#### (1) Using pip
|
|
96
|
+
```
|
|
97
|
+
git clone https://github.com/sequence-toolbox/SeQUeNCe.git
|
|
98
|
+
cd sequence
|
|
99
|
+
make install_editable
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
In the Makefile, `install_editable` will run the following:
|
|
103
|
+
```
|
|
104
|
+
pip install --editable . --config-settings editable_mode=strict
|
|
105
|
+
```
|
|
106
|
+
The `--config-settings editable_mode=strict` setting makes the editable install behaves more like a real packaged install.
|
|
107
|
+
|
|
108
|
+
#### (2) Using uv
|
|
109
|
+
|
|
110
|
+
##### Install uv ([Astral Instructions](https://docs.astral.sh/uv/getting-started/installation/))
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
# macOS/Linux
|
|
114
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
115
|
+
|
|
116
|
+
# Windows
|
|
117
|
+
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
##### Clone the repository and create the virtual environment
|
|
121
|
+
|
|
122
|
+
Here we clone the repository and let uv configure the development environment with the target python version.
|
|
123
|
+
```bash
|
|
124
|
+
git clone https://github.com/sequence-toolbox/SeQUeNCe.git
|
|
125
|
+
cd sequence
|
|
126
|
+
uv sync
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
##### Activate the virtual environment
|
|
130
|
+
|
|
131
|
+
Now that the virtual environment is created with all dependencies installed, you can activate it using the following command.
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
source .venv/bin/activate # macOS/Linux
|
|
135
|
+
source .venv\Scripts\activate # Windows
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
##### Running the test suite
|
|
139
|
+
|
|
140
|
+
SeQUeNCe includes a comprehensive test suite, this can be ran with the following command
|
|
141
|
+
```
|
|
142
|
+
uv run pytest tests
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
## Citation
|
|
146
|
+
Please cite us, thank you!
|
|
147
|
+
```
|
|
148
|
+
@article{sequence,
|
|
149
|
+
author = {Xiaoliang Wu and Alexander Kolar and Joaquin Chung and Dong Jin and Tian Zhong and Rajkumar Kettimuthu and Martin Suchara},
|
|
150
|
+
title = {SeQUeNCe: a customizable discrete-event simulator of quantum networks},
|
|
151
|
+
journal = {Quantum Science and Technology},
|
|
152
|
+
volume = {6},
|
|
153
|
+
year = {2021},
|
|
154
|
+
month = {sep},
|
|
155
|
+
doi = {10.1088/2058-9565/ac22f6},
|
|
156
|
+
url = {https://dx.doi.org/10.1088/2058-9565/ac22f6},
|
|
157
|
+
publisher = {IOP Publishing},
|
|
158
|
+
}
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
<!-- * 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. -->
|
|
162
|
+
|
|
163
|
+
## Running the GUI
|
|
164
|
+
Once SeQUeNCe has been installed as described above, run the `gui.py` script found in the root of the project directory
|
|
165
|
+
```
|
|
166
|
+
python gui.py
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
## Usage Examples
|
|
170
|
+
Many examples of SeQUeNCe in action can be found in the [example](/example) folder. The example includes jupyter notebook demos, and code used in published papers.
|
|
171
|
+
|
|
172
|
+
## Additional Tools
|
|
173
|
+
|
|
174
|
+
### Network Visualization
|
|
175
|
+
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/).
|
|
176
|
+
|
|
177
|
+
To view a network, run the script and specify the relative location of your .json file:
|
|
178
|
+
```
|
|
179
|
+
python utils/draw_topo.py example/starlight.json
|
|
180
|
+
```
|
|
181
|
+
This script also supports a flag `-m` to visualize BSM nodes created by default on quantum links between routers.
|
|
182
|
+
|
|
183
|
+
## Contact
|
|
184
|
+
If you have questions, please contact [Caitao Zhan](https://caitaozhan.github.io/) at [czhan@anl.gov](mailto:czhan@anl.gov).
|
|
185
|
+
|
|
186
|
+
Here is the updated table with the Code column populated:
|
|
187
|
+
|
|
188
|
+
## Papers that Used and/or Extended SeQUeNCe
|
|
189
|
+
| Year | Authors | Title | Venue | Code |
|
|
190
|
+
|------|---------|-------|-------|------|
|
|
191
|
+
| 2026 | S. Pantage et al. | [Realistic Simulation of Quantum Repeater with Encoding and Classical Error Correction](https://arxiv.org/abs/2605.06928) | arXiv preprint | [GitHub](https://github.com/SagarPatange/Quantum-Repeater-Encoding) |
|
|
192
|
+
| 2026 | A. Pirker et al. | [Centralizing Task-based Approach to Quantum Network Control](https://arxiv.org/abs/2605.03336) | arXiv preprint | [GitHub](https://github.com/sequence-toolbox/central_scheduler) |
|
|
193
|
+
| 2026 | A. Amlou et al. | [Physics-Informed Discrete-Event Simulation of Polarization-Encoded Quantum Networks](https://arxiv.org/abs/2604.07289) | arXiv preprint | |
|
|
194
|
+
| 2026 | H. Miller et al. | [Simulation of a Heterogeneous Quantum Network](https://doi.org/10.1109/QCNC69040.2026.00085) | IEEE QCNC | [GitHub](https://github.com/haydenmllr1317/heterogenous) |
|
|
195
|
+
| 2026 | A. Zang et al. | [Quantum Advantage in Distributed Sensing with Noisy Quantum Networks](https://doi.org/10.1103/7n9w-9xd4) | Physical Review Research | |
|
|
196
|
+
| 2025 | C. Zhan et al. | [Design and Simulation of the Adaptive Continuous Entanglement Generation Protocol](https://doi.org/10.1109/QCNC64685.2025.00028) | IEEE QCNC | [GitHub](https://github.com/caitaozhan/adaptive-continuous) |
|
|
197
|
+
| 2025 | F. Mazza et al. | [Simulation of Entanglement-Enabled Connectivity in QLANs using SeQUeNCe](https://doi.org/10.1109/ICC52391.2025.11434940) | IEEE ICC | |
|
|
198
|
+
| 2025 | L. d'Avossa et al. | [Simulation of Quantum Transduction Strategies for Quantum Networks](https://doi.org/10.1109/QCE65121.2025.00142) | IEEE QCE | |
|
|
199
|
+
| 2025 | V. S. Mai et al. | [Towards Optimal Orders for Entanglement Swapping in Path Graphs: A Greedy Approach](https://arxiv.org/abs/2504.14040) | IEEE QCE | |
|
|
200
|
+
| 2024 | C. Howe et al. | [Towards Scalable Quantum Repeater Networks](https://arxiv.org/abs/2409.08416) | arXiv preprint | |
|
|
201
|
+
| 2024 | X. Wu et al. | [Parallel Simulation of Quantum Networks with Distributed Quantum State Management](https://dl.acm.org/doi/abs/10.1145/3634701) | ACM TOMACS | |
|
|
202
|
+
| 2023 | R. Zhou et al. | [A Simulator of Atom-Atom Entanglement with Atomic Ensembles and Quantum Optics](https://doi.org/10.1109/QCE57702.2023.00143) | IEEE QCE | |
|
|
203
|
+
| 2023 | M.G. Davis et al. | [Towards Distributed Quantum Computing by Qubit and Gate Graph Partitioning Techniques](https://doi.org/10.1109/QCE57702.2023.00026) | IEEE QCE | |
|
|
204
|
+
| 2022 | A. Zang et al. | [Simulation of Entanglement Generation between Absorptive Quantum Memories](https://doi.org/10.1109/QCE53715.2022.00084) | IEEE QCE | |
|
|
205
|
+
| 2022 | V. Semenenko et al. | [Entanglement generation in a quantum network with finite quantum memory lifetime](https://doi.org/10.1116/5.0082239) | AVS Quantum Science | |
|
|
206
|
+
| 2021 | X. Wu et al. | [SeQUeNCe: A Customizable Discrete-Event Simulator of Quantum Networks](https://iopscience.iop.org/article/10.1088/2058-9565/ac22f6) | IOP Quantum Science and Technology | |
|
|
207
|
+
| 2019 | X. Wu et al. | [Simulations of Photonic Quantum Networks for Performance Analysis and Experiment Design](https://ieeexplore.ieee.org/document/8950718) | IEEE/ACM PHOTONICS | |
|
|
208
|
+
|
|
209
|
+
Please do a Pull Request to add your paper here!
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<picture>
|
|
3
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/sequence-toolbox/SeQUeNCe/master/docs/Sequence_Icon_Name_Dark.png">
|
|
4
|
+
<img src="https://raw.githubusercontent.com/sequence-toolbox/SeQUeNCe/master/docs/Sequence_Icon_Name.svg" alt="sequence icon" width="450" class="center">
|
|
5
|
+
</picture>
|
|
6
|
+
</p>
|
|
7
|
+
|
|
8
|
+
<h3><p align="center">Quantum Networking in SeQUeNCe: Customizable, Scalable, Easy Debugging</p></h3>
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
<div align="center">
|
|
13
|
+
|
|
14
|
+
[](https://pypi.org/project/sequence/)
|
|
15
|
+

|
|
16
|
+
[](https://sequence-rtd-tutorial.readthedocs.io/)
|
|
17
|
+
[](https://qutip.org/)
|
|
18
|
+
[](https://github.com/quantumlib/Stim)
|
|
19
|
+
[](https://iopscience.iop.org/article/10.1088/2058-9565/ac22f6)
|
|
20
|
+
[](https://pypistats.org/packages/sequence)
|
|
21
|
+
|
|
22
|
+
</div>
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
<br>
|
|
27
|
+
|
|
28
|
+
## SeQUeNCe: Simulator of QUantum Network Communication
|
|
29
|
+
|
|
30
|
+
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:
|
|
31
|
+
* Hardware
|
|
32
|
+
* Entanglement Management
|
|
33
|
+
* Resource Management
|
|
34
|
+
* Network Management
|
|
35
|
+
* Application
|
|
36
|
+
|
|
37
|
+
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.
|
|
38
|
+
|
|
39
|
+
## Installation
|
|
40
|
+
### For Users
|
|
41
|
+
SeQUeNCe requires [Python](https://www.python.org/downloads/) 3.12 or later. You can install SeQUeNCe using `pip`:
|
|
42
|
+
```
|
|
43
|
+
pip install sequence
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Development Environment Setup
|
|
47
|
+
If you wish to modify the source code, use an editable installation with either pip or [uv](https://docs.astral.sh/uv/):
|
|
48
|
+
|
|
49
|
+
Editable installations let Python use your local source tree directly, so changes you make to the SeQUeNCe code are available **without reinstalling the package after each edit**. The `pip` option is a lightweight way to install the local package into an environment you already manage, while `uv` can create and synchronize a reproducible virtual environment from the project's dependency files.
|
|
50
|
+
|
|
51
|
+
#### (1) Using pip
|
|
52
|
+
```
|
|
53
|
+
git clone https://github.com/sequence-toolbox/SeQUeNCe.git
|
|
54
|
+
cd sequence
|
|
55
|
+
make install_editable
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
In the Makefile, `install_editable` will run the following:
|
|
59
|
+
```
|
|
60
|
+
pip install --editable . --config-settings editable_mode=strict
|
|
61
|
+
```
|
|
62
|
+
The `--config-settings editable_mode=strict` setting makes the editable install behaves more like a real packaged install.
|
|
63
|
+
|
|
64
|
+
#### (2) Using uv
|
|
65
|
+
|
|
66
|
+
##### Install uv ([Astral Instructions](https://docs.astral.sh/uv/getting-started/installation/))
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
# macOS/Linux
|
|
70
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
71
|
+
|
|
72
|
+
# Windows
|
|
73
|
+
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
##### Clone the repository and create the virtual environment
|
|
77
|
+
|
|
78
|
+
Here we clone the repository and let uv configure the development environment with the target python version.
|
|
79
|
+
```bash
|
|
80
|
+
git clone https://github.com/sequence-toolbox/SeQUeNCe.git
|
|
81
|
+
cd sequence
|
|
82
|
+
uv sync
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
##### Activate the virtual environment
|
|
86
|
+
|
|
87
|
+
Now that the virtual environment is created with all dependencies installed, you can activate it using the following command.
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
source .venv/bin/activate # macOS/Linux
|
|
91
|
+
source .venv\Scripts\activate # Windows
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
##### Running the test suite
|
|
95
|
+
|
|
96
|
+
SeQUeNCe includes a comprehensive test suite, this can be ran with the following command
|
|
97
|
+
```
|
|
98
|
+
uv run pytest tests
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Citation
|
|
102
|
+
Please cite us, thank you!
|
|
103
|
+
```
|
|
104
|
+
@article{sequence,
|
|
105
|
+
author = {Xiaoliang Wu and Alexander Kolar and Joaquin Chung and Dong Jin and Tian Zhong and Rajkumar Kettimuthu and Martin Suchara},
|
|
106
|
+
title = {SeQUeNCe: a customizable discrete-event simulator of quantum networks},
|
|
107
|
+
journal = {Quantum Science and Technology},
|
|
108
|
+
volume = {6},
|
|
109
|
+
year = {2021},
|
|
110
|
+
month = {sep},
|
|
111
|
+
doi = {10.1088/2058-9565/ac22f6},
|
|
112
|
+
url = {https://dx.doi.org/10.1088/2058-9565/ac22f6},
|
|
113
|
+
publisher = {IOP Publishing},
|
|
114
|
+
}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
<!-- * 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. -->
|
|
118
|
+
|
|
119
|
+
## Running the GUI
|
|
120
|
+
Once SeQUeNCe has been installed as described above, run the `gui.py` script found in the root of the project directory
|
|
121
|
+
```
|
|
122
|
+
python gui.py
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## Usage Examples
|
|
126
|
+
Many examples of SeQUeNCe in action can be found in the [example](/example) folder. The example includes jupyter notebook demos, and code used in published papers.
|
|
127
|
+
|
|
128
|
+
## Additional Tools
|
|
129
|
+
|
|
130
|
+
### Network Visualization
|
|
131
|
+
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/).
|
|
132
|
+
|
|
133
|
+
To view a network, run the script and specify the relative location of your .json file:
|
|
134
|
+
```
|
|
135
|
+
python utils/draw_topo.py example/starlight.json
|
|
136
|
+
```
|
|
137
|
+
This script also supports a flag `-m` to visualize BSM nodes created by default on quantum links between routers.
|
|
138
|
+
|
|
139
|
+
## Contact
|
|
140
|
+
If you have questions, please contact [Caitao Zhan](https://caitaozhan.github.io/) at [czhan@anl.gov](mailto:czhan@anl.gov).
|
|
141
|
+
|
|
142
|
+
Here is the updated table with the Code column populated:
|
|
143
|
+
|
|
144
|
+
## Papers that Used and/or Extended SeQUeNCe
|
|
145
|
+
| Year | Authors | Title | Venue | Code |
|
|
146
|
+
|------|---------|-------|-------|------|
|
|
147
|
+
| 2026 | S. Pantage et al. | [Realistic Simulation of Quantum Repeater with Encoding and Classical Error Correction](https://arxiv.org/abs/2605.06928) | arXiv preprint | [GitHub](https://github.com/SagarPatange/Quantum-Repeater-Encoding) |
|
|
148
|
+
| 2026 | A. Pirker et al. | [Centralizing Task-based Approach to Quantum Network Control](https://arxiv.org/abs/2605.03336) | arXiv preprint | [GitHub](https://github.com/sequence-toolbox/central_scheduler) |
|
|
149
|
+
| 2026 | A. Amlou et al. | [Physics-Informed Discrete-Event Simulation of Polarization-Encoded Quantum Networks](https://arxiv.org/abs/2604.07289) | arXiv preprint | |
|
|
150
|
+
| 2026 | H. Miller et al. | [Simulation of a Heterogeneous Quantum Network](https://doi.org/10.1109/QCNC69040.2026.00085) | IEEE QCNC | [GitHub](https://github.com/haydenmllr1317/heterogenous) |
|
|
151
|
+
| 2026 | A. Zang et al. | [Quantum Advantage in Distributed Sensing with Noisy Quantum Networks](https://doi.org/10.1103/7n9w-9xd4) | Physical Review Research | |
|
|
152
|
+
| 2025 | C. Zhan et al. | [Design and Simulation of the Adaptive Continuous Entanglement Generation Protocol](https://doi.org/10.1109/QCNC64685.2025.00028) | IEEE QCNC | [GitHub](https://github.com/caitaozhan/adaptive-continuous) |
|
|
153
|
+
| 2025 | F. Mazza et al. | [Simulation of Entanglement-Enabled Connectivity in QLANs using SeQUeNCe](https://doi.org/10.1109/ICC52391.2025.11434940) | IEEE ICC | |
|
|
154
|
+
| 2025 | L. d'Avossa et al. | [Simulation of Quantum Transduction Strategies for Quantum Networks](https://doi.org/10.1109/QCE65121.2025.00142) | IEEE QCE | |
|
|
155
|
+
| 2025 | V. S. Mai et al. | [Towards Optimal Orders for Entanglement Swapping in Path Graphs: A Greedy Approach](https://arxiv.org/abs/2504.14040) | IEEE QCE | |
|
|
156
|
+
| 2024 | C. Howe et al. | [Towards Scalable Quantum Repeater Networks](https://arxiv.org/abs/2409.08416) | arXiv preprint | |
|
|
157
|
+
| 2024 | X. Wu et al. | [Parallel Simulation of Quantum Networks with Distributed Quantum State Management](https://dl.acm.org/doi/abs/10.1145/3634701) | ACM TOMACS | |
|
|
158
|
+
| 2023 | R. Zhou et al. | [A Simulator of Atom-Atom Entanglement with Atomic Ensembles and Quantum Optics](https://doi.org/10.1109/QCE57702.2023.00143) | IEEE QCE | |
|
|
159
|
+
| 2023 | M.G. Davis et al. | [Towards Distributed Quantum Computing by Qubit and Gate Graph Partitioning Techniques](https://doi.org/10.1109/QCE57702.2023.00026) | IEEE QCE | |
|
|
160
|
+
| 2022 | A. Zang et al. | [Simulation of Entanglement Generation between Absorptive Quantum Memories](https://doi.org/10.1109/QCE53715.2022.00084) | IEEE QCE | |
|
|
161
|
+
| 2022 | V. Semenenko et al. | [Entanglement generation in a quantum network with finite quantum memory lifetime](https://doi.org/10.1116/5.0082239) | AVS Quantum Science | |
|
|
162
|
+
| 2021 | X. Wu et al. | [SeQUeNCe: A Customizable Discrete-Event Simulator of Quantum Networks](https://iopscience.iop.org/article/10.1088/2058-9565/ac22f6) | IOP Quantum Science and Technology | |
|
|
163
|
+
| 2019 | X. Wu et al. | [Simulations of Photonic Quantum Networks for Performance Analysis and Experiment Design](https://ieeexplore.ieee.org/document/8950718) | IEEE/ACM PHOTONICS | |
|
|
164
|
+
|
|
165
|
+
Please do a Pull Request to add your paper here!
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "sequence"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "1.0.0.dev1539950"
|
|
4
4
|
authors = [
|
|
5
5
|
{ name = "Xiaoliang Wu, Joaquin Chung, Alexander Kolar, Alexander Kiefer, Eugene Wang, Tian Zhong, Rajkumar Kettimuthu, Martin Suchara, Robert Hayek, Ansh Singal, Caitao Zhan", email = "czhan@anl.gov" }
|
|
6
6
|
]
|
|
@@ -8,11 +8,11 @@ maintainers = [
|
|
|
8
8
|
{ name = "Caitao Zhan", email = "czhan@anl.gov" },
|
|
9
9
|
{ name = "Robert Hayek", email = "rhayek@anl.gov" }
|
|
10
10
|
]
|
|
11
|
+
license-files = ["LICENSE"]
|
|
11
12
|
description = "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."
|
|
12
13
|
readme = "README.md"
|
|
13
|
-
requires-python = ">=3.
|
|
14
|
+
requires-python = ">=3.12, <3.15"
|
|
14
15
|
classifiers = [
|
|
15
|
-
"Programming Language :: Python :: 3.11",
|
|
16
16
|
"Programming Language :: Python :: 3.12",
|
|
17
17
|
"Programming Language :: Python :: 3.13",
|
|
18
18
|
"Programming Language :: Python :: 3.14"
|
|
@@ -26,36 +26,52 @@ dependencies = [
|
|
|
26
26
|
"dash-html-components>=2.0.0",
|
|
27
27
|
"dash-table>=5.0.0",
|
|
28
28
|
"gmpy2>=2.2.2",
|
|
29
|
+
"graphviz>=0.21",
|
|
29
30
|
"ipywidgets>=8.1.8",
|
|
30
31
|
"jupyterlab>=4.5.0",
|
|
31
32
|
"matplotlib>=3.10.7",
|
|
32
33
|
"networkx>=3.6.1",
|
|
33
34
|
"numpy>=2.3.5",
|
|
34
35
|
"pandas>=2.3.3",
|
|
35
|
-
"pandas-stubs~=2.3.3",
|
|
36
36
|
"plotly>=6.5.0",
|
|
37
37
|
"pytest>=9.0.2",
|
|
38
|
+
"pyyaml>=6.0.3",
|
|
38
39
|
"qutip>=5.2.2",
|
|
39
40
|
"qutip-qip>=0.4.1",
|
|
40
41
|
"scipy>=1.16.3",
|
|
41
|
-
"scipy-stubs~=1.16.3",
|
|
42
42
|
"seaborn>=0.13.2",
|
|
43
43
|
"tqdm>=4.67.1",
|
|
44
|
+
"typer>=0.24.1",
|
|
45
|
+
"stim>=1.15"
|
|
44
46
|
]
|
|
45
47
|
|
|
48
|
+
[project.scripts]
|
|
49
|
+
generate-topology = "sequence.utils.config_generator_cli:app"
|
|
50
|
+
|
|
46
51
|
[build-system]
|
|
47
|
-
requires = ["uv_build>=0.
|
|
52
|
+
requires = ["uv_build>=0.11.11,<0.12"]
|
|
48
53
|
build-backend = "uv_build"
|
|
49
54
|
|
|
50
55
|
[tool.uv.build-backend]
|
|
51
56
|
module-root = ""
|
|
52
57
|
module-name = "sequence"
|
|
53
58
|
|
|
54
|
-
[tool.
|
|
55
|
-
|
|
59
|
+
[tool.pytest.ini_options]
|
|
60
|
+
markers = [
|
|
61
|
+
"unit: Marks tests as unit tests",
|
|
62
|
+
]
|
|
63
|
+
|
|
64
|
+
[dependency-groups]
|
|
65
|
+
dev = [
|
|
66
|
+
"coverage>=7.13.4",
|
|
67
|
+
"ruff>=0.15.1",
|
|
68
|
+
"ty>=0.0.16",
|
|
69
|
+
"pandas-stubs~=2.3.3",
|
|
70
|
+
"scipy-stubs~=1.16.3",
|
|
71
|
+
]
|
|
56
72
|
|
|
57
73
|
[project.urls]
|
|
58
74
|
Homepage = "https://github.com/sequence-toolbox/SeQUeNCe"
|
|
59
75
|
Documentation = "https://sequence-rtd-tutorial.readthedocs.io/"
|
|
60
76
|
Issues = "https://github.com/sequence-toolbox/SeQUeNCe/issues"
|
|
61
|
-
Changelog = "https://github.com/sequence-toolbox/SeQUeNCe/blob/master/CHANGELOG.md"
|
|
77
|
+
Changelog = "https://github.com/sequence-toolbox/SeQUeNCe/blob/master/CHANGELOG.md"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from pathlib import Path
|
|
2
2
|
|
|
3
3
|
__all__ = ['app', 'components', 'entanglement_management', 'kernel', 'network_management', 'qkd', 'resource_management',
|
|
4
|
-
'topology', 'utils', 'message', 'protocol', 'gui', '
|
|
4
|
+
'topology', 'utils', 'message', 'protocol', 'gui', 'read_version_from_pyproject']
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
def read_version_from_pyproject() -> str:
|
|
@@ -82,7 +82,20 @@ class RequestApp:
|
|
|
82
82
|
self.reservation_result = result
|
|
83
83
|
if result:
|
|
84
84
|
self.schedule_reservation(reservation)
|
|
85
|
-
log.logger.info(f"
|
|
85
|
+
log.logger.info(f"{self.node.name}, reservation successful: {reservation}")
|
|
86
|
+
else:
|
|
87
|
+
log.logger.info(f"{self.node.name}, reservation failed: {reservation}")
|
|
88
|
+
|
|
89
|
+
def get_other_reservation(self, reservation: Reservation) -> None:
|
|
90
|
+
"""Method to add the approved reservation that is requested by other nodes. The responder will call this method
|
|
91
|
+
|
|
92
|
+
Args:
|
|
93
|
+
reservation (Reservation): reservation that uses the node of an application as the responder
|
|
94
|
+
|
|
95
|
+
Side Effects:
|
|
96
|
+
Will add calls to `add_memo_reservation_map` and `remove_memo_reservation_map` methods.
|
|
97
|
+
"""
|
|
98
|
+
self.schedule_reservation(reservation)
|
|
86
99
|
|
|
87
100
|
def add_memo_reservation_map(self, index: int, reservation: Reservation) -> None:
|
|
88
101
|
"""Maps memory index to the corresponding reservation.
|
|
@@ -132,23 +145,20 @@ class RequestApp:
|
|
|
132
145
|
def get_throughput(self) -> float:
|
|
133
146
|
return self.memory_counter / (self.end_t - self.start_t) * 1e12
|
|
134
147
|
|
|
135
|
-
def get_other_reservation(self, reservation: Reservation) -> None:
|
|
136
|
-
"""Method to add the approved reservation that is requested by other nodes. The responder will call this method
|
|
137
148
|
|
|
138
|
-
|
|
139
|
-
|
|
149
|
+
def schedule_reservation(self, reservation: Reservation) -> None:
|
|
150
|
+
"""Calling the `add_memo_reservation_map` and `remove_memo_reservation_map` methods at the
|
|
151
|
+
reservation's start_time and end_time for all timecards (memory) involved in the reservation.
|
|
152
|
+
|
|
153
|
+
Called by the initiator and the responder when reservation is approved.
|
|
140
154
|
|
|
141
|
-
|
|
142
|
-
|
|
155
|
+
Args:
|
|
156
|
+
reservation (Reservation): reservation to schedule
|
|
143
157
|
"""
|
|
144
|
-
self.schedule_reservation(reservation)
|
|
145
|
-
|
|
146
|
-
def schedule_reservation(self, reservation: Reservation) -> None:
|
|
147
158
|
if reservation.initiator == self.node.name:
|
|
148
159
|
self.path = reservation.path
|
|
149
160
|
|
|
150
|
-
|
|
151
|
-
for card in reservation_protocol.timecards:
|
|
161
|
+
for card in self.node.network_manager.get_timecards():
|
|
152
162
|
if reservation in card.reservations:
|
|
153
163
|
process = Process(self, "add_memo_reservation_map", [card.memory_index, reservation])
|
|
154
164
|
event = Event(reservation.start_time, process)
|
|
@@ -21,7 +21,7 @@ from .photon import Photon
|
|
|
21
21
|
from ..kernel.entity import Entity
|
|
22
22
|
from ..kernel.event import Event
|
|
23
23
|
from ..kernel.process import Process
|
|
24
|
-
from ..constants import
|
|
24
|
+
from ..constants import KET_VECTOR_FORMALISM, DENSITY_MATRIX_FORMALISM
|
|
25
25
|
from ..utils.encoding import *
|
|
26
26
|
from ..utils import log
|
|
27
27
|
|
|
@@ -54,7 +54,7 @@ def _set_state_with_fidelity(keys: list[int], desired_state: list[complex], fide
|
|
|
54
54
|
BSM._psi_plus, BSM._psi_minus]
|
|
55
55
|
assert desired_state in possible_states
|
|
56
56
|
|
|
57
|
-
if qm.get_active_formalism() ==
|
|
57
|
+
if qm.get_active_formalism() == KET_VECTOR_FORMALISM:
|
|
58
58
|
probabilities = [(1 - fidelity) / 3] * 4
|
|
59
59
|
probabilities[possible_states.index(desired_state)] = fidelity
|
|
60
60
|
state_ind = rng.choice(4, p=probabilities)
|
|
@@ -73,26 +73,24 @@ def _set_state_with_fidelity(keys: list[int], desired_state: list[complex], fide
|
|
|
73
73
|
|
|
74
74
|
|
|
75
75
|
def _set_pure_state(keys: list[int], ket_state: list[complex], qm: "QuantumManager"):
|
|
76
|
-
if qm.get_active_formalism() ==
|
|
76
|
+
if qm.get_active_formalism() == KET_VECTOR_FORMALISM:
|
|
77
77
|
qm.set(keys, ket_state)
|
|
78
78
|
elif qm.get_active_formalism() == DENSITY_MATRIX_FORMALISM:
|
|
79
79
|
state = outer(ket_state, ket_state)
|
|
80
80
|
qm.set(keys, state)
|
|
81
81
|
else:
|
|
82
|
-
raise NotImplementedError("formalism of quantum state {} is not "
|
|
83
|
-
"implemented in the set_pure_quantum_state "
|
|
82
|
+
raise NotImplementedError("formalism of quantum state {} is not implemented in the set_pure_quantum_state "
|
|
84
83
|
"function of bsm.py".format(qm.get_active_formalism()))
|
|
85
84
|
|
|
86
85
|
|
|
87
86
|
def _eq_psi_plus(state: "State", formalism: str):
|
|
88
|
-
if formalism ==
|
|
87
|
+
if formalism == KET_VECTOR_FORMALISM:
|
|
89
88
|
return array_equal(state.state, BSM._psi_plus)
|
|
90
89
|
elif formalism == DENSITY_MATRIX_FORMALISM:
|
|
91
|
-
d_state = outer(BSM.
|
|
90
|
+
d_state = outer(BSM._psi_plus, BSM._psi_plus)
|
|
92
91
|
return array_equal(state.state, d_state)
|
|
93
92
|
else:
|
|
94
|
-
raise NotImplementedError("formalism of quantum state {} is not "
|
|
95
|
-
"implemented in the eq_phi_plus "
|
|
93
|
+
raise NotImplementedError("formalism of quantum state {} is not implemented in the eq_phi_plus "
|
|
96
94
|
"function of bsm.py".format(formalism))
|
|
97
95
|
|
|
98
96
|
|
|
@@ -166,9 +164,9 @@ class BSM(Entity):
|
|
|
166
164
|
photon (Photon): photon to measure.
|
|
167
165
|
"""
|
|
168
166
|
|
|
169
|
-
assert photon.encoding_type["name"] == self.encoding,
|
|
170
|
-
"BSM expecting photon with encoding '{}'
|
|
171
|
-
|
|
167
|
+
assert photon.encoding_type["name"] == self.encoding, (
|
|
168
|
+
f"BSM expecting photon with encoding '{self.encoding}' "
|
|
169
|
+
f"received photon with encoding '{photon.encoding_type['name']}'")
|
|
172
170
|
|
|
173
171
|
# check if photon arrived later than current photon
|
|
174
172
|
if self.photon_arrival_time < self.timeline.now():
|
|
@@ -725,4 +723,4 @@ class ShellBSM(BSM):
|
|
|
725
723
|
This method is intentionally left empty as ShellBSM serves as a placeholder BSM implementation.
|
|
726
724
|
No action is performed when a detector is triggered.
|
|
727
725
|
"""
|
|
728
|
-
pass
|
|
726
|
+
pass
|
|
@@ -371,7 +371,7 @@ class QSDetectorFockDirect(QSDetector):
|
|
|
371
371
|
series_elem_list = [((-1) ** i) * fractional_matrix_power(create1, i + 1).dot(
|
|
372
372
|
fractional_matrix_power(destroy1, i + 1)) / factorial(i + 1) for i in range(truncation)]
|
|
373
373
|
povm1_1 = sum(series_elem_list)
|
|
374
|
-
povm1_0 = eye(truncation + 1) -
|
|
374
|
+
povm1_0 = eye(truncation + 1) - povm1_1
|
|
375
375
|
|
|
376
376
|
self.povms = [povm0_0, povm0_1, povm1_0, povm1_1]
|
|
377
377
|
|
|
@@ -518,8 +518,8 @@ class QSDetectorFockInterference(QSDetector):
|
|
|
518
518
|
arrival_time = self.timeline.now()
|
|
519
519
|
self.arrival_times[input_port].append(arrival_time)
|
|
520
520
|
# record in temporary photon list
|
|
521
|
-
assert not self.temporary_photon_info[input_port],
|
|
522
|
-
"At most 1 Photon instance should arrive at an input port at a time."
|
|
521
|
+
assert not self.temporary_photon_info[input_port], (
|
|
522
|
+
"At most 1 Photon instance should arrive at an input port at a time.")
|
|
523
523
|
self.temporary_photon_info[input_port]["photon"] = photon
|
|
524
524
|
self.temporary_photon_info[input_port]["time"] = arrival_time
|
|
525
525
|
|