Trajectree 0.0.1__tar.gz → 0.0.3__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 (132) hide show
  1. {trajectree-0.0.1 → trajectree-0.0.3}/PKG-INFO +2 -3
  2. {trajectree-0.0.1 → trajectree-0.0.3}/Trajectree.egg-info/PKG-INFO +2 -3
  3. trajectree-0.0.3/Trajectree.egg-info/SOURCES.txt +19 -0
  4. {trajectree-0.0.1 → trajectree-0.0.3}/Trajectree.egg-info/requires.txt +1 -2
  5. {trajectree-0.0.1 → trajectree-0.0.3}/pyproject.toml +3 -4
  6. {trajectree-0.0.1 → trajectree-0.0.3}/trajectree/fock_optics/devices.py +1 -1
  7. {trajectree-0.0.1 → trajectree-0.0.3}/trajectree/fock_optics/light_sources.py +2 -2
  8. {trajectree-0.0.1 → trajectree-0.0.3}/trajectree/fock_optics/measurement.py +9 -9
  9. {trajectree-0.0.1 → trajectree-0.0.3}/trajectree/fock_optics/outputs.py +10 -6
  10. {trajectree-0.0.1 → trajectree-0.0.3}/trajectree/fock_optics/utils.py +9 -6
  11. {trajectree-0.0.1 → trajectree-0.0.3}/trajectree/sequence/swap.py +5 -4
  12. {trajectree-0.0.1 → trajectree-0.0.3}/trajectree/trajectory.py +5 -4
  13. trajectree-0.0.1/Trajectree.egg-info/SOURCES.txt +0 -129
  14. trajectree-0.0.1/trajectree/__init__.py +0 -3
  15. trajectree-0.0.1/trajectree/quimb/docs/_pygments/_pygments_dark.py +0 -118
  16. trajectree-0.0.1/trajectree/quimb/docs/_pygments/_pygments_light.py +0 -118
  17. trajectree-0.0.1/trajectree/quimb/docs/conf.py +0 -158
  18. trajectree-0.0.1/trajectree/quimb/docs/examples/ex_mpi_expm_evo.py +0 -62
  19. trajectree-0.0.1/trajectree/quimb/quimb/__init__.py +0 -507
  20. trajectree-0.0.1/trajectree/quimb/quimb/calc.py +0 -1491
  21. trajectree-0.0.1/trajectree/quimb/quimb/core.py +0 -2279
  22. trajectree-0.0.1/trajectree/quimb/quimb/evo.py +0 -712
  23. trajectree-0.0.1/trajectree/quimb/quimb/experimental/autojittn.py +0 -129
  24. trajectree-0.0.1/trajectree/quimb/quimb/experimental/belief_propagation/__init__.py +0 -109
  25. trajectree-0.0.1/trajectree/quimb/quimb/experimental/belief_propagation/bp_common.py +0 -397
  26. trajectree-0.0.1/trajectree/quimb/quimb/experimental/belief_propagation/d1bp.py +0 -316
  27. trajectree-0.0.1/trajectree/quimb/quimb/experimental/belief_propagation/d2bp.py +0 -653
  28. trajectree-0.0.1/trajectree/quimb/quimb/experimental/belief_propagation/hd1bp.py +0 -571
  29. trajectree-0.0.1/trajectree/quimb/quimb/experimental/belief_propagation/hv1bp.py +0 -775
  30. trajectree-0.0.1/trajectree/quimb/quimb/experimental/belief_propagation/l1bp.py +0 -316
  31. trajectree-0.0.1/trajectree/quimb/quimb/experimental/belief_propagation/l2bp.py +0 -537
  32. trajectree-0.0.1/trajectree/quimb/quimb/experimental/belief_propagation/regions.py +0 -194
  33. trajectree-0.0.1/trajectree/quimb/quimb/experimental/cluster_update.py +0 -286
  34. trajectree-0.0.1/trajectree/quimb/quimb/experimental/merabuilder.py +0 -865
  35. trajectree-0.0.1/trajectree/quimb/quimb/experimental/operatorbuilder/__init__.py +0 -15
  36. trajectree-0.0.1/trajectree/quimb/quimb/experimental/operatorbuilder/operatorbuilder.py +0 -1631
  37. trajectree-0.0.1/trajectree/quimb/quimb/experimental/schematic.py +0 -7
  38. trajectree-0.0.1/trajectree/quimb/quimb/experimental/tn_marginals.py +0 -130
  39. trajectree-0.0.1/trajectree/quimb/quimb/experimental/tnvmc.py +0 -1483
  40. trajectree-0.0.1/trajectree/quimb/quimb/gates.py +0 -36
  41. trajectree-0.0.1/trajectree/quimb/quimb/gen/__init__.py +0 -2
  42. trajectree-0.0.1/trajectree/quimb/quimb/gen/operators.py +0 -1167
  43. trajectree-0.0.1/trajectree/quimb/quimb/gen/rand.py +0 -713
  44. trajectree-0.0.1/trajectree/quimb/quimb/gen/states.py +0 -479
  45. trajectree-0.0.1/trajectree/quimb/quimb/linalg/__init__.py +0 -6
  46. trajectree-0.0.1/trajectree/quimb/quimb/linalg/approx_spectral.py +0 -1109
  47. trajectree-0.0.1/trajectree/quimb/quimb/linalg/autoblock.py +0 -258
  48. trajectree-0.0.1/trajectree/quimb/quimb/linalg/base_linalg.py +0 -719
  49. trajectree-0.0.1/trajectree/quimb/quimb/linalg/mpi_launcher.py +0 -397
  50. trajectree-0.0.1/trajectree/quimb/quimb/linalg/numpy_linalg.py +0 -244
  51. trajectree-0.0.1/trajectree/quimb/quimb/linalg/rand_linalg.py +0 -514
  52. trajectree-0.0.1/trajectree/quimb/quimb/linalg/scipy_linalg.py +0 -293
  53. trajectree-0.0.1/trajectree/quimb/quimb/linalg/slepc_linalg.py +0 -892
  54. trajectree-0.0.1/trajectree/quimb/quimb/schematic.py +0 -1518
  55. trajectree-0.0.1/trajectree/quimb/quimb/tensor/__init__.py +0 -401
  56. trajectree-0.0.1/trajectree/quimb/quimb/tensor/array_ops.py +0 -610
  57. trajectree-0.0.1/trajectree/quimb/quimb/tensor/circuit.py +0 -4824
  58. trajectree-0.0.1/trajectree/quimb/quimb/tensor/circuit_gen.py +0 -411
  59. trajectree-0.0.1/trajectree/quimb/quimb/tensor/contraction.py +0 -336
  60. trajectree-0.0.1/trajectree/quimb/quimb/tensor/decomp.py +0 -1255
  61. trajectree-0.0.1/trajectree/quimb/quimb/tensor/drawing.py +0 -1646
  62. trajectree-0.0.1/trajectree/quimb/quimb/tensor/fitting.py +0 -385
  63. trajectree-0.0.1/trajectree/quimb/quimb/tensor/geometry.py +0 -583
  64. trajectree-0.0.1/trajectree/quimb/quimb/tensor/interface.py +0 -114
  65. trajectree-0.0.1/trajectree/quimb/quimb/tensor/networking.py +0 -1058
  66. trajectree-0.0.1/trajectree/quimb/quimb/tensor/optimize.py +0 -1818
  67. trajectree-0.0.1/trajectree/quimb/quimb/tensor/tensor_1d.py +0 -4778
  68. trajectree-0.0.1/trajectree/quimb/quimb/tensor/tensor_1d_compress.py +0 -1854
  69. trajectree-0.0.1/trajectree/quimb/quimb/tensor/tensor_1d_tebd.py +0 -662
  70. trajectree-0.0.1/trajectree/quimb/quimb/tensor/tensor_2d.py +0 -5954
  71. trajectree-0.0.1/trajectree/quimb/quimb/tensor/tensor_2d_compress.py +0 -96
  72. trajectree-0.0.1/trajectree/quimb/quimb/tensor/tensor_2d_tebd.py +0 -1230
  73. trajectree-0.0.1/trajectree/quimb/quimb/tensor/tensor_3d.py +0 -2869
  74. trajectree-0.0.1/trajectree/quimb/quimb/tensor/tensor_3d_tebd.py +0 -46
  75. trajectree-0.0.1/trajectree/quimb/quimb/tensor/tensor_approx_spectral.py +0 -60
  76. trajectree-0.0.1/trajectree/quimb/quimb/tensor/tensor_arbgeom.py +0 -3237
  77. trajectree-0.0.1/trajectree/quimb/quimb/tensor/tensor_arbgeom_compress.py +0 -565
  78. trajectree-0.0.1/trajectree/quimb/quimb/tensor/tensor_arbgeom_tebd.py +0 -1138
  79. trajectree-0.0.1/trajectree/quimb/quimb/tensor/tensor_builder.py +0 -5411
  80. trajectree-0.0.1/trajectree/quimb/quimb/tensor/tensor_core.py +0 -11179
  81. trajectree-0.0.1/trajectree/quimb/quimb/tensor/tensor_dmrg.py +0 -1472
  82. trajectree-0.0.1/trajectree/quimb/quimb/tensor/tensor_mera.py +0 -204
  83. trajectree-0.0.1/trajectree/quimb/quimb/utils.py +0 -892
  84. trajectree-0.0.1/trajectree/quimb/tests/__init__.py +0 -0
  85. trajectree-0.0.1/trajectree/quimb/tests/test_accel.py +0 -501
  86. trajectree-0.0.1/trajectree/quimb/tests/test_calc.py +0 -788
  87. trajectree-0.0.1/trajectree/quimb/tests/test_core.py +0 -847
  88. trajectree-0.0.1/trajectree/quimb/tests/test_evo.py +0 -565
  89. trajectree-0.0.1/trajectree/quimb/tests/test_gen/__init__.py +0 -0
  90. trajectree-0.0.1/trajectree/quimb/tests/test_gen/test_operators.py +0 -361
  91. trajectree-0.0.1/trajectree/quimb/tests/test_gen/test_rand.py +0 -296
  92. trajectree-0.0.1/trajectree/quimb/tests/test_gen/test_states.py +0 -261
  93. trajectree-0.0.1/trajectree/quimb/tests/test_linalg/__init__.py +0 -0
  94. trajectree-0.0.1/trajectree/quimb/tests/test_linalg/test_approx_spectral.py +0 -368
  95. trajectree-0.0.1/trajectree/quimb/tests/test_linalg/test_base_linalg.py +0 -351
  96. trajectree-0.0.1/trajectree/quimb/tests/test_linalg/test_mpi_linalg.py +0 -127
  97. trajectree-0.0.1/trajectree/quimb/tests/test_linalg/test_numpy_linalg.py +0 -84
  98. trajectree-0.0.1/trajectree/quimb/tests/test_linalg/test_rand_linalg.py +0 -134
  99. trajectree-0.0.1/trajectree/quimb/tests/test_linalg/test_slepc_linalg.py +0 -283
  100. trajectree-0.0.1/trajectree/quimb/tests/test_tensor/__init__.py +0 -0
  101. trajectree-0.0.1/trajectree/quimb/tests/test_tensor/test_belief_propagation/__init__.py +0 -0
  102. trajectree-0.0.1/trajectree/quimb/tests/test_tensor/test_belief_propagation/test_d1bp.py +0 -39
  103. trajectree-0.0.1/trajectree/quimb/tests/test_tensor/test_belief_propagation/test_d2bp.py +0 -67
  104. trajectree-0.0.1/trajectree/quimb/tests/test_tensor/test_belief_propagation/test_hd1bp.py +0 -64
  105. trajectree-0.0.1/trajectree/quimb/tests/test_tensor/test_belief_propagation/test_hv1bp.py +0 -51
  106. trajectree-0.0.1/trajectree/quimb/tests/test_tensor/test_belief_propagation/test_l1bp.py +0 -142
  107. trajectree-0.0.1/trajectree/quimb/tests/test_tensor/test_belief_propagation/test_l2bp.py +0 -101
  108. trajectree-0.0.1/trajectree/quimb/tests/test_tensor/test_circuit.py +0 -816
  109. trajectree-0.0.1/trajectree/quimb/tests/test_tensor/test_contract.py +0 -67
  110. trajectree-0.0.1/trajectree/quimb/tests/test_tensor/test_decomp.py +0 -40
  111. trajectree-0.0.1/trajectree/quimb/tests/test_tensor/test_mera.py +0 -52
  112. trajectree-0.0.1/trajectree/quimb/tests/test_tensor/test_optimizers.py +0 -488
  113. trajectree-0.0.1/trajectree/quimb/tests/test_tensor/test_tensor_1d.py +0 -1171
  114. trajectree-0.0.1/trajectree/quimb/tests/test_tensor/test_tensor_2d.py +0 -606
  115. trajectree-0.0.1/trajectree/quimb/tests/test_tensor/test_tensor_2d_tebd.py +0 -144
  116. trajectree-0.0.1/trajectree/quimb/tests/test_tensor/test_tensor_3d.py +0 -123
  117. trajectree-0.0.1/trajectree/quimb/tests/test_tensor/test_tensor_arbgeom.py +0 -226
  118. trajectree-0.0.1/trajectree/quimb/tests/test_tensor/test_tensor_builder.py +0 -441
  119. trajectree-0.0.1/trajectree/quimb/tests/test_tensor/test_tensor_core.py +0 -2066
  120. trajectree-0.0.1/trajectree/quimb/tests/test_tensor/test_tensor_dmrg.py +0 -388
  121. trajectree-0.0.1/trajectree/quimb/tests/test_tensor/test_tensor_spectral_approx.py +0 -63
  122. trajectree-0.0.1/trajectree/quimb/tests/test_tensor/test_tensor_tebd.py +0 -270
  123. trajectree-0.0.1/trajectree/quimb/tests/test_utils.py +0 -85
  124. {trajectree-0.0.1 → trajectree-0.0.3}/LICENSE +0 -0
  125. {trajectree-0.0.1 → trajectree-0.0.3}/README.md +0 -0
  126. {trajectree-0.0.1 → trajectree-0.0.3}/Trajectree.egg-info/dependency_links.txt +0 -0
  127. {trajectree-0.0.1 → trajectree-0.0.3}/Trajectree.egg-info/top_level.txt +0 -0
  128. {trajectree-0.0.1 → trajectree-0.0.3}/setup.cfg +0 -0
  129. {trajectree-0.0.1/trajectree/quimb/quimb/experimental → trajectree-0.0.3/trajectree}/__init__.py +0 -0
  130. {trajectree-0.0.1 → trajectree-0.0.3}/trajectree/experimental/sparse.py +0 -0
  131. {trajectree-0.0.1 → trajectree-0.0.3}/trajectree/fock_optics/noise_models.py +0 -0
  132. {trajectree-0.0.1 → trajectree-0.0.3}/trajectree/optical_quant_info.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Trajectree
