Trajectree 0.0.0__py3-none-any.whl → 0.0.1__py3-none-any.whl

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 (122) hide show
  1. trajectree/__init__.py +3 -0
  2. trajectree/fock_optics/devices.py +1 -1
  3. trajectree/fock_optics/light_sources.py +2 -2
  4. trajectree/fock_optics/measurement.py +3 -3
  5. trajectree/fock_optics/utils.py +6 -6
  6. trajectree/quimb/docs/_pygments/_pygments_dark.py +118 -0
  7. trajectree/quimb/docs/_pygments/_pygments_light.py +118 -0
  8. trajectree/quimb/docs/conf.py +158 -0
  9. trajectree/quimb/docs/examples/ex_mpi_expm_evo.py +62 -0
  10. trajectree/quimb/quimb/__init__.py +507 -0
  11. trajectree/quimb/quimb/calc.py +1491 -0
  12. trajectree/quimb/quimb/core.py +2279 -0
  13. trajectree/quimb/quimb/evo.py +712 -0
  14. trajectree/quimb/quimb/experimental/__init__.py +0 -0
  15. trajectree/quimb/quimb/experimental/autojittn.py +129 -0
  16. trajectree/quimb/quimb/experimental/belief_propagation/__init__.py +109 -0
  17. trajectree/quimb/quimb/experimental/belief_propagation/bp_common.py +397 -0
  18. trajectree/quimb/quimb/experimental/belief_propagation/d1bp.py +316 -0
  19. trajectree/quimb/quimb/experimental/belief_propagation/d2bp.py +653 -0
  20. trajectree/quimb/quimb/experimental/belief_propagation/hd1bp.py +571 -0
  21. trajectree/quimb/quimb/experimental/belief_propagation/hv1bp.py +775 -0
  22. trajectree/quimb/quimb/experimental/belief_propagation/l1bp.py +316 -0
  23. trajectree/quimb/quimb/experimental/belief_propagation/l2bp.py +537 -0
  24. trajectree/quimb/quimb/experimental/belief_propagation/regions.py +194 -0
  25. trajectree/quimb/quimb/experimental/cluster_update.py +286 -0
  26. trajectree/quimb/quimb/experimental/merabuilder.py +865 -0
  27. trajectree/quimb/quimb/experimental/operatorbuilder/__init__.py +15 -0
  28. trajectree/quimb/quimb/experimental/operatorbuilder/operatorbuilder.py +1631 -0
  29. trajectree/quimb/quimb/experimental/schematic.py +7 -0
  30. trajectree/quimb/quimb/experimental/tn_marginals.py +130 -0
  31. trajectree/quimb/quimb/experimental/tnvmc.py +1483 -0
  32. trajectree/quimb/quimb/gates.py +36 -0
  33. trajectree/quimb/quimb/gen/__init__.py +2 -0
  34. trajectree/quimb/quimb/gen/operators.py +1167 -0
  35. trajectree/quimb/quimb/gen/rand.py +713 -0
  36. trajectree/quimb/quimb/gen/states.py +479 -0
  37. trajectree/quimb/quimb/linalg/__init__.py +6 -0
  38. trajectree/quimb/quimb/linalg/approx_spectral.py +1109 -0
  39. trajectree/quimb/quimb/linalg/autoblock.py +258 -0
  40. trajectree/quimb/quimb/linalg/base_linalg.py +719 -0
  41. trajectree/quimb/quimb/linalg/mpi_launcher.py +397 -0
  42. trajectree/quimb/quimb/linalg/numpy_linalg.py +244 -0
  43. trajectree/quimb/quimb/linalg/rand_linalg.py +514 -0
  44. trajectree/quimb/quimb/linalg/scipy_linalg.py +293 -0
  45. trajectree/quimb/quimb/linalg/slepc_linalg.py +892 -0
  46. trajectree/quimb/quimb/schematic.py +1518 -0
  47. trajectree/quimb/quimb/tensor/__init__.py +401 -0
  48. trajectree/quimb/quimb/tensor/array_ops.py +610 -0
  49. trajectree/quimb/quimb/tensor/circuit.py +4824 -0
  50. trajectree/quimb/quimb/tensor/circuit_gen.py +411 -0
  51. trajectree/quimb/quimb/tensor/contraction.py +336 -0
  52. trajectree/quimb/quimb/tensor/decomp.py +1255 -0
  53. trajectree/quimb/quimb/tensor/drawing.py +1646 -0
  54. trajectree/quimb/quimb/tensor/fitting.py +385 -0
  55. trajectree/quimb/quimb/tensor/geometry.py +583 -0
  56. trajectree/quimb/quimb/tensor/interface.py +114 -0
  57. trajectree/quimb/quimb/tensor/networking.py +1058 -0
  58. trajectree/quimb/quimb/tensor/optimize.py +1818 -0
  59. trajectree/quimb/quimb/tensor/tensor_1d.py +4778 -0
  60. trajectree/quimb/quimb/tensor/tensor_1d_compress.py +1854 -0
  61. trajectree/quimb/quimb/tensor/tensor_1d_tebd.py +662 -0
  62. trajectree/quimb/quimb/tensor/tensor_2d.py +5954 -0
  63. trajectree/quimb/quimb/tensor/tensor_2d_compress.py +96 -0
  64. trajectree/quimb/quimb/tensor/tensor_2d_tebd.py +1230 -0
  65. trajectree/quimb/quimb/tensor/tensor_3d.py +2869 -0
  66. trajectree/quimb/quimb/tensor/tensor_3d_tebd.py +46 -0
  67. trajectree/quimb/quimb/tensor/tensor_approx_spectral.py +60 -0
  68. trajectree/quimb/quimb/tensor/tensor_arbgeom.py +3237 -0
  69. trajectree/quimb/quimb/tensor/tensor_arbgeom_compress.py +565 -0
  70. trajectree/quimb/quimb/tensor/tensor_arbgeom_tebd.py +1138 -0
  71. trajectree/quimb/quimb/tensor/tensor_builder.py +5411 -0
  72. trajectree/quimb/quimb/tensor/tensor_core.py +11179 -0
  73. trajectree/quimb/quimb/tensor/tensor_dmrg.py +1472 -0
  74. trajectree/quimb/quimb/tensor/tensor_mera.py +204 -0
  75. trajectree/quimb/quimb/utils.py +892 -0
  76. trajectree/quimb/tests/__init__.py +0 -0
  77. trajectree/quimb/tests/test_accel.py +501 -0
  78. trajectree/quimb/tests/test_calc.py +788 -0
  79. trajectree/quimb/tests/test_core.py +847 -0
  80. trajectree/quimb/tests/test_evo.py +565 -0
  81. trajectree/quimb/tests/test_gen/__init__.py +0 -0
  82. trajectree/quimb/tests/test_gen/test_operators.py +361 -0
  83. trajectree/quimb/tests/test_gen/test_rand.py +296 -0
  84. trajectree/quimb/tests/test_gen/test_states.py +261 -0
  85. trajectree/quimb/tests/test_linalg/__init__.py +0 -0
  86. trajectree/quimb/tests/test_linalg/test_approx_spectral.py +368 -0
  87. trajectree/quimb/tests/test_linalg/test_base_linalg.py +351 -0
  88. trajectree/quimb/tests/test_linalg/test_mpi_linalg.py +127 -0
  89. trajectree/quimb/tests/test_linalg/test_numpy_linalg.py +84 -0
  90. trajectree/quimb/tests/test_linalg/test_rand_linalg.py +134 -0
  91. trajectree/quimb/tests/test_linalg/test_slepc_linalg.py +283 -0
  92. trajectree/quimb/tests/test_tensor/__init__.py +0 -0
  93. trajectree/quimb/tests/test_tensor/test_belief_propagation/__init__.py +0 -0
  94. trajectree/quimb/tests/test_tensor/test_belief_propagation/test_d1bp.py +39 -0
  95. trajectree/quimb/tests/test_tensor/test_belief_propagation/test_d2bp.py +67 -0
  96. trajectree/quimb/tests/test_tensor/test_belief_propagation/test_hd1bp.py +64 -0
  97. trajectree/quimb/tests/test_tensor/test_belief_propagation/test_hv1bp.py +51 -0
  98. trajectree/quimb/tests/test_tensor/test_belief_propagation/test_l1bp.py +142 -0
  99. trajectree/quimb/tests/test_tensor/test_belief_propagation/test_l2bp.py +101 -0
  100. trajectree/quimb/tests/test_tensor/test_circuit.py +816 -0
  101. trajectree/quimb/tests/test_tensor/test_contract.py +67 -0
  102. trajectree/quimb/tests/test_tensor/test_decomp.py +40 -0
  103. trajectree/quimb/tests/test_tensor/test_mera.py +52 -0
  104. trajectree/quimb/tests/test_tensor/test_optimizers.py +488 -0
  105. trajectree/quimb/tests/test_tensor/test_tensor_1d.py +1171 -0
  106. trajectree/quimb/tests/test_tensor/test_tensor_2d.py +606 -0
  107. trajectree/quimb/tests/test_tensor/test_tensor_2d_tebd.py +144 -0
  108. trajectree/quimb/tests/test_tensor/test_tensor_3d.py +123 -0
  109. trajectree/quimb/tests/test_tensor/test_tensor_arbgeom.py +226 -0
  110. trajectree/quimb/tests/test_tensor/test_tensor_builder.py +441 -0
  111. trajectree/quimb/tests/test_tensor/test_tensor_core.py +2066 -0
  112. trajectree/quimb/tests/test_tensor/test_tensor_dmrg.py +388 -0
  113. trajectree/quimb/tests/test_tensor/test_tensor_spectral_approx.py +63 -0
  114. trajectree/quimb/tests/test_tensor/test_tensor_tebd.py +270 -0
  115. trajectree/quimb/tests/test_utils.py +85 -0
  116. trajectree/trajectory.py +2 -2
  117. {trajectree-0.0.0.dist-info → trajectree-0.0.1.dist-info}/METADATA +2 -2
  118. trajectree-0.0.1.dist-info/RECORD +126 -0
  119. trajectree-0.0.0.dist-info/RECORD +0 -16
  120. {trajectree-0.0.0.dist-info → trajectree-0.0.1.dist-info}/WHEEL +0 -0
  121. {trajectree-0.0.0.dist-info → trajectree-0.0.1.dist-info}/licenses/LICENSE +0 -0
  122. {trajectree-0.0.0.dist-info → trajectree-0.0.1.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,101 @@
1
+ import pytest
2
+
3
+ import quimb.tensor as qtn
4
+ from quimb.experimental.belief_propagation.l2bp import (
5
+ compress_l2bp,
6
+ contract_l2bp,
7
+ )
8
+
9
+
10
+ @pytest.mark.parametrize("dtype", ["float32", "complex64"])
11
+ def test_contract_tree_exact(dtype):
12
+ psi = qtn.TN_rand_tree(20, 3, 2, dtype=dtype)
13
+ norm2 = psi.H @ psi
14
+ info = {}
15
+ norm2_bp = contract_l2bp(psi, info=info, progbar=True)
16
+ assert info["converged"]
17
+ assert norm2_bp == pytest.approx(norm2, rel=1e-5)
18
+
19
+
20
+ @pytest.mark.parametrize("dtype", ["float32", "complex64"])
21
+ def test_contract_loopy_approx(dtype):
22
+ peps = qtn.PEPS.rand(3, 4, 3, dtype=dtype, seed=42)
23
+ norm_ex = peps.H @ peps
24
+ info = {}
25
+ norm_bp = contract_l2bp(peps, damping=0.1, info=info, progbar=True)
26
+ assert info["converged"]
27
+ assert norm_bp == pytest.approx(norm_ex, rel=0.2)
28
+
29
+
30
+ @pytest.mark.parametrize("damping", [0.0, 0.1])
31
+ @pytest.mark.parametrize("dtype", ["float32", "complex64"])
32
+ def test_compress_loopy(damping, dtype):
33
+ peps = qtn.PEPS.rand(3, 4, 3, seed=42, dtype=dtype)
34
+ # test that using the BP compression gives better fidelity than purely
35
+ # local, naive compression scheme
36
+ peps_c1 = peps.compress_all(max_bond=2)
37
+ info = {}
38
+ peps_c2 = compress_l2bp(
39
+ peps, max_bond=2, damping=damping, info=info, progbar=True
40
+ )
41
+ assert info["converged"]
42
+ fid1 = peps_c1.H @ peps_c2
43
+ fid2 = peps_c2.H @ peps_c2
44
+ assert abs(fid2) > abs(fid1)
45
+
46
+
47
+ @pytest.mark.parametrize("dtype", ["float32", "complex64"])
48
+ def test_contract_double_layer_tree_exact(dtype):
49
+ # generate a random binary tree
50
+ edges = qtn.edges_tree_rand(10, max_degree=3, seed=42)
51
+ # generate a random tree product state and operator on this tree
52
+ tps = qtn.TN_from_edges_rand(
53
+ edges, 3, phys_dim=2, site_ind_id="k{}", dtype=dtype
54
+ )
55
+ tpo = qtn.TN_from_edges_rand(
56
+ edges, 3, phys_dim=2, site_ind_id=("k{}", "b{}"), dtype=dtype
57
+ )
58
+ # join into double layer tree
59
+ tn = qtn.tensor_network_apply_op_vec(tpo, tps, contract=False)
60
+ assert tn.num_tensors == 20
61
+
62
+ norm_ex = tn.H @ tn
63
+ info = {}
64
+ norm_bp = contract_l2bp(tn, info=info, progbar=True)
65
+ assert info["converged"]
66
+
67
+ assert norm_bp == pytest.approx(norm_ex, rel=1e-6)
68
+
69
+
70
+ @pytest.mark.parametrize("dtype", ["float32", "complex64"])
71
+ @pytest.mark.parametrize("damping", [0.0, 0.1])
72
+ @pytest.mark.parametrize("update", ["parallel", "sequential"])
73
+ def test_compress_double_layer_loopy(dtype, damping, update):
74
+ peps = qtn.PEPS.rand(3, 4, bond_dim=3, seed=42, dtype=dtype)
75
+ pepo = qtn.PEPO.rand(3, 4, bond_dim=2, seed=42, dtype=dtype)
76
+
77
+ tn_lazy = qtn.tensor_network_apply_op_vec(pepo, peps, contract=False)
78
+ assert tn_lazy.num_tensors == 24
79
+
80
+ # compress using basic local compression
81
+ tn_eager = qtn.tensor_network_apply_op_vec(pepo, peps, contract=True)
82
+ assert tn_eager.num_tensors == 12
83
+ tn_eager.compress_all_(max_bond=3, canonize=False)
84
+ fid_basic = abs(tn_eager.H @ tn_lazy)
85
+
86
+ # compress using BP
87
+ info = {}
88
+ tn_bp = compress_l2bp(
89
+ tn_lazy,
90
+ max_bond=3,
91
+ damping=damping,
92
+ update=update,
93
+ info=info,
94
+ progbar=True,
95
+ )
96
+ assert info["converged"]
97
+ assert tn_bp.num_tensors == 12
98
+
99
+ # assert we did better than basic local compression
100
+ fid_bp = abs(tn_bp.H @ tn_lazy)
101
+ assert fid_bp > fid_basic