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.
Files changed (149) hide show
  1. sequence-1.0.0.dev1539950/LICENSE +41 -0
  2. sequence-1.0.0.dev1539950/PKG-INFO +209 -0
  3. sequence-1.0.0.dev1539950/README.md +165 -0
  4. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/pyproject.toml +25 -9
  5. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/__init__.py +1 -1
  6. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/app/request_app.py +22 -12
  7. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/components/bsm.py +11 -13
  8. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/components/circuit.py +0 -1
  9. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/components/detector.py +3 -3
  10. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/components/interferometer.py +2 -2
  11. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/components/memory.py +19 -16
  12. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/components/optical_channel.py +10 -8
  13. sequence-1.0.0.dev1539950/sequence/constants.py +60 -0
  14. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/entanglement_management/__init__.py +1 -1
  15. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/entanglement_management/entanglement_protocol.py +3 -3
  16. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/entanglement_management/generation/barret_kok.py +1 -2
  17. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/entanglement_management/generation/generation_base.py +9 -12
  18. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/entanglement_management/generation/generation_message.py +0 -1
  19. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/entanglement_management/generation/single_heralded.py +2 -4
  20. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/entanglement_management/purification/bbpssw_bds.py +5 -7
  21. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/entanglement_management/purification/bbpssw_circuit.py +2 -2
  22. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/entanglement_management/purification/bbpssw_protocol.py +16 -18
  23. sequence-1.0.0.dev1539950/sequence/entanglement_management/swapping/__init__.py +9 -0
  24. sequence-1.0.0.dev1539950/sequence/entanglement_management/swapping/swapping_base.py +392 -0
  25. sequence-1.0.0.dev1539950/sequence/entanglement_management/swapping/swapping_bds.py +218 -0
  26. sequence-1.0.0.dev1539950/sequence/entanglement_management/swapping/swapping_circuit.py +205 -0
  27. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/app.py +0 -2
  28. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/simulator_bindings.py +1 -3
  29. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/kernel/eventlist.py +10 -12
  30. sequence-1.0.0.dev1539950/sequence/kernel/quantum_manager/__init__.py +19 -0
  31. sequence-1.0.0.dev1539950/sequence/kernel/quantum_manager/base.py +252 -0
  32. sequence-1.0.0.dev1539950/sequence/kernel/quantum_manager/bell_diagonal.py +66 -0
  33. sequence-1.0.0.dev1539950/sequence/kernel/quantum_manager/density_matrix.py +187 -0
  34. sequence-1.0.0.dev1539950/sequence/kernel/quantum_manager/fock_density_matrix.py +314 -0
  35. sequence-1.0.0.dev1539950/sequence/kernel/quantum_manager/ket_vector.py +192 -0
  36. sequence-1.0.0.dev1539950/sequence/kernel/quantum_manager/stabilizer.py +777 -0
  37. sequence-1.0.0.dev1539950/sequence/kernel/quantum_state/__init__.py +28 -0
  38. sequence-1.0.0.dev1539950/sequence/kernel/quantum_state/base.py +24 -0
  39. sequence-1.0.0.dev1539950/sequence/kernel/quantum_state/bell_diagonal.py +41 -0
  40. sequence-1.0.0.dev1539950/sequence/kernel/quantum_state/density_matrix.py +56 -0
  41. sequence-1.0.0.dev1539950/sequence/kernel/quantum_state/free.py +225 -0
  42. sequence-1.0.0.dev1539950/sequence/kernel/quantum_state/ket_vector.py +54 -0
  43. sequence-1.0.0.dev1539950/sequence/kernel/quantum_state/stabilizer.py +134 -0
  44. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/kernel/timeline.py +6 -9
  45. sequence-1.0.0.dev1539950/sequence/network_management/__init__.py +4 -0
  46. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/network_management/forwarding.py +15 -10
  47. sequence-1.0.0.dev1539950/sequence/network_management/memory_timecard.py +85 -0
  48. sequence-1.0.0.dev1539950/sequence/network_management/network_manager.py +261 -0
  49. sequence-1.0.0.dev1539950/sequence/network_management/reservation.py +82 -0
  50. sequence-1.0.0.dev1539950/sequence/network_management/routing/__init__.py +8 -0
  51. sequence-1.0.0.dev1539950/sequence/network_management/routing/routing_base.py +111 -0
  52. {sequence-0.8.5.dev217420613/sequence/network_management → sequence-1.0.0.dev1539950/sequence/network_management/routing}/routing_distributed.py +220 -161
  53. sequence-1.0.0.dev1539950/sequence/network_management/routing/routing_static.py +41 -0
  54. sequence-1.0.0.dev1539950/sequence/network_management/rsvp.py +239 -0
  55. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/protocol.py +12 -6
  56. sequence-1.0.0.dev1539950/sequence/resource_management/action_condition_set.py +492 -0
  57. sequence-1.0.0.dev1539950/sequence/resource_management/resource_manager.py +544 -0
  58. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/resource_management/rule_manager.py +12 -11
  59. sequence-1.0.0.dev1539950/sequence/topology/__init__.py +4 -0
  60. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/topology/dqc_net_topo.py +5 -8
  61. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/topology/node.py +51 -54
  62. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/topology/router_net_topo.py +24 -16
  63. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/topology/topology.py +21 -12
  64. sequence-1.0.0.dev1539950/sequence/utils/__init__.py +3 -0
  65. sequence-1.0.0.dev1539950/sequence/utils/config_generator_cli.py +464 -0
  66. sequence-1.0.0.dev1539950/sequence/utils/dqc_node_generator.py +20 -0
  67. sequence-1.0.0.dev1539950/sequence/utils/draw_topo.py +81 -0
  68. sequence-1.0.0.dev1539950/sequence/utils/graphs.py +256 -0
  69. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/utils/noise.py +5 -4
  70. sequence-1.0.0.dev1539950/sequence/utils/nx_converter.py +189 -0
  71. sequence-0.8.5.dev217420613/PKG-INFO +0 -166
  72. sequence-0.8.5.dev217420613/README.md +0 -124
  73. sequence-0.8.5.dev217420613/sequence/constants.py +0 -36
  74. sequence-0.8.5.dev217420613/sequence/entanglement_management/swapping.py +0 -366
  75. sequence-0.8.5.dev217420613/sequence/kernel/quantum_manager.py +0 -944
  76. sequence-0.8.5.dev217420613/sequence/kernel/quantum_state.py +0 -411
  77. sequence-0.8.5.dev217420613/sequence/network_management/__init__.py +0 -4
  78. sequence-0.8.5.dev217420613/sequence/network_management/network_manager.py +0 -232
  79. sequence-0.8.5.dev217420613/sequence/network_management/reservation.py +0 -823
  80. sequence-0.8.5.dev217420613/sequence/network_management/routing_static.py +0 -78
  81. sequence-0.8.5.dev217420613/sequence/qlan/correction.py +0 -191
  82. sequence-0.8.5.dev217420613/sequence/qlan/graph_gen.py +0 -55
  83. sequence-0.8.5.dev217420613/sequence/qlan/measurement.py +0 -357
  84. sequence-0.8.5.dev217420613/sequence/resource_management/resource_manager.py +0 -373
  85. sequence-0.8.5.dev217420613/sequence/topology/__init__.py +0 -4
  86. sequence-0.8.5.dev217420613/sequence/topology/qlan/client.py +0 -127
  87. sequence-0.8.5.dev217420613/sequence/topology/qlan/orchestrator.py +0 -193
  88. sequence-0.8.5.dev217420613/sequence/topology/qlan_star_topo.py +0 -198
  89. sequence-0.8.5.dev217420613/sequence/utils/__init__.py +0 -4
  90. sequence-0.8.5.dev217420613/sequence/utils/config_generator.py +0 -130
  91. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/app/__init__.py +0 -0
  92. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/app/random_request.py +0 -0
  93. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/app/teleport_app.py +0 -0
  94. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/components/__init__.py +0 -0
  95. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/components/beam_splitter.py +0 -0
  96. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/components/fiber_stretcher.py +0 -0
  97. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/components/light_source.py +0 -0
  98. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/components/mirror.py +0 -0
  99. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/components/photon.py +0 -0
  100. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/components/spdc_lens.py +0 -0
  101. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/components/switch.py +0 -0
  102. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/components/transducer.py +0 -0
  103. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/components/transmon.py +0 -0
  104. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/entanglement_management/generation/__init__.py +0 -0
  105. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/entanglement_management/purification/__init__.py +0 -0
  106. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/entanglement_management/teleportation.py +0 -0
  107. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/__init__.py +0 -0
  108. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/assets/argonne.png +0 -0
  109. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/assets/attributions_req +0 -0
  110. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/assets/bsmnode.png +0 -0
  111. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/assets/detector.png +0 -0
  112. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/assets/logo.png +0 -0
  113. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/assets/photonsource.png +0 -0
  114. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/assets/quantum.png +0 -0
  115. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/assets/repeater.png +0 -0
  116. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/assets/router.png +0 -0
  117. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/assets/sequence.jpg +0 -0
  118. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/assets/svg/bsmnode.svg +0 -0
  119. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/assets/svg/detector.svg +0 -0
  120. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/assets/svg/photonsource.svg +0 -0
  121. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/assets/svg/quantum.svg +0 -0
  122. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/assets/svg/repeater.svg +0 -0
  123. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/assets/svg/router.svg +0 -0
  124. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/assets/svg/temp.svg +0 -0
  125. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/assets/temp.png +0 -0
  126. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/css_styles.py +0 -0
  127. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/default_params.json +0 -0
  128. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/default_templates.json +0 -0
  129. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/graph_comp.py +0 -0
  130. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/layout.py +0 -0
  131. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/menus.py +0 -0
  132. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/run_gui.py +0 -0
  133. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/starlight.json +0 -0
  134. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/test.txt +0 -0
  135. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/gui/user_templates.json +0 -0
  136. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/kernel/__init__.py +0 -0
  137. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/kernel/entity.py +0 -0
  138. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/kernel/event.py +0 -0
  139. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/kernel/process.py +0 -0
  140. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/kernel/quantum_utils.py +0 -0
  141. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/message.py +0 -0
  142. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/qkd/BB84.py +0 -0
  143. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/qkd/__init__.py +0 -0
  144. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/qkd/cascade.py +0 -0
  145. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/resource_management/__init__.py +0 -0
  146. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/resource_management/memory_manager.py +0 -0
  147. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/topology/qkd_topo.py +0 -0
  148. {sequence-0.8.5.dev217420613 → sequence-1.0.0.dev1539950}/sequence/utils/encoding.py +0 -0
  149. {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
+ [![PyPi](https://img.shields.io/pypi/v/sequence)](https://pypi.org/project/sequence/)
59
+ ![pyversions](https://img.shields.io/pypi/pyversions/sequence)
60
+ [![Documentation](https://img.shields.io/readthedocs/sequence-rtd-tutorial)](https://sequence-rtd-tutorial.readthedocs.io/)
61
+ [![QuTiP](https://img.shields.io/badge/integration-QuTiP-blue)](https://qutip.org/)
62
+ [![Stim](https://img.shields.io/badge/integration-Stim-blue)](https://github.com/quantumlib/Stim)
63
+ [![Paper](https://img.shields.io/badge/10.1088%2F2058-9565%2Fac22f6?label=DOI)](https://iopscience.iop.org/article/10.1088/2058-9565/ac22f6)
64
+ [![Download-month](https://img.shields.io/pypi/dm/sequence)](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
+ [![PyPi](https://img.shields.io/pypi/v/sequence)](https://pypi.org/project/sequence/)
15
+ ![pyversions](https://img.shields.io/pypi/pyversions/sequence)
16
+ [![Documentation](https://img.shields.io/readthedocs/sequence-rtd-tutorial)](https://sequence-rtd-tutorial.readthedocs.io/)
17
+ [![QuTiP](https://img.shields.io/badge/integration-QuTiP-blue)](https://qutip.org/)
18
+ [![Stim](https://img.shields.io/badge/integration-Stim-blue)](https://github.com/quantumlib/Stim)
19
+ [![Paper](https://img.shields.io/badge/10.1088%2F2058-9565%2Fac22f6?label=DOI)](https://iopscience.iop.org/article/10.1088/2058-9565/ac22f6)
20
+ [![Download-month](https://img.shields.io/pypi/dm/sequence)](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.8.5.dev217420613"
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.11, <3.15"
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.9.17,<0.10.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.setuptools.package-data]
55
- sequence = ["gui/user_templates.json", "gui/default_params.json", "gui/starlight.json"]
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', 'qlan', 'read_version_from_pyproject']
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"Successful reservation of resources for request app on node {self.node.name}")
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
- Args:
139
- reservation (Reservation): reservation that uses the node of application as the responder
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
- Side Effects:
142
- Will add calls to `add_memo_reservation_map` and `remove_memo_reservation_map` methods.
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
- reservation_protocol = self.node.network_manager.protocol_stack[1]
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 KET_STATE_FORMALISM, DENSITY_MATRIX_FORMALISM
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() == KET_STATE_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() == KET_STATE_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 == KET_STATE_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._phi_plus, BSM._psi_plus)
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 '{}' received photon with encoding '{}'".format(
171
- self.encoding, photon.encoding_type["name"])
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
@@ -4,7 +4,6 @@ This module introduces the QuantumCircuit class. The qutip library is used to ca
4
4
  """
5
5
 
6
6
  from math import e, pi, sqrt
7
- from typing import Optional
8
7
 
9
8
  import numpy as np
10
9
  from qutip_qip.circuit import QubitCircuit
@@ -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) - povm0_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