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.

Files changed (28) hide show
  1. {pyqrackising-9.5.9/pyqrackising.egg-info → pyqrackising-9.5.11}/PKG-INFO +1 -1
  2. {pyqrackising-9.5.9 → pyqrackising-9.5.11}/pyproject.toml +1 -1
  3. {pyqrackising-9.5.9 → pyqrackising-9.5.11}/pyqrackising/otoc.py +19 -17
  4. {pyqrackising-9.5.9 → pyqrackising-9.5.11/pyqrackising.egg-info}/PKG-INFO +1 -1
  5. {pyqrackising-9.5.9 → pyqrackising-9.5.11}/setup.py +1 -1
  6. {pyqrackising-9.5.9 → pyqrackising-9.5.11}/LICENSE.md +0 -0
  7. {pyqrackising-9.5.9 → pyqrackising-9.5.11}/MANIFEST.in +0 -0
  8. {pyqrackising-9.5.9 → pyqrackising-9.5.11}/README.md +0 -0
  9. {pyqrackising-9.5.9 → pyqrackising-9.5.11}/pyqrackising/__init__.py +0 -0
  10. {pyqrackising-9.5.9 → pyqrackising-9.5.11}/pyqrackising/convert_tensor_network_to_tsp.py +0 -0
  11. {pyqrackising-9.5.9 → pyqrackising-9.5.11}/pyqrackising/generate_tfim_samples.py +0 -0
  12. {pyqrackising-9.5.9 → pyqrackising-9.5.11}/pyqrackising/kernels.cl +0 -0
  13. {pyqrackising-9.5.9 → pyqrackising-9.5.11}/pyqrackising/maxcut_tfim.py +0 -0
  14. {pyqrackising-9.5.9 → pyqrackising-9.5.11}/pyqrackising/maxcut_tfim_sparse.py +0 -0
  15. {pyqrackising-9.5.9 → pyqrackising-9.5.11}/pyqrackising/maxcut_tfim_streaming.py +0 -0
  16. {pyqrackising-9.5.9 → pyqrackising-9.5.11}/pyqrackising/maxcut_tfim_util.py +0 -0
  17. {pyqrackising-9.5.9 → pyqrackising-9.5.11}/pyqrackising/spin_glass_solver.py +0 -0
  18. {pyqrackising-9.5.9 → pyqrackising-9.5.11}/pyqrackising/spin_glass_solver_sparse.py +0 -0
  19. {pyqrackising-9.5.9 → pyqrackising-9.5.11}/pyqrackising/spin_glass_solver_streaming.py +0 -0
  20. {pyqrackising-9.5.9 → pyqrackising-9.5.11}/pyqrackising/tfim_magnetization.py +0 -0
  21. {pyqrackising-9.5.9 → pyqrackising-9.5.11}/pyqrackising/tfim_square_magnetization.py +0 -0
  22. {pyqrackising-9.5.9 → pyqrackising-9.5.11}/pyqrackising/tsp.py +0 -0
  23. {pyqrackising-9.5.9 → pyqrackising-9.5.11}/pyqrackising/tsp_maxcut.py +0 -0
  24. {pyqrackising-9.5.9 → pyqrackising-9.5.11}/pyqrackising.egg-info/SOURCES.txt +0 -0
  25. {pyqrackising-9.5.9 → pyqrackising-9.5.11}/pyqrackising.egg-info/dependency_links.txt +0 -0
  26. {pyqrackising-9.5.9 → pyqrackising-9.5.11}/pyqrackising.egg-info/not-zip-safe +0 -0
  27. {pyqrackising-9.5.9 → pyqrackising-9.5.11}/pyqrackising.egg-info/top_level.txt +0 -0
  28. {pyqrackising-9.5.9 → pyqrackising-9.5.11}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyqrackising
3
- Version: 9.5.9
3
+ Version: 9.5.11
4
4
  Summary: Fast MAXCUT, TSP, and sampling heuristics from near-ideal transverse field Ising model (TFIM)
5
5
  Home-page: https://github.com/vm6502q/PyQrackIsing
6
6
  Author: Dan Strano
@@ -10,7 +10,7 @@ build-backend = "setuptools.build_meta"
10
10
 
11
11
  [project]
12
12
  name = "pyqrackising"
13
- version = "9.5.9"
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
- max_entropy = np.empty(n_bias, dtype=np.float64)
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
- max_entropy[q] = p
23
- max_entropy[n_bias - (q + 1)] = p
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
- max_entropy[n_qubits >> 1] = p
27
+ diff_x[n_qubits >> 1] = p
28
28
  tot_prob += p
29
- max_entropy /= tot_prob
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 = (rev - fwd) + max_entropy
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
- diff_z += diff_phi
61
+ diff_x += diff_phi
62
62
  case 'Y':
63
- diff_z += diff_lam
63
+ diff_z += diff_theta
64
+ diff_x += diff_phi
64
65
  case _:
65
- diff_z[0] += 1.0
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) * max_entropy
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)]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyqrackising
3
- Version: 9.5.9
3
+ Version: 9.5.11
4
4
  Summary: Fast MAXCUT, TSP, and sampling heuristics from near-ideal transverse field Ising model (TFIM)
5
5
  Home-page: https://github.com/vm6502q/PyQrackIsing
6
6
  Author: Dan Strano
@@ -7,7 +7,7 @@ with open(README_PATH) as readme_file:
7
7
 
8
8
  setup(
9
9
  name='pyqrackising',
10
- version='9.5.9',
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