3
- Version: 0.0.1
3
+ Version: 0.0.3
4
4
  Summary: Trajectree is a quantum trajectory theory and tensor network based quantum optics simulator.
5
5
  Author-email: Ansh Singal <asingal@u.northwestern.edu>
6
6
  License-Expression: MIT
@@ -9,10 +9,9 @@ Classifier: Operating System :: OS Independent
9
9
  Requires-Python: >=3.9
10
10
  Description-Content-Type: text/markdown
11
11
  License-File: LICENSE
12
- Requires-Dist: numpy
13
- Requires-Dist: scipy
14
12
  Requires-Dist: matplotlib
15
13
  Requires-Dist: qutip
14
+ Requires-Dist: trajectree-quimb
16
15
  Dynamic: license-file
17
16
 
18
17
  Trajectree is a quantum trajectory theory and tensor network based quantum optics simulator.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Trajectree
3
- Version: 0.0.1
3
+ Version: 0.0.3
4
4
  Summary: Trajectree is a quantum trajectory theory and tensor network based quantum optics simulator.
5
5
  Author-email: Ansh Singal <asingal@u.northwestern.edu>
6
6
  License-Expression: MIT
@@ -9,10 +9,9 @@ Classifier: Operating System :: OS Independent
9
9
  Requires-Python: >=3.9
