superquantx 0.1.0__py3-none-any.whl → 0.1.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.
- superquantx/__init__.py +24 -12
- superquantx/algorithms/__init__.py +1 -1
- superquantx/algorithms/base_algorithm.py +36 -36
- superquantx/algorithms/hybrid_classifier.py +22 -22
- superquantx/algorithms/qaoa.py +29 -28
- superquantx/algorithms/quantum_agents.py +57 -56
- superquantx/algorithms/quantum_kmeans.py +17 -17
- superquantx/algorithms/quantum_nn.py +18 -18
- superquantx/algorithms/quantum_pca.py +26 -26
- superquantx/algorithms/quantum_svm.py +26 -25
- superquantx/algorithms/vqe.py +40 -39
- superquantx/algorithms.py +56 -55
- superquantx/backends/__init__.py +12 -12
- superquantx/backends/base_backend.py +25 -24
- superquantx/backends/braket_backend.py +21 -21
- superquantx/backends/cirq_backend.py +26 -26
- superquantx/backends/ocean_backend.py +38 -38
- superquantx/backends/pennylane_backend.py +12 -11
- superquantx/backends/qiskit_backend.py +12 -12
- superquantx/backends/simulator_backend.py +31 -17
- superquantx/backends/tket_backend.py +23 -23
- superquantx/circuits.py +25 -25
- superquantx/cli/commands.py +6 -7
- superquantx/cli/main.py +5 -6
- superquantx/client.py +42 -42
- superquantx/config.py +14 -14
- superquantx/datasets/__init__.py +58 -0
- superquantx/datasets/molecular.py +307 -0
- superquantx/datasets/preprocessing.py +279 -0
- superquantx/datasets/quantum_datasets.py +277 -0
- superquantx/datasets/synthetic.py +300 -0
- superquantx/exceptions.py +29 -29
- superquantx/gates.py +26 -26
- superquantx/logging_config.py +29 -29
- superquantx/measurements.py +53 -54
- superquantx/ml.py +51 -52
- superquantx/noise.py +49 -49
- superquantx/utils/benchmarking.py +41 -36
- superquantx/utils/classical_utils.py +32 -32
- superquantx/utils/feature_mapping.py +40 -35
- superquantx/utils/optimization.py +28 -26
- superquantx/utils/quantum_utils.py +47 -48
- superquantx/utils/visualization.py +49 -49
- superquantx/version.py +3 -3
- {superquantx-0.1.0.dist-info → superquantx-0.1.1.dist-info}/METADATA +18 -16
- superquantx-0.1.1.dist-info/RECORD +51 -0
- superquantx-0.1.1.dist-info/licenses/LICENSE +180 -0
- superquantx-0.1.0.dist-info/RECORD +0 -46
- superquantx-0.1.0.dist-info/licenses/LICENSE +0 -21
- {superquantx-0.1.0.dist-info → superquantx-0.1.1.dist-info}/WHEEL +0 -0
- {superquantx-0.1.0.dist-info → superquantx-0.1.1.dist-info}/entry_points.txt +0 -0
@@ -5,7 +5,6 @@ including fidelity calculations, quantum distances, and entanglement measures.
|
|
5
5
|
"""
|
6
6
|
|
7
7
|
import warnings
|
8
|
-
from typing import Tuple
|
9
8
|
|
10
9
|
import numpy as np
|
11
10
|
from scipy.linalg import sqrtm
|
@@ -17,18 +16,18 @@ def fidelity(
|
|
17
16
|
validate: bool = True
|
18
17
|
) -> float:
|
19
18
|
"""Calculate quantum fidelity between two quantum states.
|
20
|
-
|
19
|
+
|
21
20
|
For pure states |ψ₁⟩ and |ψ₂⟩:
|
22
21
|
F(ψ₁, ψ₂) = |⟨ψ₁|ψ₂⟩|²
|
23
|
-
|
22
|
+
|
24
23
|
For mixed states ρ₁ and ρ₂:
|
25
24
|
F(ρ₁, ρ₂) = Tr(√(√ρ₁ ρ₂ √ρ₁))²
|
26
|
-
|
25
|
+
|
27
26
|
Args:
|
28
27
|
state1: First quantum state (vector or density matrix)
|
29
28
|
state2: Second quantum state (vector or density matrix)
|
30
29
|
validate: Whether to validate inputs
|
31
|
-
|
30
|
+
|
32
31
|
Returns:
|
33
32
|
Fidelity value between 0 and 1
|
34
33
|
|
@@ -79,15 +78,15 @@ def trace_distance(
|
|
79
78
|
validate: bool = True
|
80
79
|
) -> float:
|
81
80
|
"""Calculate trace distance between two quantum states.
|
82
|
-
|
81
|
+
|
83
82
|
For quantum states ρ₁ and ρ₂:
|
84
83
|
D(ρ₁, ρ₂) = (1/2) * Tr(|ρ₁ - ρ₂|)
|
85
|
-
|
84
|
+
|
86
85
|
Args:
|
87
86
|
state1: First quantum state
|
88
|
-
state2: Second quantum state
|
87
|
+
state2: Second quantum state
|
89
88
|
validate: Whether to validate inputs
|
90
|
-
|
89
|
+
|
91
90
|
Returns:
|
92
91
|
Trace distance between 0 and 1
|
93
92
|
|
@@ -113,20 +112,20 @@ def trace_distance(
|
|
113
112
|
|
114
113
|
def quantum_mutual_information(
|
115
114
|
joint_state: np.ndarray,
|
116
|
-
subsystem_dims:
|
115
|
+
subsystem_dims: tuple[int, int],
|
117
116
|
validate: bool = True
|
118
117
|
) -> float:
|
119
118
|
"""Calculate quantum mutual information between two subsystems.
|
120
|
-
|
119
|
+
|
121
120
|
I(A:B) = S(ρₐ) + S(ρᵦ) - S(ρₐᵦ)
|
122
|
-
|
121
|
+
|
123
122
|
where S(ρ) is the von Neumann entropy.
|
124
|
-
|
123
|
+
|
125
124
|
Args:
|
126
125
|
joint_state: Joint quantum state of both subsystems
|
127
126
|
subsystem_dims: Dimensions of subsystems (dim_A, dim_B)
|
128
127
|
validate: Whether to validate inputs
|
129
|
-
|
128
|
+
|
130
129
|
Returns:
|
131
130
|
Quantum mutual information
|
132
131
|
|
@@ -154,18 +153,18 @@ def quantum_mutual_information(
|
|
154
153
|
|
155
154
|
def entanglement_measure(
|
156
155
|
state: np.ndarray,
|
157
|
-
subsystem_dims:
|
156
|
+
subsystem_dims: tuple[int, int],
|
158
157
|
measure: str = 'negativity',
|
159
158
|
validate: bool = True
|
160
159
|
) -> float:
|
161
160
|
"""Calculate entanglement measure for a bipartite quantum state.
|
162
|
-
|
161
|
+
|
163
162
|
Args:
|
164
163
|
state: Quantum state (pure or mixed)
|
165
164
|
subsystem_dims: Dimensions of subsystems (dim_A, dim_B)
|
166
165
|
measure: Type of measure ('negativity', 'concurrence', 'entropy')
|
167
166
|
validate: Whether to validate inputs
|
168
|
-
|
167
|
+
|
169
168
|
Returns:
|
170
169
|
Entanglement measure value
|
171
170
|
|
@@ -185,19 +184,19 @@ def entanglement_measure(
|
|
185
184
|
|
186
185
|
def negativity(
|
187
186
|
state: np.ndarray,
|
188
|
-
subsystem_dims:
|
187
|
+
subsystem_dims: tuple[int, int]
|
189
188
|
) -> float:
|
190
189
|
"""Calculate negativity entanglement measure.
|
191
|
-
|
190
|
+
|
192
191
|
Negativity is defined as:
|
193
192
|
N(ρ) = (||ρᵀᴬ||₁ - 1) / 2
|
194
|
-
|
193
|
+
|
195
194
|
where ρᵀᴬ is the partial transpose with respect to subsystem A.
|
196
|
-
|
195
|
+
|
197
196
|
Args:
|
198
197
|
state: Quantum state
|
199
198
|
subsystem_dims: Dimensions of subsystems
|
200
|
-
|
199
|
+
|
201
200
|
Returns:
|
202
201
|
Negativity value
|
203
202
|
|
@@ -216,16 +215,16 @@ def negativity(
|
|
216
215
|
|
217
216
|
def concurrence(
|
218
217
|
state: np.ndarray,
|
219
|
-
subsystem_dims:
|
218
|
+
subsystem_dims: tuple[int, int]
|
220
219
|
) -> float:
|
221
220
|
"""Calculate concurrence for two-qubit systems.
|
222
|
-
|
221
|
+
|
223
222
|
Note: This implementation is only valid for 2×2 systems.
|
224
|
-
|
223
|
+
|
225
224
|
Args:
|
226
225
|
state: Two-qubit quantum state
|
227
226
|
subsystem_dims: Should be (2, 2) for two qubits
|
228
|
-
|
227
|
+
|
229
228
|
Returns:
|
230
229
|
Concurrence value
|
231
230
|
|
@@ -259,14 +258,14 @@ def concurrence(
|
|
259
258
|
|
260
259
|
def entanglement_entropy(
|
261
260
|
state: np.ndarray,
|
262
|
-
subsystem_dims:
|
261
|
+
subsystem_dims: tuple[int, int]
|
263
262
|
) -> float:
|
264
263
|
"""Calculate entanglement entropy (von Neumann entropy of reduced state).
|
265
|
-
|
264
|
+
|
266
265
|
Args:
|
267
266
|
state: Quantum state
|
268
267
|
subsystem_dims: Dimensions of subsystems
|
269
|
-
|
268
|
+
|
270
269
|
Returns:
|
271
270
|
Entanglement entropy
|
272
271
|
|
@@ -281,12 +280,12 @@ def entanglement_entropy(
|
|
281
280
|
|
282
281
|
def von_neumann_entropy(rho: np.ndarray) -> float:
|
283
282
|
"""Calculate von Neumann entropy of a quantum state.
|
284
|
-
|
283
|
+
|
285
284
|
S(ρ) = -Tr(ρ log ρ)
|
286
|
-
|
285
|
+
|
287
286
|
Args:
|
288
287
|
rho: Density matrix
|
289
|
-
|
288
|
+
|
290
289
|
Returns:
|
291
290
|
von Neumann entropy
|
292
291
|
|
@@ -304,16 +303,16 @@ def von_neumann_entropy(rho: np.ndarray) -> float:
|
|
304
303
|
|
305
304
|
def partial_trace(
|
306
305
|
rho: np.ndarray,
|
307
|
-
subsystem_dims:
|
306
|
+
subsystem_dims: tuple[int, int],
|
308
307
|
trace_out: int
|
309
308
|
) -> np.ndarray:
|
310
309
|
"""Compute partial trace of a density matrix.
|
311
|
-
|
310
|
+
|
312
311
|
Args:
|
313
312
|
rho: Density matrix
|
314
313
|
subsystem_dims: Dimensions of subsystems (dim_A, dim_B)
|
315
314
|
trace_out: Which subsystem to trace out (0 for A, 1 for B)
|
316
|
-
|
315
|
+
|
317
316
|
Returns:
|
318
317
|
Reduced density matrix
|
319
318
|
|
@@ -345,16 +344,16 @@ def partial_trace(
|
|
345
344
|
|
346
345
|
def partial_transpose(
|
347
346
|
rho: np.ndarray,
|
348
|
-
subsystem_dims:
|
347
|
+
subsystem_dims: tuple[int, int],
|
349
348
|
transpose_subsystem: int
|
350
349
|
) -> np.ndarray:
|
351
350
|
"""Compute partial transpose of a density matrix.
|
352
|
-
|
351
|
+
|
353
352
|
Args:
|
354
353
|
rho: Density matrix
|
355
354
|
subsystem_dims: Dimensions of subsystems
|
356
355
|
transpose_subsystem: Which subsystem to transpose (0 for A, 1 for B)
|
357
|
-
|
356
|
+
|
358
357
|
Returns:
|
359
358
|
Partially transposed density matrix
|
360
359
|
|
@@ -367,9 +366,9 @@ def partial_transpose(
|
|
367
366
|
for i in range(dim_A):
|
368
367
|
for j in range(dim_A):
|
369
368
|
for k in range(dim_B):
|
370
|
-
for
|
369
|
+
for m in range(dim_B):
|
371
370
|
# Transpose indices for subsystem A
|
372
|
-
rho_TA[i*dim_B + k, j*dim_B +
|
371
|
+
rho_TA[i*dim_B + k, j*dim_B + m] = rho[j*dim_B + k, i*dim_B + m]
|
373
372
|
return rho_TA
|
374
373
|
|
375
374
|
elif transpose_subsystem == 1:
|
@@ -378,9 +377,9 @@ def partial_transpose(
|
|
378
377
|
for i in range(dim_A):
|
379
378
|
for j in range(dim_A):
|
380
379
|
for k in range(dim_B):
|
381
|
-
for
|
380
|
+
for m in range(dim_B):
|
382
381
|
# Transpose indices for subsystem B
|
383
|
-
rho_TB[i*dim_B + k, j*dim_B +
|
382
|
+
rho_TB[i*dim_B + k, j*dim_B + m] = rho[i*dim_B + m, j*dim_B + k]
|
384
383
|
return rho_TB
|
385
384
|
|
386
385
|
else:
|
@@ -392,7 +391,7 @@ def _validate_quantum_state(state: np.ndarray) -> None:
|
|
392
391
|
if len(state.shape) == 1:
|
393
392
|
# Pure state vector
|
394
393
|
if not np.isclose(np.linalg.norm(state), 1.0, atol=1e-10):
|
395
|
-
warnings.warn("State vector is not normalized")
|
394
|
+
warnings.warn("State vector is not normalized", stacklevel=2)
|
396
395
|
|
397
396
|
elif len(state.shape) == 2:
|
398
397
|
# Density matrix
|
@@ -401,16 +400,16 @@ def _validate_quantum_state(state: np.ndarray) -> None:
|
|
401
400
|
|
402
401
|
# Check if Hermitian
|
403
402
|
if not np.allclose(state, np.conj(state.T), atol=1e-10):
|
404
|
-
warnings.warn("Density matrix is not Hermitian")
|
403
|
+
warnings.warn("Density matrix is not Hermitian", stacklevel=2)
|
405
404
|
|
406
405
|
# Check if positive semidefinite
|
407
406
|
eigenvals = np.linalg.eigvals(state)
|
408
407
|
if np.any(eigenvals < -1e-10):
|
409
|
-
warnings.warn("Density matrix is not positive semidefinite")
|
408
|
+
warnings.warn("Density matrix is not positive semidefinite", stacklevel=2)
|
410
409
|
|
411
410
|
# Check trace
|
412
411
|
if not np.isclose(np.trace(state), 1.0, atol=1e-10):
|
413
|
-
warnings.warn("Density matrix trace is not 1")
|
412
|
+
warnings.warn("Density matrix trace is not 1", stacklevel=2)
|
414
413
|
|
415
414
|
else:
|
416
415
|
raise ValueError("Invalid quantum state format")
|
@@ -433,12 +432,12 @@ def quantum_state_distance(
|
|
433
432
|
metric: str = 'fidelity'
|
434
433
|
) -> float:
|
435
434
|
"""Calculate distance between quantum states using various metrics.
|
436
|
-
|
435
|
+
|
437
436
|
Args:
|
438
437
|
state1: First quantum state
|
439
438
|
state2: Second quantum state
|
440
439
|
metric: Distance metric ('fidelity', 'trace_distance', 'hilbert_schmidt')
|
441
|
-
|
440
|
+
|
442
441
|
Returns:
|
443
442
|
Distance value
|
444
443
|
|
@@ -4,7 +4,7 @@ This module provides functions to visualize quantum circuits, optimization resul
|
|
4
4
|
quantum states, and other quantum machine learning concepts.
|
5
5
|
"""
|
6
6
|
|
7
|
-
from typing import Any
|
7
|
+
from typing import Any
|
8
8
|
|
9
9
|
import numpy as np
|
10
10
|
|
@@ -28,14 +28,14 @@ except ImportError:
|
|
28
28
|
|
29
29
|
|
30
30
|
def visualize_results(
|
31
|
-
results:
|
31
|
+
results: dict[str, Any],
|
32
32
|
plot_type: str = 'optimization',
|
33
33
|
backend: str = 'matplotlib',
|
34
|
-
save_path:
|
34
|
+
save_path: str | None = None,
|
35
35
|
**kwargs
|
36
36
|
) -> None:
|
37
37
|
"""Visualize quantum machine learning results.
|
38
|
-
|
38
|
+
|
39
39
|
Args:
|
40
40
|
results: Results dictionary from algorithm execution
|
41
41
|
plot_type: Type of plot ('optimization', 'classification', 'regression')
|
@@ -60,13 +60,13 @@ def visualize_results(
|
|
60
60
|
|
61
61
|
|
62
62
|
def plot_optimization_history(
|
63
|
-
results:
|
63
|
+
results: dict[str, Any],
|
64
64
|
backend: str = 'matplotlib',
|
65
|
-
save_path:
|
65
|
+
save_path: str | None = None,
|
66
66
|
**kwargs
|
67
67
|
) -> None:
|
68
68
|
"""Plot optimization history from algorithm results.
|
69
|
-
|
69
|
+
|
70
70
|
Args:
|
71
71
|
results: Results containing 'cost_history' or similar
|
72
72
|
backend: Plotting backend
|
@@ -95,13 +95,13 @@ def plot_optimization_history(
|
|
95
95
|
|
96
96
|
|
97
97
|
def plot_circuit(
|
98
|
-
circuit_data:
|
98
|
+
circuit_data: dict[str, Any],
|
99
99
|
backend: str = 'matplotlib',
|
100
|
-
save_path:
|
100
|
+
save_path: str | None = None,
|
101
101
|
**kwargs
|
102
102
|
) -> None:
|
103
103
|
"""Plot quantum circuit diagram.
|
104
|
-
|
104
|
+
|
105
105
|
Args:
|
106
106
|
circuit_data: Circuit information dictionary
|
107
107
|
backend: Plotting backend
|
@@ -121,11 +121,11 @@ def plot_quantum_state(
|
|
121
121
|
state_vector: np.ndarray,
|
122
122
|
backend: str = 'matplotlib',
|
123
123
|
representation: str = 'bar',
|
124
|
-
save_path:
|
124
|
+
save_path: str | None = None,
|
125
125
|
**kwargs
|
126
126
|
) -> None:
|
127
127
|
"""Plot quantum state vector.
|
128
|
-
|
128
|
+
|
129
129
|
Args:
|
130
130
|
state_vector: Complex quantum state vector
|
131
131
|
backend: Plotting backend
|
@@ -145,11 +145,11 @@ def plot_quantum_state(
|
|
145
145
|
def plot_bloch_sphere(
|
146
146
|
state_vector: np.ndarray,
|
147
147
|
backend: str = 'matplotlib',
|
148
|
-
save_path:
|
148
|
+
save_path: str | None = None,
|
149
149
|
**kwargs
|
150
150
|
) -> None:
|
151
151
|
"""Plot quantum state on Bloch sphere (for single qubit states).
|
152
|
-
|
152
|
+
|
153
153
|
Args:
|
154
154
|
state_vector: Single qubit state vector [α, β]
|
155
155
|
backend: Plotting backend
|
@@ -172,9 +172,9 @@ def plot_bloch_sphere(
|
|
172
172
|
|
173
173
|
|
174
174
|
def plot_classification_results(
|
175
|
-
results:
|
175
|
+
results: dict[str, Any],
|
176
176
|
backend: str = 'matplotlib',
|
177
|
-
save_path:
|
177
|
+
save_path: str | None = None,
|
178
178
|
**kwargs
|
179
179
|
) -> None:
|
180
180
|
"""Plot classification results including confusion matrix and metrics."""
|
@@ -187,9 +187,9 @@ def plot_classification_results(
|
|
187
187
|
|
188
188
|
|
189
189
|
def plot_regression_results(
|
190
|
-
results:
|
190
|
+
results: dict[str, Any],
|
191
191
|
backend: str = 'matplotlib',
|
192
|
-
save_path:
|
192
|
+
save_path: str | None = None,
|
193
193
|
**kwargs
|
194
194
|
) -> None:
|
195
195
|
"""Plot regression results including predictions vs actual."""
|
@@ -203,8 +203,8 @@ def plot_regression_results(
|
|
203
203
|
|
204
204
|
# Matplotlib implementations
|
205
205
|
def _plot_optimization_matplotlib(
|
206
|
-
cost_history:
|
207
|
-
save_path:
|
206
|
+
cost_history: list[float],
|
207
|
+
save_path: str | None = None,
|
208
208
|
**kwargs
|
209
209
|
) -> None:
|
210
210
|
"""Plot optimization history using matplotlib."""
|
@@ -222,8 +222,8 @@ def _plot_optimization_matplotlib(
|
|
222
222
|
|
223
223
|
|
224
224
|
def _plot_circuit_matplotlib(
|
225
|
-
circuit_data:
|
226
|
-
save_path:
|
225
|
+
circuit_data: dict[str, Any],
|
226
|
+
save_path: str | None = None,
|
227
227
|
**kwargs
|
228
228
|
) -> None:
|
229
229
|
"""Plot circuit diagram using matplotlib."""
|
@@ -240,7 +240,7 @@ def _plot_circuit_matplotlib(
|
|
240
240
|
# Draw gates (simplified representation)
|
241
241
|
gate_positions = np.linspace(1, 9, len(gates)) if gates else []
|
242
242
|
|
243
|
-
for pos, gate in zip(gate_positions, gates):
|
243
|
+
for pos, gate in zip(gate_positions, gates, strict=False):
|
244
244
|
gate_type = gate.get('type', 'X')
|
245
245
|
qubit = gate.get('qubit', 0)
|
246
246
|
|
@@ -269,7 +269,7 @@ def _plot_circuit_matplotlib(
|
|
269
269
|
def _plot_state_matplotlib(
|
270
270
|
state_vector: np.ndarray,
|
271
271
|
representation: str,
|
272
|
-
save_path:
|
272
|
+
save_path: str | None = None,
|
273
273
|
**kwargs
|
274
274
|
) -> None:
|
275
275
|
"""Plot quantum state using matplotlib."""
|
@@ -298,13 +298,13 @@ def _plot_state_matplotlib(
|
|
298
298
|
phases = np.angle(state_vector)
|
299
299
|
|
300
300
|
plt.figure(figsize=(10, 8))
|
301
|
-
|
301
|
+
plt.scatter(phases, amplitudes, s=100, alpha=0.7)
|
302
302
|
plt.xlabel('Phase (radians)')
|
303
303
|
plt.ylabel('Amplitude')
|
304
304
|
plt.title('Quantum State (Phase-Amplitude)')
|
305
305
|
|
306
306
|
# Add state labels
|
307
|
-
for i, (phase, amp) in enumerate(zip(phases, amplitudes)):
|
307
|
+
for i, (phase, amp) in enumerate(zip(phases, amplitudes, strict=False)):
|
308
308
|
if amp > 0.01: # Only label significant amplitudes
|
309
309
|
plt.annotate(f'|{i}⟩', (phase, amp), xytext=(5, 5),
|
310
310
|
textcoords='offset points')
|
@@ -317,7 +317,7 @@ def _plot_state_matplotlib(
|
|
317
317
|
|
318
318
|
def _plot_bloch_matplotlib(
|
319
319
|
bloch_vector: np.ndarray,
|
320
|
-
save_path:
|
320
|
+
save_path: str | None = None,
|
321
321
|
**kwargs
|
322
322
|
) -> None:
|
323
323
|
"""Plot Bloch sphere using matplotlib."""
|
@@ -360,8 +360,8 @@ def _plot_bloch_matplotlib(
|
|
360
360
|
|
361
361
|
|
362
362
|
def _plot_classification_matplotlib(
|
363
|
-
results:
|
364
|
-
save_path:
|
363
|
+
results: dict[str, Any],
|
364
|
+
save_path: str | None = None,
|
365
365
|
**kwargs
|
366
366
|
) -> None:
|
367
367
|
"""Plot classification results using matplotlib."""
|
@@ -410,8 +410,8 @@ def _plot_classification_matplotlib(
|
|
410
410
|
|
411
411
|
|
412
412
|
def _plot_regression_matplotlib(
|
413
|
-
results:
|
414
|
-
save_path:
|
413
|
+
results: dict[str, Any],
|
414
|
+
save_path: str | None = None,
|
415
415
|
**kwargs
|
416
416
|
) -> None:
|
417
417
|
"""Plot regression results using matplotlib."""
|
@@ -465,8 +465,8 @@ def _plot_regression_matplotlib(
|
|
465
465
|
|
466
466
|
# Plotly implementations (simplified)
|
467
467
|
def _plot_optimization_plotly(
|
468
|
-
cost_history:
|
469
|
-
save_path:
|
468
|
+
cost_history: list[float],
|
469
|
+
save_path: str | None = None,
|
470
470
|
**kwargs
|
471
471
|
) -> None:
|
472
472
|
"""Plot optimization history using plotly."""
|
@@ -475,7 +475,7 @@ def _plot_optimization_plotly(
|
|
475
475
|
y=cost_history,
|
476
476
|
mode='lines',
|
477
477
|
name='Cost',
|
478
|
-
line=
|
478
|
+
line={'width': 3}
|
479
479
|
))
|
480
480
|
fig.update_layout(
|
481
481
|
title='Optimization History',
|
@@ -490,8 +490,8 @@ def _plot_optimization_plotly(
|
|
490
490
|
|
491
491
|
|
492
492
|
def _plot_circuit_plotly(
|
493
|
-
circuit_data:
|
494
|
-
save_path:
|
493
|
+
circuit_data: dict[str, Any],
|
494
|
+
save_path: str | None = None,
|
495
495
|
**kwargs
|
496
496
|
) -> None:
|
497
497
|
"""Plot circuit using plotly (simplified)."""
|
@@ -514,7 +514,7 @@ def _plot_circuit_plotly(
|
|
514
514
|
def _plot_state_plotly(
|
515
515
|
state_vector: np.ndarray,
|
516
516
|
representation: str,
|
517
|
-
save_path:
|
517
|
+
save_path: str | None = None,
|
518
518
|
**kwargs
|
519
519
|
) -> None:
|
520
520
|
"""Plot state using plotly."""
|
@@ -537,7 +537,7 @@ def _plot_state_plotly(
|
|
537
537
|
|
538
538
|
def _plot_bloch_plotly(
|
539
539
|
bloch_vector: np.ndarray,
|
540
|
-
save_path:
|
540
|
+
save_path: str | None = None,
|
541
541
|
**kwargs
|
542
542
|
) -> None:
|
543
543
|
"""Plot Bloch sphere using plotly."""
|
@@ -562,17 +562,17 @@ def _plot_bloch_plotly(
|
|
562
562
|
fig.add_trace(go.Scatter3d(
|
563
563
|
x=[0, x], y=[0, y], z=[0, z],
|
564
564
|
mode='lines+markers',
|
565
|
-
line=
|
566
|
-
marker=
|
565
|
+
line={'width': 5, 'color': 'red'},
|
566
|
+
marker={'size': 8, 'color': 'red'}
|
567
567
|
))
|
568
568
|
|
569
569
|
fig.update_layout(
|
570
570
|
title='Bloch Sphere',
|
571
|
-
scene=
|
572
|
-
xaxis_title
|
573
|
-
yaxis_title
|
574
|
-
zaxis_title
|
575
|
-
|
571
|
+
scene={
|
572
|
+
'xaxis_title': 'X',
|
573
|
+
'yaxis_title': 'Y',
|
574
|
+
'zaxis_title': 'Z'
|
575
|
+
}
|
576
576
|
)
|
577
577
|
|
578
578
|
if save_path:
|
@@ -582,8 +582,8 @@ def _plot_bloch_plotly(
|
|
582
582
|
|
583
583
|
|
584
584
|
def _plot_classification_plotly(
|
585
|
-
results:
|
586
|
-
save_path:
|
585
|
+
results: dict[str, Any],
|
586
|
+
save_path: str | None = None,
|
587
587
|
**kwargs
|
588
588
|
) -> None:
|
589
589
|
"""Plot classification results using plotly."""
|
@@ -605,8 +605,8 @@ def _plot_classification_plotly(
|
|
605
605
|
|
606
606
|
|
607
607
|
def _plot_regression_plotly(
|
608
|
-
results:
|
609
|
-
save_path:
|
608
|
+
results: dict[str, Any],
|
609
|
+
save_path: str | None = None,
|
610
610
|
**kwargs
|
611
611
|
) -> None:
|
612
612
|
"""Plot regression results using plotly."""
|
superquantx/version.py
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
"""Version information for SuperQuantX."""
|
2
2
|
|
3
|
-
__version__ = "0.1.
|
4
|
-
__version_info__ = (0, 1,
|
3
|
+
__version__ = "0.1.1"
|
4
|
+
__version_info__ = (0, 1, 1)
|
5
5
|
|
6
6
|
# Release information
|
7
|
-
__release_date__ = "
|
7
|
+
__release_date__ = "2025-09-11"
|
8
8
|
__release_name__ = "Agentic AI Genesis"
|
9
9
|
|
10
10
|
# Build information - will be updated during CI/CD
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: superquantx
|
3
|
-
Version: 0.1.
|
3
|
+
Version: 0.1.1
|
4
4
|
Summary: Quantum AI Research Platform - Unified API for QuantumAgentic AIsystems research
|
5
5
|
Project-URL: Homepage, https://github.com/SuperagenticAI/superquantx
|
6
6
|
Project-URL: Documentation, https://superagenticai.github.io/superquantx
|
@@ -8,10 +8,8 @@ Project-URL: Repository, https://github.com/SuperagenticAI/superquantx
|
|
8
8
|
Project-URL: Bug Tracker, https://github.com/SuperagenticAI/superquantx/issues
|
9
9
|
Project-URL: Source Code, https://github.com/SuperagenticAI/superquantx
|
10
10
|
Project-URL: Changelog, https://github.com/SuperagenticAI/superquantx/blob/main/CHANGELOG.md
|
11
|
-
Project-URL: Discussions, https://github.com/SuperagenticAI/superquantx/discussions
|
12
|
-
Project-URL: Funding, https://github.com/sponsors/SuperagenticAI
|
13
11
|
Author-email: Shashi Jagtap <shashi@super-agentic.ai>, Shashi Jagtap <shashikant.jagtap@icloud.com>, SuperXLab Research Team <research@super-agentic.ai>
|
14
|
-
Maintainer-email: Shashi Jagtap <shashi@super-agentic.ai>, Shashi Jagtap <shashikant.jagtap@icloud.com>,
|
12
|
+
Maintainer-email: Shashi Jagtap <shashi@super-agentic.ai>, Shashi Jagtap <shashikant.jagtap@icloud.com>, Superagentic AI Research Team <research@super-agentic.ai>
|
15
13
|
License: Apache-2.0
|
16
14
|
License-File: LICENSE
|
17
15
|
Keywords: agentic-ai,braket,cirq,experimental,pennylane,qiskit,quantum-agents,quantum-algorithms,quantum-computing,quantum-machine-learning,research-platform,unified-api
|
@@ -123,20 +121,18 @@ Requires-Dist: pytket-qiskit>=0.50.0; extra == 'tket'
|
|
123
121
|
Requires-Dist: pytket>=1.25.0; extra == 'tket'
|
124
122
|
Description-Content-Type: text/markdown
|
125
123
|
|
126
|
-
<div align="center">
|
127
|
-
<img src="resources/logo.png" alt="SuperQuantX Logo" width="600"/>
|
128
|
-
</div>
|
129
|
-
|
130
|
-
# SuperQuantX
|
131
|
-
|
132
124
|
[](https://pypi.org/project/superquantx/)
|
133
125
|
[](https://pypi.org/project/superquantx/)
|
134
|
-
[](https://opensource.org/licenses/Apache-2.0)
|
135
127
|
[](https://github.com/SuperagenticAI/superquantx/actions)
|
136
|
-
[](
|
128
|
+
[](https://superagenticai.github.io/superquantx)
|
137
129
|
[](https://github.com/psf/black)
|
138
130
|
[](https://github.com/astral-sh/ruff)
|
139
131
|
|
132
|
+
# SuperQuantX
|
133
|
+
### The foundation for the future of Agentic and Quantum AI
|
134
|
+
SuperQuantX unified API for the next wave of Quantum AI. It's a foundation to build powerful Quantum Agentic AI systems with a single interface to Qiskit, Cirq, PennyLane, and more. SuperQuantX is your launchpad into the world of Quantum + Agentic AI.
|
135
|
+
|
140
136
|
**Unified Quantum Computing Platform - Building autonomous quantum-enhanced AI systems**
|
141
137
|
|
142
138
|
> 📖 **[Read the Full Documentation →](https://superagenticai.github.io/superquantx/)**
|
@@ -152,6 +148,12 @@ SuperQuantX is a **unified quantum computing platform** that makes quantum algor
|
|
152
148
|
- **🧠 Quantum ML** - Advanced quantum machine learning algorithms and neural networks
|
153
149
|
- **⚡ Easy Setup** - Get started in minutes with comprehensive documentation
|
154
150
|
|
151
|
+
<div align="center">
|
152
|
+
<a href="https://super-agentic.ai" target="_blank">
|
153
|
+
<img src="resources/logo.png" alt="SuperQuantX Logo" width="500">
|
154
|
+
</a>
|
155
|
+
</div>
|
156
|
+
|
155
157
|
## ✨ Key Features
|
156
158
|
|
157
159
|
### **🔗 Universal Quantum Backend Support**
|
@@ -236,7 +238,7 @@ solution = qaoa.solve()
|
|
236
238
|
The documentation includes comprehensive guides for getting started, detailed API references, tutorials, and examples for all supported quantum backends. Visit the documentation site for:
|
237
239
|
|
238
240
|
- **Getting Started** - Installation, configuration, and your first quantum program
|
239
|
-
- **User Guides** - Platform overview, backends, and algorithms
|
241
|
+
- **User Guides** - Platform overview, backends, and algorithms
|
240
242
|
- **Tutorials** - Hands-on quantum computing and machine learning examples
|
241
243
|
- **API Reference** - Complete API documentation with examples
|
242
244
|
- **Development** - Contributing guidelines, architecture, and testing
|
@@ -330,7 +332,7 @@ Help improve our documentation:
|
|
330
332
|
|
331
333
|
## 📄 License
|
332
334
|
|
333
|
-
SuperQuantX is released under the [
|
335
|
+
SuperQuantX is released under the [Apache License 2.0](LICENSE). Feel free to use it in your projects, research, and commercial applications.
|
334
336
|
|
335
337
|
---
|
336
338
|
|
@@ -350,13 +352,13 @@ print('✅ SuperQuantX is ready!')
|
|
350
352
|
|
351
353
|
**Ready to explore quantum computing?**
|
352
354
|
|
353
|
-
👉 **[Start with the Quick Start Guide →](
|
355
|
+
👉 **[Start with the Quick Start Guide →](https://superagenticai.github.io/superquantx/)**
|
354
356
|
|
355
357
|
---
|
356
358
|
|
357
359
|
<div align="center">
|
358
360
|
|
359
|
-
**SuperQuantX: Making Quantum Computing Accessible**
|
361
|
+
**SuperQuantX: Making Quantum Computing Accessible to all**
|
360
362
|
|
361
363
|
*Built with ❤️ by [Superagentic AI](https://super-agentic.ai)*
|
362
364
|
|