pyqrackising 9.5.9__tar.gz → 9.5.11__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.
Potentially problematic release.
This version of pyqrackising might be problematic. Click here for more details.
- {pyqrackising-9.5.9/pyqrackising.egg-info → pyqrackising-9.5.11}/PKG-INFO +1 -1
- {pyqrackising-9.5.9 → pyqrackising-9.5.11}/pyproject.toml +1 -1
- {pyqrackising-9.5.9 → pyqrackising-9.5.11}/pyqrackising/otoc.py +19 -17
- {pyqrackising-9.5.9 → pyqrackising-9.5.11/pyqrackising.egg-info}/PKG-INFO +1 -1
- {pyqrackising-9.5.9 → pyqrackising-9.5.11}/setup.py +1 -1
- {pyqrackising-9.5.9 → pyqrackising-9.5.11}/LICENSE.md +0 -0
- {pyqrackising-9.5.9 → pyqrackising-9.5.11}/MANIFEST.in +0 -0
- {pyqrackising-9.5.9 → pyqrackising-9.5.11}/README.md +0 -0
- {pyqrackising-9.5.9 → pyqrackising-9.5.11}/pyqrackising/__init__.py +0 -0
- {pyqrackising-9.5.9 → pyqrackising-9.5.11}/pyqrackising/convert_tensor_network_to_tsp.py +0 -0
- {pyqrackising-9.5.9 → pyqrackising-9.5.11}/pyqrackising/generate_tfim_samples.py +0 -0
- {pyqrackising-9.5.9 → pyqrackising-9.5.11}/pyqrackising/kernels.cl +0 -0
- {pyqrackising-9.5.9 → pyqrackising-9.5.11}/pyqrackising/maxcut_tfim.py +0 -0
- {pyqrackising-9.5.9 → pyqrackising-9.5.11}/pyqrackising/maxcut_tfim_sparse.py +0 -0
- {pyqrackising-9.5.9 → pyqrackising-9.5.11}/pyqrackising/maxcut_tfim_streaming.py +0 -0
- {pyqrackising-9.5.9 → pyqrackising-9.5.11}/pyqrackising/maxcut_tfim_util.py +0 -0
- {pyqrackising-9.5.9 → pyqrackising-9.5.11}/pyqrackising/spin_glass_solver.py +0 -0
- {pyqrackising-9.5.9 → pyqrackising-9.5.11}/pyqrackising/spin_glass_solver_sparse.py +0 -0
- {pyqrackising-9.5.9 → pyqrackising-9.5.11}/pyqrackising/spin_glass_solver_streaming.py +0 -0
- {pyqrackising-9.5.9 → pyqrackising-9.5.11}/pyqrackising/tfim_magnetization.py +0 -0
- {pyqrackising-9.5.9 → pyqrackising-9.5.11}/pyqrackising/tfim_square_magnetization.py +0 -0
- {pyqrackising-9.5.9 → pyqrackising-9.5.11}/pyqrackising/tsp.py +0 -0
- {pyqrackising-9.5.9 → pyqrackising-9.5.11}/pyqrackising/tsp_maxcut.py +0 -0
- {pyqrackising-9.5.9 → pyqrackising-9.5.11}/pyqrackising.egg-info/SOURCES.txt +0 -0
- {pyqrackising-9.5.9 → pyqrackising-9.5.11}/pyqrackising.egg-info/dependency_links.txt +0 -0
- {pyqrackising-9.5.9 → pyqrackising-9.5.11}/pyqrackising.egg-info/not-zip-safe +0 -0
- {pyqrackising-9.5.9 → pyqrackising-9.5.11}/pyqrackising.egg-info/top_level.txt +0 -0
- {pyqrackising-9.5.9 → pyqrackising-9.5.11}/setup.cfg +0 -0
|
@@ -10,7 +10,7 @@ build-backend = "setuptools.build_meta"
|
|
|
10
10
|
|
|
11
11
|
[project]
|
|
12
12
|
name = "pyqrackising"
|
|
13
|
-
version = "9.5.
|
|
13
|
+
version = "9.5.11"
|
|
14
14
|
requires-python = ">=3.8"
|
|
15
15
|
description = "Fast MAXCUT, TSP, and sampling heuristics from near-ideal transverse field Ising model (TFIM)"
|
|
16
16
|
readme = {file = "README.txt", content-type = "text/markdown"}
|
|
@@ -15,21 +15,22 @@ def get_otoc_hamming_distribution(J=-1.0, h=2.0, z=4, theta=0.0, t=5, n_qubits=6
|
|
|
15
15
|
bias[0] = 1.0
|
|
16
16
|
return bias
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
diff_x = np.empty(n_bias, dtype=np.float64)
|
|
19
19
|
tot_prob = 0
|
|
20
20
|
p = 1.0
|
|
21
21
|
for q in range(n_qubits >> 1):
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
diff_x[q] = p
|
|
23
|
+
diff_x[n_bias - (q + 1)] = p
|
|
24
24
|
tot_prob += 2 * p
|
|
25
25
|
p = math.comb(n_qubits, q + 1)
|
|
26
26
|
if n_qubits & 1:
|
|
27
|
-
|
|
27
|
+
diff_x[n_qubits >> 1] = p
|
|
28
28
|
tot_prob += p
|
|
29
|
-
|
|
29
|
+
diff_x *= n_qubits / tot_prob
|
|
30
30
|
|
|
31
31
|
signal_frac = 0.0
|
|
32
32
|
diff_z = np.zeros(n_bias, dtype=np.float64)
|
|
33
|
+
diff_z[0] = n_qubits
|
|
33
34
|
for pauli_string in pauli_strings:
|
|
34
35
|
pauli_string = list(pauli_string)
|
|
35
36
|
if len(pauli_string) != n_qubits:
|
|
@@ -44,12 +45,11 @@ def get_otoc_hamming_distribution(J=-1.0, h=2.0, z=4, theta=0.0, t=5, n_qubits=6
|
|
|
44
45
|
fwd = probability_by_hamming_weight(J, h, z, theta, t, n_qubits + 1)
|
|
45
46
|
rev = probability_by_hamming_weight(-J, -h, z, theta + np.pi, t, n_qubits + 1)
|
|
46
47
|
diff_theta = rev - fwd
|
|
47
|
-
diff_theta[0] += 1.0
|
|
48
48
|
|
|
49
49
|
phi = theta + np.pi / 2
|
|
50
50
|
fwd = probability_by_hamming_weight(-h, -J, z, phi, t, n_qubits + 1)
|
|
51
51
|
rev = probability_by_hamming_weight(h, J, z, phi - np.pi, t, n_qubits + 1)
|
|
52
|
-
diff_phi =
|
|
52
|
+
diff_phi = rev - fwd
|
|
53
53
|
|
|
54
54
|
diff_lam = (diff_theta + diff_phi) / 2
|
|
55
55
|
|
|
@@ -58,17 +58,19 @@ def get_otoc_hamming_distribution(J=-1.0, h=2.0, z=4, theta=0.0, t=5, n_qubits=6
|
|
|
58
58
|
case 'X':
|
|
59
59
|
diff_z += diff_theta
|
|
60
60
|
case 'Z':
|
|
61
|
-
|
|
61
|
+
diff_x += diff_phi
|
|
62
62
|
case 'Y':
|
|
63
|
-
diff_z +=
|
|
63
|
+
diff_z += diff_theta
|
|
64
|
+
diff_x += diff_phi
|
|
64
65
|
case _:
|
|
65
|
-
|
|
66
|
+
pass
|
|
66
67
|
|
|
67
68
|
# Normalize:
|
|
68
69
|
diff_z /= diff_z.sum()
|
|
70
|
+
diff_x /= diff_x.sum()
|
|
69
71
|
|
|
70
72
|
signal_frac = 2 ** signal_frac
|
|
71
|
-
diff_z = signal_frac * diff_z + (1 - signal_frac) *
|
|
73
|
+
diff_z = signal_frac * diff_z + (1 - signal_frac) * diff_x
|
|
72
74
|
|
|
73
75
|
# Normalize:
|
|
74
76
|
diff_z /= diff_z.sum()
|
|
@@ -139,7 +141,7 @@ def take_sample(n_qubits, sample, m, inv_dist):
|
|
|
139
141
|
return sample
|
|
140
142
|
|
|
141
143
|
|
|
142
|
-
def get_willow_inv_dist(butterfly_idx_x, butterfly_idx_z, n_qubits, row_len, col_len):
|
|
144
|
+
def get_willow_inv_dist(butterfly_idx_x, butterfly_idx_z, n_qubits, row_len, col_len, t):
|
|
143
145
|
inv_dist = np.zeros(n_qubits, dtype=np.float64)
|
|
144
146
|
for idx in butterfly_idx_x:
|
|
145
147
|
b_row, b_col = divmod(idx, row_len)
|
|
@@ -151,12 +153,12 @@ def get_willow_inv_dist(butterfly_idx_x, butterfly_idx_z, n_qubits, row_len, col
|
|
|
151
153
|
for q in range(n_qubits):
|
|
152
154
|
q_row, q_col = divmod(q, row_len)
|
|
153
155
|
inv_dist[q] -= abs(q_row - b_row) + abs(q_col - b_col)
|
|
154
|
-
inv_dist = 2 ** inv_dist
|
|
156
|
+
inv_dist = 2 ** (inv_dist / t)
|
|
155
157
|
|
|
156
158
|
return inv_dist
|
|
157
159
|
|
|
158
160
|
|
|
159
|
-
def get_inv_dist(butterfly_idx_x, butterfly_idx_z, n_qubits, row_len, col_len):
|
|
161
|
+
def get_inv_dist(butterfly_idx_x, butterfly_idx_z, n_qubits, row_len, col_len, t):
|
|
160
162
|
inv_dist = np.zeros(n_qubits, dtype=np.float64)
|
|
161
163
|
half_row = row_len >> 1
|
|
162
164
|
half_col = col_len >> 1
|
|
@@ -182,7 +184,7 @@ def get_inv_dist(butterfly_idx_x, butterfly_idx_z, n_qubits, row_len, col_len):
|
|
|
182
184
|
if col_d > half_col:
|
|
183
185
|
col_d = col_len - col_d
|
|
184
186
|
inv_dist[q] -= row_d + col_d
|
|
185
|
-
inv_dist = 2 ** inv_dist
|
|
187
|
+
inv_dist = 2 ** (inv_dist / t)
|
|
186
188
|
|
|
187
189
|
return inv_dist
|
|
188
190
|
|
|
@@ -198,9 +200,9 @@ def generate_otoc_samples(J=-1.0, h=2.0, z=4, theta=0.0, t=5, n_qubits=65, pauli
|
|
|
198
200
|
butterfly_idx_x = find_all_str_occurrences(pauli_string, 'X')
|
|
199
201
|
butterfly_idx_z = find_all_str_occurrences(pauli_string, 'Z')
|
|
200
202
|
if is_orbifold:
|
|
201
|
-
inv_dist += get_inv_dist(butterfly_idx_x, butterfly_idx_z, n_qubits, row_len, col_len)
|
|
203
|
+
inv_dist += get_inv_dist(butterfly_idx_x, butterfly_idx_z, n_qubits, row_len, col_len, t)
|
|
202
204
|
else:
|
|
203
|
-
inv_dist += get_willow_inv_dist(butterfly_idx_x, butterfly_idx_z, n_qubits, row_len, col_len)
|
|
205
|
+
inv_dist += get_willow_inv_dist(butterfly_idx_x, butterfly_idx_z, n_qubits, row_len, col_len, t)
|
|
204
206
|
inv_dist /= 2.0
|
|
205
207
|
|
|
206
208
|
qubit_pows = [1 << q for q in range(n_qubits)]
|
|
@@ -7,7 +7,7 @@ with open(README_PATH) as readme_file:
|
|
|
7
7
|
|
|
8
8
|
setup(
|
|
9
9
|
name='pyqrackising',
|
|
10
|
-
version='9.5.
|
|
10
|
+
version='9.5.11',
|
|
11
11
|
author='Dan Strano',
|
|
12
12
|
author_email='stranoj@gmail.com',
|
|
13
13
|
description='Fast MAXCUT, TSP, and sampling heuristics from near-ideal transverse field Ising model (TFIM)',
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|