10
10
  Description-Content-Type: text/markdown
11
11
  License-File: LICENSE
12
- Requires-Dist: numpy
13
- Requires-Dist: scipy
14
12
  Requires-Dist: matplotlib
15
13
  Requires-Dist: qutip
14
+ Requires-Dist: trajectree-quimb
16
15
  Dynamic: license-file
17
16
 
18
17
  Trajectree is a quantum trajectory theory and tensor network based quantum optics simulator.
@@ -0,0 +1,19 @@
1
+ LICENSE
2
+ README.md
3
+ pyproject.toml
4
+ Trajectree.egg-info/PKG-INFO
5
+ Trajectree.egg-info/SOURCES.txt
6
+ Trajectree.egg-info/dependency_links.txt
7
+ Trajectree.egg-info/requires.txt
8
+ Trajectree.egg-info/top_level.txt
9
+ trajectree/__init__.py
10
+ trajectree/optical_quant_info.py
11
+ trajectree/trajectory.py
12
+ trajectree/experimental/sparse.py
13
+ trajectree/fock_optics/devices.py
14
+ trajectree/fock_optics/light_sources.py
15
+ trajectree/fock_optics/measurement.py
16
+ trajectree/fock_optics/noise_models.py
17
+ trajectree/fock_optics/outputs.py
18
+ trajectree/fock_optics/utils.py
19
+ trajectree/sequence/swap.py
@@ -1,4 +1,3 @@
1
- numpy
2
- scipy
3
1
  matplotlib
4
2
  qutip
3
+ trajectree-quimb
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "Trajectree"
7
- version = "0.0.1"
7
+ version = "0.0.3"
8
8
  authors = [{ name="Ansh Singal", email="asingal@u.northwestern.edu" },]
9
9
  description = "Trajectree is a quantum trajectory theory and tensor network based quantum optics simulator."
10
10
  readme = "README.md"
@@ -18,9 +18,8 @@ classifiers = [
18
18
  ]
19
19
 
20
20
  dependencies=[
21
- 'numpy',
22
- 'scipy',
23
21
  'matplotlib',
24
- 'qutip'
22
+ 'qutip',
23
+ 'trajectree-quimb'
25
24
  ]
