Trajectree 0.0.1__py3-none-any.whl → 0.0.3__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.
- trajectree/__init__.py +0 -3
- trajectree/fock_optics/devices.py +1 -1
- trajectree/fock_optics/light_sources.py +2 -2
- trajectree/fock_optics/measurement.py +9 -9
- trajectree/fock_optics/outputs.py +10 -6
- trajectree/fock_optics/utils.py +9 -6
- trajectree/sequence/swap.py +5 -4
- trajectree/trajectory.py +5 -4
- {trajectree-0.0.1.dist-info → trajectree-0.0.3.dist-info}/METADATA +2 -3
- trajectree-0.0.3.dist-info/RECORD +16 -0
- trajectree/quimb/docs/_pygments/_pygments_dark.py +0 -118
- trajectree/quimb/docs/_pygments/_pygments_light.py +0 -118
- trajectree/quimb/docs/conf.py +0 -158
- trajectree/quimb/docs/examples/ex_mpi_expm_evo.py +0 -62
- trajectree/quimb/quimb/__init__.py +0 -507
- trajectree/quimb/quimb/calc.py +0 -1491
- trajectree/quimb/quimb/core.py +0 -2279
- trajectree/quimb/quimb/evo.py +0 -712
- trajectree/quimb/quimb/experimental/__init__.py +0 -0
- trajectree/quimb/quimb/experimental/autojittn.py +0 -129
- trajectree/quimb/quimb/experimental/belief_propagation/__init__.py +0 -109
- trajectree/quimb/quimb/experimental/belief_propagation/bp_common.py +0 -397
- trajectree/quimb/quimb/experimental/belief_propagation/d1bp.py +0 -316
- trajectree/quimb/quimb/experimental/belief_propagation/d2bp.py +0 -653
- trajectree/quimb/quimb/experimental/belief_propagation/hd1bp.py +0 -571
- trajectree/quimb/quimb/experimental/belief_propagation/hv1bp.py +0 -775
- trajectree/quimb/quimb/experimental/belief_propagation/l1bp.py +0 -316
- trajectree/quimb/quimb/experimental/belief_propagation/l2bp.py +0 -537
- trajectree/quimb/quimb/experimental/belief_propagation/regions.py +0 -194
- trajectree/quimb/quimb/experimental/cluster_update.py +0 -286
- trajectree/quimb/quimb/experimental/merabuilder.py +0 -865
- trajectree/quimb/quimb/experimental/operatorbuilder/__init__.py +0 -15
- trajectree/quimb/quimb/experimental/operatorbuilder/operatorbuilder.py +0 -1631
- trajectree/quimb/quimb/experimental/schematic.py +0 -7
- trajectree/quimb/quimb/experimental/tn_marginals.py +0 -130
- trajectree/quimb/quimb/experimental/tnvmc.py +0 -1483
- trajectree/quimb/quimb/gates.py +0 -36
- trajectree/quimb/quimb/gen/__init__.py +0 -2
- trajectree/quimb/quimb/gen/operators.py +0 -1167
- trajectree/quimb/quimb/gen/rand.py +0 -713
- trajectree/quimb/quimb/gen/states.py +0 -479
- trajectree/quimb/quimb/linalg/__init__.py +0 -6
- trajectree/quimb/quimb/linalg/approx_spectral.py +0 -1109
- trajectree/quimb/quimb/linalg/autoblock.py +0 -258
- trajectree/quimb/quimb/linalg/base_linalg.py +0 -719
- trajectree/quimb/quimb/linalg/mpi_launcher.py +0 -397
- trajectree/quimb/quimb/linalg/numpy_linalg.py +0 -244
- trajectree/quimb/quimb/linalg/rand_linalg.py +0 -514
- trajectree/quimb/quimb/linalg/scipy_linalg.py +0 -293
- trajectree/quimb/quimb/linalg/slepc_linalg.py +0 -892
- trajectree/quimb/quimb/schematic.py +0 -1518
- trajectree/quimb/quimb/tensor/__init__.py +0 -401
- trajectree/quimb/quimb/tensor/array_ops.py +0 -610
- trajectree/quimb/quimb/tensor/circuit.py +0 -4824
- trajectree/quimb/quimb/tensor/circuit_gen.py +0 -411
- trajectree/quimb/quimb/tensor/contraction.py +0 -336
- trajectree/quimb/quimb/tensor/decomp.py +0 -1255
- trajectree/quimb/quimb/tensor/drawing.py +0 -1646
- trajectree/quimb/quimb/tensor/fitting.py +0 -385
- trajectree/quimb/quimb/tensor/geometry.py +0 -583
- trajectree/quimb/quimb/tensor/interface.py +0 -114
- trajectree/quimb/quimb/tensor/networking.py +0 -1058
- trajectree/quimb/quimb/tensor/optimize.py +0 -1818
- trajectree/quimb/quimb/tensor/tensor_1d.py +0 -4778
- trajectree/quimb/quimb/tensor/tensor_1d_compress.py +0 -1854
- trajectree/quimb/quimb/tensor/tensor_1d_tebd.py +0 -662
- trajectree/quimb/quimb/tensor/tensor_2d.py +0 -5954
- trajectree/quimb/quimb/tensor/tensor_2d_compress.py +0 -96
- trajectree/quimb/quimb/tensor/tensor_2d_tebd.py +0 -1230
- trajectree/quimb/quimb/tensor/tensor_3d.py +0 -2869
- trajectree/quimb/quimb/tensor/tensor_3d_tebd.py +0 -46
- trajectree/quimb/quimb/tensor/tensor_approx_spectral.py +0 -60
- trajectree/quimb/quimb/tensor/tensor_arbgeom.py +0 -3237
- trajectree/quimb/quimb/tensor/tensor_arbgeom_compress.py +0 -565
- trajectree/quimb/quimb/tensor/tensor_arbgeom_tebd.py +0 -1138
- trajectree/quimb/quimb/tensor/tensor_builder.py +0 -5411
- trajectree/quimb/quimb/tensor/tensor_core.py +0 -11179
- trajectree/quimb/quimb/tensor/tensor_dmrg.py +0 -1472
- trajectree/quimb/quimb/tensor/tensor_mera.py +0 -204
- trajectree/quimb/quimb/utils.py +0 -892
- trajectree/quimb/tests/__init__.py +0 -0
- trajectree/quimb/tests/test_accel.py +0 -501
- trajectree/quimb/tests/test_calc.py +0 -788
- trajectree/quimb/tests/test_core.py +0 -847
- trajectree/quimb/tests/test_evo.py +0 -565
- trajectree/quimb/tests/test_gen/__init__.py +0 -0
- trajectree/quimb/tests/test_gen/test_operators.py +0 -361
- trajectree/quimb/tests/test_gen/test_rand.py +0 -296
- trajectree/quimb/tests/test_gen/test_states.py +0 -261
- trajectree/quimb/tests/test_linalg/__init__.py +0 -0
- trajectree/quimb/tests/test_linalg/test_approx_spectral.py +0 -368
- trajectree/quimb/tests/test_linalg/test_base_linalg.py +0 -351
- trajectree/quimb/tests/test_linalg/test_mpi_linalg.py +0 -127
- trajectree/quimb/tests/test_linalg/test_numpy_linalg.py +0 -84
- trajectree/quimb/tests/test_linalg/test_rand_linalg.py +0 -134
- trajectree/quimb/tests/test_linalg/test_slepc_linalg.py +0 -283
- trajectree/quimb/tests/test_tensor/__init__.py +0 -0
- trajectree/quimb/tests/test_tensor/test_belief_propagation/__init__.py +0 -0
- trajectree/quimb/tests/test_tensor/test_belief_propagation/test_d1bp.py +0 -39
- trajectree/quimb/tests/test_tensor/test_belief_propagation/test_d2bp.py +0 -67
- trajectree/quimb/tests/test_tensor/test_belief_propagation/test_hd1bp.py +0 -64
- trajectree/quimb/tests/test_tensor/test_belief_propagation/test_hv1bp.py +0 -51
- trajectree/quimb/tests/test_tensor/test_belief_propagation/test_l1bp.py +0 -142
- trajectree/quimb/tests/test_tensor/test_belief_propagation/test_l2bp.py +0 -101
- trajectree/quimb/tests/test_tensor/test_circuit.py +0 -816
- trajectree/quimb/tests/test_tensor/test_contract.py +0 -67
- trajectree/quimb/tests/test_tensor/test_decomp.py +0 -40
- trajectree/quimb/tests/test_tensor/test_mera.py +0 -52
- trajectree/quimb/tests/test_tensor/test_optimizers.py +0 -488
- trajectree/quimb/tests/test_tensor/test_tensor_1d.py +0 -1171
- trajectree/quimb/tests/test_tensor/test_tensor_2d.py +0 -606
- trajectree/quimb/tests/test_tensor/test_tensor_2d_tebd.py +0 -144
- trajectree/quimb/tests/test_tensor/test_tensor_3d.py +0 -123
- trajectree/quimb/tests/test_tensor/test_tensor_arbgeom.py +0 -226
- trajectree/quimb/tests/test_tensor/test_tensor_builder.py +0 -441
- trajectree/quimb/tests/test_tensor/test_tensor_core.py +0 -2066
- trajectree/quimb/tests/test_tensor/test_tensor_dmrg.py +0 -388
- trajectree/quimb/tests/test_tensor/test_tensor_spectral_approx.py +0 -63
- trajectree/quimb/tests/test_tensor/test_tensor_tebd.py +0 -270
- trajectree/quimb/tests/test_utils.py +0 -85
- trajectree-0.0.1.dist-info/RECORD +0 -126
- {trajectree-0.0.1.dist-info → trajectree-0.0.3.dist-info}/WHEEL +0 -0
- {trajectree-0.0.1.dist-info → trajectree-0.0.3.dist-info}/licenses/LICENSE +0 -0
- {trajectree-0.0.1.dist-info → trajectree-0.0.3.dist-info}/top_level.txt +0 -0
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
"""Helper functions for computing marginals of classical partition functions /
|
|
2
|
-
SAT problems.
|
|
3
|
-
"""
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
def compute_all_marginals_via_slicing(
|
|
7
|
-
tn,
|
|
8
|
-
output_inds,
|
|
9
|
-
optimize="auto-hq",
|
|
10
|
-
**contract_kwargs,
|
|
11
|
-
):
|
|
12
|
-
|
|
13
|
-
tree0 = tn.contraction_tree(output_inds=(), optimize=optimize)
|
|
14
|
-
arrays = tn.arrays
|
|
15
|
-
|
|
16
|
-
w = {}
|
|
17
|
-
symbol_map = tn.get_symbol_map()
|
|
18
|
-
|
|
19
|
-
for ix in output_inds:
|
|
20
|
-
|
|
21
|
-
# convert quimb index to cotengra unicode symbol
|
|
22
|
-
symbol = symbol_map[ix]
|
|
23
|
-
symbol
|
|
24
|
-
|
|
25
|
-
if symbol not in tree0.sliced_inds:
|
|
26
|
-
tree_v = tree0.remove_ind(symbol)
|
|
27
|
-
else:
|
|
28
|
-
# already sliced
|
|
29
|
-
tree_v = tree0
|
|
30
|
-
|
|
31
|
-
overall_exponent = None
|
|
32
|
-
|
|
33
|
-
# initialize each value of this index
|
|
34
|
-
wv = [0.0 for i in range(tree_v.size_dict[symbol])]
|
|
35
|
-
|
|
36
|
-
for s in range(tree_v.nslices):
|
|
37
|
-
|
|
38
|
-
# contract the slice
|
|
39
|
-
p, exponent = tree_v.contract_slice(
|
|
40
|
-
arrays, s, **contract_kwargs, strip_exponent=True
|
|
41
|
-
)
|
|
42
|
-
|
|
43
|
-
if overall_exponent is None:
|
|
44
|
-
# set overall exponent from first slice...
|
|
45
|
-
overall_exponent = exponent
|
|
46
|
-
|
|
47
|
-
# ... correct subsequent slices relative to first
|
|
48
|
-
rel_exponent = exponent - overall_exponent
|
|
49
|
-
|
|
50
|
-
# what index combination is this slice
|
|
51
|
-
key = tree_v.slice_key(s)
|
|
52
|
-
|
|
53
|
-
# add result to correct index position
|
|
54
|
-
wv[key[symbol]] += p * 10 ** rel_exponent
|
|
55
|
-
|
|
56
|
-
w[ix] = (wv, overall_exponent)
|
|
57
|
-
|
|
58
|
-
return w
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
def compute_all_marginals_via_slicing_shared(
|
|
62
|
-
tn,
|
|
63
|
-
output_inds,
|
|
64
|
-
optimize="auto-hq",
|
|
65
|
-
**contract_kwargs,
|
|
66
|
-
):
|
|
67
|
-
from autoray import do, lazy
|
|
68
|
-
|
|
69
|
-
tnc = tn.copy()
|
|
70
|
-
|
|
71
|
-
with lazy.shared_intermediates():
|
|
72
|
-
tnc.apply_to_arrays(lazy.array)
|
|
73
|
-
w = compute_all_marginals_via_slicing(
|
|
74
|
-
tnc, output_inds=output_inds, optimize=optimize, **contract_kwargs
|
|
75
|
-
)
|
|
76
|
-
|
|
77
|
-
# stack into a single lazy array
|
|
78
|
-
return do(
|
|
79
|
-
'stack', tuple(
|
|
80
|
-
do('stack', (w[ix][0][0], w[ix][0][1], w[ix][1]))
|
|
81
|
-
for ix in output_inds
|
|
82
|
-
)
|
|
83
|
-
)
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
def compute_all_marginals_via_torch_autodiff(
|
|
87
|
-
tn,
|
|
88
|
-
output_inds,
|
|
89
|
-
optimize="auto-hq",
|
|
90
|
-
equalize_norms=1.0,
|
|
91
|
-
contraction_width_error_threshold=float("inf"),
|
|
92
|
-
):
|
|
93
|
-
import torch
|
|
94
|
-
from autoray import to_backend_dtype
|
|
95
|
-
|
|
96
|
-
tnc = tn.copy()
|
|
97
|
-
if equalize_norms:
|
|
98
|
-
tnc.equalize_norms_(equalize_norms)
|
|
99
|
-
|
|
100
|
-
tnc.apply_to_arrays(torch.tensor)
|
|
101
|
-
|
|
102
|
-
variables = {}
|
|
103
|
-
for ix in output_inds:
|
|
104
|
-
# create a flat input tensor for each desired output
|
|
105
|
-
data = torch.ones(
|
|
106
|
-
tn.ind_size(ix),
|
|
107
|
-
dtype=to_backend_dtype(tnc.dtype, "torch"),
|
|
108
|
-
requires_grad=True,
|
|
109
|
-
)
|
|
110
|
-
variables[ix] = data
|
|
111
|
-
# multiply it into any connected tensor, so we don't change geometry
|
|
112
|
-
t = next(iter(tnc._inds_get(ix)))
|
|
113
|
-
t.multiply_index_diagonal_(ix, data)
|
|
114
|
-
|
|
115
|
-
# find the contraction tree
|
|
116
|
-
tree = tnc.contraction_tree(output_inds=(), optimize=optimize)
|
|
117
|
-
|
|
118
|
-
if tree.contraction_width() > contraction_width_error_threshold:
|
|
119
|
-
raise ValueError("Contraction width is above threshold.")
|
|
120
|
-
|
|
121
|
-
# perform the forward contraction,
|
|
122
|
-
# compute in log10, mantissa should always be 1
|
|
123
|
-
_, exponent = tree.contract(tnc.arrays, strip_exponent=True)
|
|
124
|
-
exponent.backward()
|
|
125
|
-
|
|
126
|
-
# factor is just to correct for log derivative
|
|
127
|
-
return {
|
|
128
|
-
ix: 2.302585092994046 * data.grad.detach().cpu().numpy()
|
|
129
|
-
for ix, data in variables.items()
|
|
130
|
-
}
|