26
25
 
@@ -3,7 +3,7 @@ from scipy.linalg import expm
3
3
  import numpy as np
4
4
  from numpy import kron
5
5
 
6
- from ..quimb.quimb.tensor import MatrixProductOperator as mpo #type: ignore
6
+ from quimb.tensor import MatrixProductOperator as mpo #type: ignore
7
7
 
8
8
  import qutip as qt
9
9
 
@@ -8,8 +8,8 @@ import numpy as np
8
8
  from numpy.linalg import matrix_power
9
9
  from numpy import kron, sqrt
10
10
 
11
- from ..quimb.quimb.tensor.tensor_arbgeom import tensor_network_apply_op_vec #type: ignore
12
- from ..quimb.quimb.tensor.tensor_1d_compress import enforce_1d_like #type: ignore
11
+ from quimb.tensor.tensor_arbgeom import tensor_network_apply_op_vec #type: ignore
12
+ from quimb.tensor.tensor_1d_compress import enforce_1d_like #type: ignore
13
13
 
14
14
  import qutip as qt
15
15
  from math import factorial
@@ -9,9 +9,9 @@ import numpy as np
9
9
  from numpy.linalg import matrix_power
10
10
  from numpy import sqrt
11
11
 
12
- from ..quimb.quimb.tensor import MatrixProductOperator as mpo #type: ignore
13
- from ..quimb.quimb.tensor.tensor_arbgeom import tensor_network_apply_op_vec #type: ignore
14
- from ..quimb.quimb.tensor.tensor_1d_compress import enforce_1d_like #type: ignore
12
+ from quimb.tensor import MatrixProductOperator as mpo #type: ignore
13
+ from quimb.tensor.tensor_arbgeom import tensor_network_apply_op_vec #type: ignore
14
+ from quimb.tensor.tensor_1d_compress import enforce_1d_like #type: ignore
15
15
 
16
16
  import qutip as qt
17
17
  from math import factorial
@@ -127,26 +127,26 @@ def bell_state_measurement(psi, N, site_tags, num_modes, efficiencies, dark_coun
127
127
  if return_MPOs:
128
128
  returned_MPOs = [U_BS_H, U_BS_V]
129
129
  if use_trajectory:
130
- quantum_channel_list = [quantum_channel(N = N, num_modes = num_modes, formalism = "closed", unitary_MPOs = BSM_MPO, name = "BSM") for BSM_MPO in returned_MPOs]
130
+ quantum_channel_list = [quantum_channel(N = N, num_modes = num_modes, formalism = "closed", unitary_MPOs = BSM_MPO, name = "beam splitter") for BSM_MPO in returned_MPOs]
131
131
 
132
132
  damping_kraus_ops_0 = single_mode_bosonic_noise_channels(noise_parameter = 1-efficiencies[0], N = N)
133
133
  damping_kraus_ops_1 = single_mode_bosonic_noise_channels(noise_parameter = 1-efficiencies[1], N = N)
134
134
  two_mode_kraus_ops_0 = [sp.kron(op1, op2) for op1 in damping_kraus_ops_0 for op2 in damping_kraus_ops_0]
135
135
  two_mode_kraus_ops_1 = [sp.kron(op1, op2) for op1 in damping_kraus_ops_1 for op2 in damping_kraus_ops_1]
136
- quantum_channel_list.append(quantum_channel(N = N, num_modes = num_modes, formalism = "kraus", kraus_ops_tuple = ((2,3), two_mode_kraus_ops_0))) # The tuples in this list are defined as (sites, kraus_ops). The sites are the sites where the Kraus ops are applied.
137
- quantum_channel_list.append(quantum_channel(N = N, num_modes = num_modes, formalism = "kraus", kraus_ops_tuple = ((6,7), two_mode_kraus_ops_1))) # The tuples in this list are defined as (sites, kraus_ops). The sites are the sites where the Kraus ops are applied.
136
+ quantum_channel_list.append(quantum_channel(N = N, num_modes = num_modes, formalism = "kraus", kraus_ops_tuple = ((2,3), two_mode_kraus_ops_0), name = "detector inefficiency")) # The tuples in this list are defined as (sites, kraus_ops). The sites are the sites where the Kraus ops are applied.
137
+ quantum_channel_list.append(quantum_channel(N = N, num_modes = num_modes, formalism = "kraus", kraus_ops_tuple = ((6,7), two_mode_kraus_ops_1), name = "detector inefficiency")) # The tuples in this list are defined as (sites, kraus_ops). The sites are the sites where the Kraus ops are applied.
138
138
 
139
139
  amplification_kraus_ops_0 = single_mode_bosonic_noise_channels(noise_parameter = dark_counts_gain[0], N = N)
140
140
  amplification_kraus_ops_1 = single_mode_bosonic_noise_channels(noise_parameter = dark_counts_gain[1], N = N)
141
141
  two_mode_kraus_ops_0 = [sp.kron(op1, op2) for op1 in amplification_kraus_ops_0 for op2 in amplification_kraus_ops_0]
142
142
  two_mode_kraus_ops_1 = [sp.kron(op1, op2) for op1 in amplification_kraus_ops_1 for op2 in amplification_kraus_ops_1]
143
- quantum_channel_list.append(quantum_channel(N = N, num_modes = num_modes, formalism = "kraus", kraus_ops_tuple = ((2,3), two_mode_kraus_ops_0))) # The tuples in this list are defined as (sites, kraus_ops). The sites are the sites where the Kraus ops are applied.
144
- quantum_channel_list.append(quantum_channel(N = N, num_modes = num_modes, formalism = "kraus", kraus_ops_tuple = ((6,7), two_mode_kraus_ops_1))) # The tuples in this list are defined as (sites, kraus_ops). The sites are the sites where the Kraus ops are applied.
143
+ quantum_channel_list.append(quantum_channel(N = N, num_modes = num_modes, formalism = "kraus", kraus_ops_tuple = ((2,3), two_mode_kraus_ops_0), name = "dark counts")) # The tuples in this list are defined as (sites, kraus_ops). The sites are the sites where the Kraus ops are applied.
144
+ quantum_channel_list.append(quantum_channel(N = N, num_modes = num_modes, formalism = "kraus", kraus_ops_tuple = ((6,7), two_mode_kraus_ops_1), name = "dark counts")) # The tuples in this list are defined as (sites, kraus_ops). The sites are the sites where the Kraus ops are applied.
145
145
 
146
146
  BSM_POVM_1_OPs = generate_sqrt_POVM_MPO(sites=measurements[1], outcome = det_outcome, total_sites=num_modes, efficiency=1, N=N, pnr = pnr)
147
147
  BSM_POVM_1_OPs.extend(generate_sqrt_POVM_MPO(sites=measurements[0], outcome = 0, total_sites=num_modes, efficiency=1, N=N, pnr = pnr))
148
148
 
149
- det_quantum_channels = [quantum_channel(N = N, num_modes = num_modes, formalism = "closed", unitary_MPOs = DET_MPO, name = "DET") for DET_MPO in BSM_POVM_1_OPs]
149
+ det_quantum_channels = [quantum_channel(N = N, num_modes = num_modes, formalism = "closed", unitary_MPOs = DET_MPO, name = "Det POVM") for DET_MPO in BSM_POVM_1_OPs]
150
150
  quantum_channel_list.extend(det_quantum_channels)
151
151
 
152
152
  return quantum_channel_list
@@ -20,7 +20,7 @@ def generate_labels(num_systems, N):
20
20
  labels.append(new_label[:-1])
21
21
  return labels
22
22
 
23
- def read_quantum_state(TN_state, N, num_states = 4, return_dense = False, precision = 10):
23
+ def read_quantum_state(TN_state, N, num_states = 4, return_dense = False, precision = 10, return_string = False):
24
24
  dense_state = TN_state.to_dense()
25
25
  if return_dense: return dense_state
26
26
  dense_state = np.reshape(dense_state.data, (-1, 1), order = 'C')
@@ -28,14 +28,18 @@ def read_quantum_state(TN_state, N, num_states = 4, return_dense = False, precis
28
28
  dense_state.data = np.round(dense_state.data, precision)
29
29
  dense_state.eliminate_zeros()
30
30
 
31
- print_quantum_state(N, dense_state, num_states)
31
+ return print_quantum_state(N, dense_state, num_states, return_string)
32
32
 
33
- def print_quantum_state(N, dense_state, num_states = 4):
33
+ def print_quantum_state(N, dense_state, num_states = 4, return_string = False):
34
34
  labels = generate_labels(num_states,N)
35
35
  state = dense_state.nonzero()[0]
36
- print("Corresponding Basis terms:")
37
- for k in state: print(labels[k],"-",k,"-",dense_state[k].data)
38
-
36
+ output = []
37
+ output.append("Corresponding Basis terms:")
38
+ for k in state: output.append(f"{labels[k]} - {k} - {dense_state[k].data}")
39
+ if not return_string:
40
+ print("\n".join(map(str, output)))
41
+ else:
42
+ return output
39
43
 
40
44
 
41
45
  def plot_coincidences(coincidence, idler_angles, signal_angles, title = ''):
@@ -1,12 +1,14 @@
1
1
  import numpy as np
2
2
  from numpy import sqrt
3
3
 
4
- from ..quimb.quimb.tensor import MatrixProductState as mps #type: ignore
5
- from ..quimb.quimb.tensor import MatrixProductOperator as mpo #type: ignore
6
- from ..quimb.quimb.tensor.tensor_arbgeom import tensor_network_apply_op_vec #type: ignore
7
- from ..quimb.quimb.tensor.tensor_core import new_bond #type: ignore
8
- from ..quimb.quimb.tensor.tensor_1d_compress import enforce_1d_like #type: ignore
9
- from ..quimb.quimb.tensor.tensor_1d import TensorNetwork1DOperator #type: ignore
4
+ from quimb.tensor import MatrixProductState as mps #type: ignore
5
+ from quimb.tensor import MatrixProductOperator as mpo #type: ignore
6
+ from quimb.tensor.tensor_arbgeom import tensor_network_apply_op_vec #type: ignore
7
+ from quimb.tensor.tensor_core import new_bond #type: ignore
8
+ from quimb.tensor.tensor_1d_compress import enforce_1d_like #type: ignore
9
+ from quimb.tensor.tensor_1d import TensorNetwork1DOperator #type: ignore
10
+
11
+ from .outputs import read_quantum_state
10
12
 
11
13
  import qutip as qt
12
14
  import re
@@ -154,6 +156,7 @@ def create_bimode_bell_state(bell_state, N, error_tolerance = 1e-12):
154
156
  elif bell_state == "phi_minus":
155
157
  psi = tensor_network_apply_op_vec(NOT_MPO_0, vacuum, compress=True, contract = True, cutoff = error_tolerance)
156
158
 
159
+ # read_quantum_state(psi, N)
157
160
 
158
161
  psi = tensor_network_apply_op_vec(H_MPO, psi, compress=True, contract = True, cutoff = error_tolerance)
159
162
  # read_quantum_state(psi, N, num_states = 2)
@@ -2,6 +2,7 @@ from ..fock_optics.noise_models import *
2
2
  from ..fock_optics.measurement import *
3
3
  from ..fock_optics.utils import *
4
4
  from ..fock_optics.light_sources import *
5
+ from ..fock_optics.outputs import *
5
6
 
6
7
  from ..trajectory import *
7
8
 
@@ -15,8 +16,8 @@ def generate_swapping_circuit(N, num_modes, site_tags, bsm_det_effs, bsm_dark_co
15
16
  # Amplitude damping due to fibers
16
17
  damping_kraus_ops = single_mode_bosonic_noise_channels(noise_parameter = channel_loss, N = N)
17
18
  two_mode_kraus_ops = [sp.kron(op, op) for op in damping_kraus_ops]
18
- quantum_channel_list.append(quantum_channel(N = N, num_modes = num_modes, formalism = "kraus", kraus_ops_tuple = ((2,3), two_mode_kraus_ops))) # The tuples in this list are defined as (sites, kraus_ops). The sites are the sites where the Kraus ops are applied.
19
- quantum_channel_list.append(quantum_channel(N = N, num_modes = num_modes, formalism = "kraus", kraus_ops_tuple = ((6,7), two_mode_kraus_ops))) # The tuples in this list are defined as (sites, kraus_ops). The sites are the sites where the Kraus ops are applied.
19
+ quantum_channel_list.append(quantum_channel(N = N, num_modes = num_modes, formalism = "kraus", kraus_ops_tuple = ((2,3), two_mode_kraus_ops), name = "fiber_attenuation")) # The tuples in this list are defined as (sites, kraus_ops). The sites are the sites where the Kraus ops are applied.
20
+ quantum_channel_list.append(quantum_channel(N = N, num_modes = num_modes, formalism = "kraus", kraus_ops_tuple = ((6,7), two_mode_kraus_ops), name = "fiber_attenuation")) # The tuples in this list are defined as (sites, kraus_ops). The sites are the sites where the Kraus ops are applied.
20
21
 
21
22
  # Quantum channel for the Bell state measurement
22
23
  # BSM_MPOs = bell_state_measurement(None, N, site_tags, num_modes, bsm_det_effs, error_tolerance, measurements = bsm_measurements, pnr = False, use_trajectory = True, return_MPOs = True, compress=True, contract=True)
@@ -50,7 +51,7 @@ def perform_swapping_simulation(N, num_modes, num_simulations, params, error_tol
50
51
  quantum_channels = generate_swapping_circuit(N, num_modes, psi.site_tags, [params["BSM_det_loss_1"], params["BSM_det_loss_2"]], [params["BSM_dark_counts_1"], params["BSM_dark_counts_2"]], params["BSM_meas"], params["channel_loss"], error_tolerance)
51
52
 
52
53
  if params["if_analyze_entanglement"]:
53
- analyze_entanglement(quantum_channels, N, psi.site_tags, num_modes, params["PA_det_loss"], error_tolerance, params["alpha_list"], params["delta_list"])
54
+ analyze_entanglement(quantum_channels, N, psi.site_tags, num_modes, params["PA_det_eff"], error_tolerance, params["alpha_list"], params["delta_list"])
54
55
 
55
56
  t_eval = trajectory_evaluator(quantum_channels)
56
57
 
@@ -64,7 +65,7 @@ def perform_swapping_simulation(N, num_modes, num_simulations, params, error_tol
64
65
  probabilities.append(psi_iter.normalize())
65
66
 
66
67
  if params["calc_fidelity"]:
67
- fidelity = np.abs(calc_fidelity_swapping(psi_iter, "psi_minus", N, error_tolerance))
68
+ fidelity = np.abs(calc_fidelity_swapping(psi_iter, "psi_plus", N, error_tolerance))
68
69
  fidelities.append(fidelity)
69
70
 
70
71
  time_taken = time.time() - start
@@ -1,7 +1,7 @@
1
1
  import numpy as np
2
- from .quimb.quimb.tensor import MatrixProductOperator as mpo #type: ignore
3
- from .quimb.quimb.tensor.tensor_arbgeom import tensor_network_apply_op_vec #type: ignore
4
-
2
+ from quimb.tensor import MatrixProductOperator as mpo #type: ignore
3
+ from quimb.tensor.tensor_arbgeom import tensor_network_apply_op_vec #type: ignore
4
+ from .fock_optics.outputs import read_quantum_state
5
5
 
6
6
 
7
7
  class quantum_channel:
@@ -84,7 +84,7 @@ class trajectory_evaluator():
84
84
  def cache_trajectree_node(self, trajectory_probs, trajectories):
85
85
  sorted_indices = np.argsort(trajectory_probs)
86
86
 
87
- print("trajectory_probs", trajectory_probs)
87
+ # print("trajectory_probs", trajectory_probs)
88
88
 
89
89
  cached_trajectory_indices = sorted_indices[-self.cache_size:]
90
90
  cached_trajectories = np.array(trajectories)[cached_trajectory_indices]
@@ -206,5 +206,6 @@ class trajectory_evaluator():
206
206
  else:
207
207
  # print("unitary skipped:", self.traversed_nodes)
208
208
  pass
209
+ pass
209
210
 
210
211
  return psi
@@ -1,129 +0,0 @@
1
- LICENSE
2
- README.md
3
- pyproject.toml
4
- Trajectree.egg-info/PKG-INFO
5
- Trajectree.egg-info/SOURCES.txt
6
- Trajectree.egg-info/dependency_links.txt
7
- Trajectree.egg-info/requires.txt
8
- Trajectree.egg-info/top_level.txt
9
- trajectree/__init__.py
10
- trajectree/optical_quant_info.py
11
- trajectree/trajectory.py
12
- trajectree/experimental/sparse.py
13
- trajectree/fock_optics/devices.py
14
- trajectree/fock_optics/light_sources.py
15
- trajectree/fock_optics/measurement.py
16
- trajectree/fock_optics/noise_models.py
17
- trajectree/fock_optics/outputs.py
18
- trajectree/fock_optics/utils.py
19
- trajectree/quimb/docs/conf.py
20
- trajectree/quimb/docs/_pygments/_pygments_dark.py
21
- trajectree/quimb/docs/_pygments/_pygments_light.py
22
- trajectree/quimb/docs/examples/ex_mpi_expm_evo.py
23
- trajectree/quimb/quimb/__init__.py
24
- trajectree/quimb/quimb/calc.py
25
- trajectree/quimb/quimb/core.py
26
- trajectree/quimb/quimb/evo.py
27
- trajectree/quimb/quimb/gates.py
28
- trajectree/quimb/quimb/schematic.py
29
- trajectree/quimb/quimb/utils.py
30
- trajectree/quimb/quimb/experimental/__init__.py
31
- trajectree/quimb/quimb/experimental/autojittn.py
32
- trajectree/quimb/quimb/experimental/cluster_update.py
33
- trajectree/quimb/quimb/experimental/merabuilder.py
34
- trajectree/quimb/quimb/experimental/schematic.py
35
- trajectree/quimb/quimb/experimental/tn_marginals.py
36
- trajectree/quimb/quimb/experimental/tnvmc.py
37
- trajectree/quimb/quimb/experimental/belief_propagation/__init__.py
38
- trajectree/quimb/quimb/experimental/belief_propagation/bp_common.py
39
- trajectree/quimb/quimb/experimental/belief_propagation/d1bp.py
40
- trajectree/quimb/quimb/experimental/belief_propagation/d2bp.py
41
- trajectree/quimb/quimb/experimental/belief_propagation/hd1bp.py
42
- trajectree/quimb/quimb/experimental/belief_propagation/hv1bp.py
43
- trajectree/quimb/quimb/experimental/belief_propagation/l1bp.py
44
- trajectree/quimb/quimb/experimental/belief_propagation/l2bp.py
45
- trajectree/quimb/quimb/experimental/belief_propagation/regions.py
46
- trajectree/quimb/quimb/experimental/operatorbuilder/__init__.py
47
- trajectree/quimb/quimb/experimental/operatorbuilder/operatorbuilder.py
48
- trajectree/quimb/quimb/gen/__init__.py
49
- trajectree/quimb/quimb/gen/operators.py
50
- trajectree/quimb/quimb/gen/rand.py
51
- trajectree/quimb/quimb/gen/states.py
52
- trajectree/quimb/quimb/linalg/__init__.py
53
- trajectree/quimb/quimb/linalg/approx_spectral.py
54
- trajectree/quimb/quimb/linalg/autoblock.py
55
- trajectree/quimb/quimb/linalg/base_linalg.py
56
- trajectree/quimb/quimb/linalg/mpi_launcher.py
57
- trajectree/quimb/quimb/linalg/numpy_linalg.py
58
- trajectree/quimb/quimb/linalg/rand_linalg.py
59
- trajectree/quimb/quimb/linalg/scipy_linalg.py
60
- trajectree/quimb/quimb/linalg/slepc_linalg.py
61
- trajectree/quimb/quimb/tensor/__init__.py
62
- trajectree/quimb/quimb/tensor/array_ops.py
63
- trajectree/quimb/quimb/tensor/circuit.py
64
- trajectree/quimb/quimb/tensor/circuit_gen.py
65
- trajectree/quimb/quimb/tensor/contraction.py
66
- trajectree/quimb/quimb/tensor/decomp.py
67
- trajectree/quimb/quimb/tensor/drawing.py
68
- trajectree/quimb/quimb/tensor/fitting.py
69
- trajectree/quimb/quimb/tensor/geometry.py
70
- trajectree/quimb/quimb/tensor/interface.py
71
- trajectree/quimb/quimb/tensor/networking.py
72
- trajectree/quimb/quimb/tensor/optimize.py
73
- trajectree/quimb/quimb/tensor/tensor_1d.py
74
- trajectree/quimb/quimb/tensor/tensor_1d_compress.py
75
- trajectree/quimb/quimb/tensor/tensor_1d_tebd.py
76
- trajectree/quimb/quimb/tensor/tensor_2d.py
77
- trajectree/quimb/quimb/tensor/tensor_2d_compress.py
78
- trajectree/quimb/quimb/tensor/tensor_2d_tebd.py
79
- trajectree/quimb/quimb/tensor/tensor_3d.py
80
- trajectree/quimb/quimb/tensor/tensor_3d_tebd.py
81
- trajectree/quimb/quimb/tensor/tensor_approx_spectral.py
82
- trajectree/quimb/quimb/tensor/tensor_arbgeom.py
83
- trajectree/quimb/quimb/tensor/tensor_arbgeom_compress.py
84
- trajectree/quimb/quimb/tensor/tensor_arbgeom_tebd.py
85
- trajectree/quimb/quimb/tensor/tensor_builder.py
86
- trajectree/quimb/quimb/tensor/tensor_core.py
87
- trajectree/quimb/quimb/tensor/tensor_dmrg.py
88
- trajectree/quimb/quimb/tensor/tensor_mera.py
89
- trajectree/quimb/tests/__init__.py
90
- trajectree/quimb/tests/test_accel.py
91
- trajectree/quimb/tests/test_calc.py
92
- trajectree/quimb/tests/test_core.py
93
- trajectree/quimb/tests/test_evo.py
94
- trajectree/quimb/tests/test_utils.py
95
- trajectree/quimb/tests/test_gen/__init__.py
96
- trajectree/quimb/tests/test_gen/test_operators.py
97
- trajectree/quimb/tests/test_gen/test_rand.py
98
- trajectree/quimb/tests/test_gen/test_states.py
99
- trajectree/quimb/tests/test_linalg/__init__.py
100
- trajectree/quimb/tests/test_linalg/test_approx_spectral.py
101
- trajectree/quimb/tests/test_linalg/test_base_linalg.py
102
- trajectree/quimb/tests/test_linalg/test_mpi_linalg.py
103
- trajectree/quimb/tests/test_linalg/test_numpy_linalg.py
104
- trajectree/quimb/tests/test_linalg/test_rand_linalg.py
105
- trajectree/quimb/tests/test_linalg/test_slepc_linalg.py
106
- trajectree/quimb/tests/test_tensor/__init__.py
107
- trajectree/quimb/tests/test_tensor/test_circuit.py
108
- trajectree/quimb/tests/test_tensor/test_contract.py
109
- trajectree/quimb/tests/test_tensor/test_decomp.py
110
- trajectree/quimb/tests/test_tensor/test_mera.py
111
- trajectree/quimb/tests/test_tensor/test_optimizers.py
112
- trajectree/quimb/tests/test_tensor/test_tensor_1d.py
113
- trajectree/quimb/tests/test_tensor/test_tensor_2d.py
114
- trajectree/quimb/tests/test_tensor/test_tensor_2d_tebd.py
115
- trajectree/quimb/tests/test_tensor/test_tensor_3d.py
116
- trajectree/quimb/tests/test_tensor/test_tensor_arbgeom.py
117
- trajectree/quimb/tests/test_tensor/test_tensor_builder.py
118
- trajectree/quimb/tests/test_tensor/test_tensor_core.py
119
- trajectree/quimb/tests/test_tensor/test_tensor_dmrg.py
120
- trajectree/quimb/tests/test_tensor/test_tensor_spectral_approx.py
121
- trajectree/quimb/tests/test_tensor/test_tensor_tebd.py
122
- trajectree/quimb/tests/test_tensor/test_belief_propagation/__init__.py
123
- trajectree/quimb/tests/test_tensor/test_belief_propagation/test_d1bp.py
124
- trajectree/quimb/tests/test_tensor/test_belief_propagation/test_d2bp.py
125
- trajectree/quimb/tests/test_tensor/test_belief_propagation/test_hd1bp.py
126
- trajectree/quimb/tests/test_tensor/test_belief_propagation/test_hv1bp.py
127
- trajectree/quimb/tests/test_tensor/test_belief_propagation/test_l1bp.py
128
- trajectree/quimb/tests/test_tensor/test_belief_propagation/test_l2bp.py
129
- trajectree/sequence/swap.py
@@ -1,3 +0,0 @@
1
- import sys
2
- import os
3
- sys.path.append(os.path.abspath(__file__).replace('__init__.py', 'quimb'))
@@ -1,118 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- """
3
- Pygments version of the sublime Mariana theme.
4
-
5
- Pygments template by Jan T. Sott (https://github.com/idleberg)
6
- """
7
-
8
- from pygments.style import Style
9
- from pygments.token import Keyword, Name, Comment, String, Error, Text, \
10
- Number, Operator, Generic, Whitespace, Punctuation, Other, Literal
11
-
12
-
13
- BACKGROUND = "#1a1c1e"
14
- CURRENT_LINE = "#4e5a65"
15
- SELECTION = "#343d46"
16
- FOREGROUND = "#d8dee9"
17
- COMMENT = "#5a6272"
18
- RED = "#ec5f66"
19
- ORANGE = "#f9ae58"
20
- YELLOW = "#fac761"
21
- GREEN = "#99c794"
22
- AQUA = "#70c2bb"
23
- BLUE = "#6699cc"
24
- PURPLE = "#c695c6"
25
-
26
-
27
- class MarianaDark(Style):
28
-
29
- default_style = ''
30
-
31
- background_color = BACKGROUND
32
- highlight_color = SELECTION
33
-
34
- background_color = BACKGROUND
35
- highlight_color = SELECTION
36
-
37
- styles = {
38
- # No corresponding class for the following:
39
- Text: FOREGROUND, # class: ''
40
- Whitespace: "", # class: 'w'
41
- Error: RED, # class: 'err'
42
- Other: "", # class 'x'
43
-
44
- Comment: COMMENT, # class: 'c'
45
- Comment.Multiline: "", # class: 'cm'
46
- Comment.Preproc: "", # class: 'cp'
47
- Comment.Single: "", # class: 'c1'
48
- Comment.Special: "", # class: 'cs'
49
-
50
- Keyword: PURPLE, # class: 'k'
51
- Keyword.Constant: RED, # class: 'kc'
52
- Keyword.Declaration: "", # class: 'kd'
53
- Keyword.Namespace: PURPLE, # class: 'kn'
54
- Keyword.Pseudo: RED, # class: 'kp'
55
- Keyword.Reserved: "", # class: 'kr'
56
- Keyword.Type: YELLOW, # class: 'kt'
57
-
58
- Operator: RED, # class: 'o'
59
- Operator.Word: "", # class: 'ow' - like keywords
60
-
61
- Punctuation: AQUA, # class: 'p'
62
-
63
- Name: FOREGROUND, # class: 'n'
64
- Name.Attribute: BLUE, # class: 'na' - to be revised
65
- Name.Builtin: BLUE, # class: 'nb'
66
- Name.Builtin.Pseudo: RED, # class: 'bp'
67
- Name.Class: ORANGE, # class: 'nc' - to be revised
68
- Name.Constant: RED, # class: 'no' - to be revised
69
- Name.Decorator: AQUA, # class: 'nd' - to be revised
70
- Name.Entity: BLUE, # class: 'ni'
71
- Name.Exception: RED, # class: 'ne'
72
- Name.Function: AQUA, # class: 'nf'
73
- Name.Function.Magic: BLUE, # class: 'nf'
74
- Name.Property: BLUE, # class: 'py'
75
- Name.Label: BLUE, # class: 'nl'
76
- Name.Namespace: BLUE, # class: 'nn' - to be revised
77
- Name.Other: BLUE, # class: 'nx'
78
- Name.Tag: AQUA, # class: 'nt' - like a keyword
79
- Name.Variable: RED, # class: 'nv' - to be revised
80
- Name.Variable.Class: "", # class: 'vc' - to be revised
81
- Name.Variable.Global: "", # class: 'vg' - to be revised
82
- Name.Variable.Instance: "", # class: 'vi' - to be revised
83
-
84
- Number: ORANGE, # class: 'm'
85
- Number.Float: "", # class: 'mf'
86
- Number.Hex: "", # class: 'mh'
87
- Number.Integer: "", # class: 'mi'
88
- Number.Integer.Long: "", # class: 'il'
89
- Number.Oct: "", # class: 'mo'
90
-
91
- Literal: ORANGE, # class: 'l'
92
- Literal.Date: GREEN, # class: 'ld'
93
-
94
- String: GREEN, # class: 's'
95
- String.Backtick: "", # class: 'sb'
96
- String.Char: FOREGROUND, # class: 'sc'
97
- String.Doc: COMMENT, # class: 'sd' - like a comment
98
- String.Double: "", # class: 's2'
99
- String.Escape: ORANGE, # class: 'se'
100
- String.Heredoc: "", # class: 'sh'
101
- String.Interpol: ORANGE, # class: 'si'
102
- String.Other: "", # class: 'sx'
103
- String.Regex: "", # class: 'sr'
104
- String.Single: "", # class: 's1'
105
- String.Symbol: "", # class: 'ss'
106
-
107
- Generic: "", # class: 'g'
108
- Generic.Deleted: RED, # class: 'gd',
109
- Generic.Emph: "italic", # class: 'ge'
110
- Generic.Error: "", # class: 'gr'
111
- Generic.Heading: "bold " + FOREGROUND, # class: 'gh'
112
- Generic.Inserted: GREEN, # class: 'gi'
113
- Generic.Output: "", # class: 'go'
114
- Generic.Prompt: "bold " + COMMENT, # class: 'gp'
115
- Generic.Strong: "bold", # class: 'gs'
116
- Generic.Subheading: "bold " + AQUA, # class: 'gu'
117
- Generic.Traceback: "", # class: 'gt'
118
- }