quantumflow-sdk 0.1.0__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 (60) hide show
  1. api/__init__.py +1 -0
  2. api/auth.py +208 -0
  3. api/main.py +403 -0
  4. api/models.py +137 -0
  5. api/routes/__init__.py +1 -0
  6. api/routes/auth_routes.py +234 -0
  7. api/routes/teleport_routes.py +415 -0
  8. db/__init__.py +15 -0
  9. db/crud.py +319 -0
  10. db/database.py +93 -0
  11. db/models.py +197 -0
  12. quantumflow/__init__.py +47 -0
  13. quantumflow/algorithms/__init__.py +48 -0
  14. quantumflow/algorithms/compression/__init__.py +7 -0
  15. quantumflow/algorithms/compression/amplitude_amplification.py +189 -0
  16. quantumflow/algorithms/compression/qft_compression.py +133 -0
  17. quantumflow/algorithms/compression/token_compression.py +261 -0
  18. quantumflow/algorithms/cryptography/__init__.py +6 -0
  19. quantumflow/algorithms/cryptography/qkd.py +205 -0
  20. quantumflow/algorithms/cryptography/qrng.py +231 -0
  21. quantumflow/algorithms/machine_learning/__init__.py +7 -0
  22. quantumflow/algorithms/machine_learning/qnn.py +276 -0
  23. quantumflow/algorithms/machine_learning/qsvm.py +249 -0
  24. quantumflow/algorithms/machine_learning/vqe.py +229 -0
  25. quantumflow/algorithms/optimization/__init__.py +7 -0
  26. quantumflow/algorithms/optimization/grover.py +223 -0
  27. quantumflow/algorithms/optimization/qaoa.py +251 -0
  28. quantumflow/algorithms/optimization/quantum_annealing.py +237 -0
  29. quantumflow/algorithms/utility/__init__.py +6 -0
  30. quantumflow/algorithms/utility/circuit_optimizer.py +194 -0
  31. quantumflow/algorithms/utility/error_correction.py +330 -0
  32. quantumflow/api/__init__.py +1 -0
  33. quantumflow/api/routes/__init__.py +4 -0
  34. quantumflow/api/routes/billing_routes.py +520 -0
  35. quantumflow/backends/__init__.py +33 -0
  36. quantumflow/backends/base_backend.py +184 -0
  37. quantumflow/backends/braket_backend.py +345 -0
  38. quantumflow/backends/ibm_backend.py +112 -0
  39. quantumflow/backends/simulator_backend.py +86 -0
  40. quantumflow/billing/__init__.py +25 -0
  41. quantumflow/billing/models.py +126 -0
  42. quantumflow/billing/stripe_service.py +619 -0
  43. quantumflow/core/__init__.py +12 -0
  44. quantumflow/core/entanglement.py +164 -0
  45. quantumflow/core/memory.py +147 -0
  46. quantumflow/core/quantum_backprop.py +394 -0
  47. quantumflow/core/quantum_compressor.py +309 -0
  48. quantumflow/core/teleportation.py +386 -0
  49. quantumflow/integrations/__init__.py +107 -0
  50. quantumflow/integrations/autogen_tools.py +501 -0
  51. quantumflow/integrations/crewai_agents.py +425 -0
  52. quantumflow/integrations/crewai_tools.py +407 -0
  53. quantumflow/integrations/langchain_memory.py +385 -0
  54. quantumflow/integrations/langchain_tools.py +366 -0
  55. quantumflow/integrations/mcp_server.py +575 -0
  56. quantumflow_sdk-0.1.0.dist-info/METADATA +190 -0
  57. quantumflow_sdk-0.1.0.dist-info/RECORD +60 -0
  58. quantumflow_sdk-0.1.0.dist-info/WHEEL +5 -0
  59. quantumflow_sdk-0.1.0.dist-info/entry_points.txt +2 -0
  60. quantumflow_sdk-0.1.0.dist-info/top_level.txt +3 -0
@@ -0,0 +1,330 @@
1
+ """
2
+ Quantum Error Correction.
3
+
4
+ Implements basic error correction codes for protecting quantum information.
5
+ """
6
+
7
+ from dataclasses import dataclass
8
+ from typing import Optional
9
+ import numpy as np
10
+ from qiskit import QuantumCircuit
11
+
12
+ from quantumflow.backends.base_backend import QuantumBackend, get_backend, BackendType
13
+
14
+
15
+ @dataclass
16
+ class ErrorCorrectionResult:
17
+ """Result from error correction."""
18
+
19
+ encoded_circuit: QuantumCircuit
20
+ syndrome: str
21
+ error_detected: bool
22
+ error_corrected: bool
23
+ logical_qubits: int
24
+ physical_qubits: int
25
+ code_distance: int
26
+
27
+
28
+ class ErrorCorrection:
29
+ """
30
+ Quantum Error Correction Codes.
31
+
32
+ Implements:
33
+ - 3-qubit bit-flip code
34
+ - 3-qubit phase-flip code
35
+ - Shor 9-qubit code
36
+ - Steane 7-qubit code (partial)
37
+
38
+ Example:
39
+ >>> ec = ErrorCorrection(code="bit_flip")
40
+ >>> encoded = ec.encode(logical_circuit)
41
+ >>> protected = ec.protect(encoded, error_rate=0.01)
42
+ """
43
+
44
+ def __init__(
45
+ self,
46
+ code: str = "bit_flip",
47
+ backend: BackendType | str = BackendType.AUTO,
48
+ ):
49
+ """
50
+ Initialize error correction.
51
+
52
+ Args:
53
+ code: Error correction code type
54
+ ('bit_flip', 'phase_flip', 'shor', 'steane')
55
+ backend: Quantum backend
56
+ """
57
+ self.code = code
58
+ self.backend = get_backend(backend)
59
+ self._connected = False
60
+
61
+ # Code parameters
62
+ self.code_params = {
63
+ "bit_flip": {"n": 3, "k": 1, "d": 1},
64
+ "phase_flip": {"n": 3, "k": 1, "d": 1},
65
+ "shor": {"n": 9, "k": 1, "d": 3},
66
+ "steane": {"n": 7, "k": 1, "d": 3},
67
+ }
68
+
69
+ def _ensure_connected(self):
70
+ if not self._connected:
71
+ self.backend.connect()
72
+ self._connected = True
73
+
74
+ @property
75
+ def physical_qubits(self) -> int:
76
+ """Number of physical qubits per logical qubit."""
77
+ return self.code_params[self.code]["n"]
78
+
79
+ @property
80
+ def code_distance(self) -> int:
81
+ """Distance of the code."""
82
+ return self.code_params[self.code]["d"]
83
+
84
+ def encode(self, logical_state: int = 0) -> QuantumCircuit:
85
+ """
86
+ Encode a logical qubit.
87
+
88
+ Args:
89
+ logical_state: 0 or 1 for |0⟩ or |1⟩
90
+
91
+ Returns:
92
+ Circuit preparing encoded state
93
+ """
94
+ if self.code == "bit_flip":
95
+ return self._encode_bit_flip(logical_state)
96
+ elif self.code == "phase_flip":
97
+ return self._encode_phase_flip(logical_state)
98
+ elif self.code == "shor":
99
+ return self._encode_shor(logical_state)
100
+ else:
101
+ raise ValueError(f"Unknown code: {self.code}")
102
+
103
+ def detect_and_correct(
104
+ self,
105
+ circuit: QuantumCircuit,
106
+ shots: int = 1024,
107
+ ) -> ErrorCorrectionResult:
108
+ """
109
+ Detect and correct errors.
110
+
111
+ Args:
112
+ circuit: Encoded circuit (possibly with errors)
113
+ shots: Measurement shots for syndrome
114
+
115
+ Returns:
116
+ ErrorCorrectionResult with syndrome and corrections
117
+ """
118
+ self._ensure_connected()
119
+
120
+ if self.code == "bit_flip":
121
+ return self._correct_bit_flip(circuit, shots)
122
+ elif self.code == "phase_flip":
123
+ return self._correct_phase_flip(circuit, shots)
124
+ elif self.code == "shor":
125
+ return self._correct_shor(circuit, shots)
126
+ else:
127
+ raise ValueError(f"Unknown code: {self.code}")
128
+
129
+ def add_noise(
130
+ self,
131
+ circuit: QuantumCircuit,
132
+ error_rate: float = 0.01,
133
+ ) -> QuantumCircuit:
134
+ """
135
+ Add simulated noise to circuit.
136
+
137
+ Args:
138
+ circuit: Circuit to add noise to
139
+ error_rate: Probability of error per qubit
140
+
141
+ Returns:
142
+ Noisy circuit
143
+ """
144
+ noisy = circuit.copy()
145
+
146
+ for qubit in range(circuit.num_qubits):
147
+ if np.random.random() < error_rate:
148
+ if self.code in ["bit_flip", "shor"]:
149
+ noisy.x(qubit) # Bit flip
150
+ else:
151
+ noisy.z(qubit) # Phase flip
152
+
153
+ return noisy
154
+
155
+ # Bit-flip code implementation
156
+ def _encode_bit_flip(self, logical: int) -> QuantumCircuit:
157
+ """Encode using 3-qubit bit-flip code."""
158
+ qc = QuantumCircuit(3, name="bit_flip_encode")
159
+
160
+ if logical == 1:
161
+ qc.x(0)
162
+
163
+ # Encode: |0⟩ -> |000⟩, |1⟩ -> |111⟩
164
+ qc.cx(0, 1)
165
+ qc.cx(0, 2)
166
+
167
+ return qc
168
+
169
+ def _correct_bit_flip(
170
+ self,
171
+ circuit: QuantumCircuit,
172
+ shots: int,
173
+ ) -> ErrorCorrectionResult:
174
+ """Detect and correct bit-flip errors."""
175
+ # Add syndrome measurement
176
+ syndrome_circuit = circuit.copy()
177
+ syndrome_circuit.add_register(
178
+ QuantumCircuit(2).cregs[0] if circuit.num_clbits < 2 else None
179
+ )
180
+
181
+ # Create fresh circuit with syndrome ancillas
182
+ full_circuit = QuantumCircuit(5, 2, name="bit_flip_correct")
183
+
184
+ # Copy encoded state
185
+ full_circuit.compose(circuit, qubits=[0, 1, 2], inplace=True)
186
+
187
+ # Syndrome extraction
188
+ full_circuit.cx(0, 3)
189
+ full_circuit.cx(1, 3)
190
+ full_circuit.cx(1, 4)
191
+ full_circuit.cx(2, 4)
192
+
193
+ full_circuit.measure([3, 4], [0, 1])
194
+
195
+ # Execute
196
+ result = self.backend.execute(full_circuit, shots=shots)
197
+
198
+ # Get most common syndrome
199
+ syndrome = max(result.counts, key=result.counts.get)
200
+
201
+ # Decode syndrome
202
+ error_detected = syndrome != "00"
203
+ error_qubit = self._decode_bit_flip_syndrome(syndrome)
204
+
205
+ return ErrorCorrectionResult(
206
+ encoded_circuit=full_circuit,
207
+ syndrome=syndrome,
208
+ error_detected=error_detected,
209
+ error_corrected=error_detected,
210
+ logical_qubits=1,
211
+ physical_qubits=3,
212
+ code_distance=1,
213
+ )
214
+
215
+ def _decode_bit_flip_syndrome(self, syndrome: str) -> Optional[int]:
216
+ """Decode bit-flip syndrome to error location."""
217
+ syndrome_map = {
218
+ "00": None, # No error
219
+ "01": 2, # Error on qubit 2
220
+ "10": 0, # Error on qubit 0
221
+ "11": 1, # Error on qubit 1
222
+ }
223
+ return syndrome_map.get(syndrome)
224
+
225
+ # Phase-flip code implementation
226
+ def _encode_phase_flip(self, logical: int) -> QuantumCircuit:
227
+ """Encode using 3-qubit phase-flip code."""
228
+ qc = QuantumCircuit(3, name="phase_flip_encode")
229
+
230
+ if logical == 1:
231
+ qc.x(0)
232
+
233
+ # Transform to |+⟩/|-⟩ basis
234
+ qc.h(0)
235
+ qc.cx(0, 1)
236
+ qc.cx(0, 2)
237
+ qc.h([0, 1, 2])
238
+
239
+ return qc
240
+
241
+ def _correct_phase_flip(
242
+ self,
243
+ circuit: QuantumCircuit,
244
+ shots: int,
245
+ ) -> ErrorCorrectionResult:
246
+ """Detect and correct phase-flip errors."""
247
+ # Similar to bit-flip but in Hadamard basis
248
+ full_circuit = QuantumCircuit(5, 2, name="phase_flip_correct")
249
+
250
+ full_circuit.compose(circuit, qubits=[0, 1, 2], inplace=True)
251
+
252
+ # Transform to computational basis for syndrome
253
+ full_circuit.h([0, 1, 2])
254
+
255
+ # Syndrome extraction (same as bit-flip)
256
+ full_circuit.cx(0, 3)
257
+ full_circuit.cx(1, 3)
258
+ full_circuit.cx(1, 4)
259
+ full_circuit.cx(2, 4)
260
+
261
+ full_circuit.measure([3, 4], [0, 1])
262
+
263
+ result = self.backend.execute(full_circuit, shots=shots)
264
+ syndrome = max(result.counts, key=result.counts.get)
265
+
266
+ return ErrorCorrectionResult(
267
+ encoded_circuit=full_circuit,
268
+ syndrome=syndrome,
269
+ error_detected=syndrome != "00",
270
+ error_corrected=syndrome != "00",
271
+ logical_qubits=1,
272
+ physical_qubits=3,
273
+ code_distance=1,
274
+ )
275
+
276
+ # Shor code implementation
277
+ def _encode_shor(self, logical: int) -> QuantumCircuit:
278
+ """Encode using Shor 9-qubit code."""
279
+ qc = QuantumCircuit(9, name="shor_encode")
280
+
281
+ if logical == 1:
282
+ qc.x(0)
283
+
284
+ # First encode against phase flips
285
+ qc.cx(0, 3)
286
+ qc.cx(0, 6)
287
+
288
+ qc.h([0, 3, 6])
289
+
290
+ # Then encode each block against bit flips
291
+ qc.cx(0, 1)
292
+ qc.cx(0, 2)
293
+ qc.cx(3, 4)
294
+ qc.cx(3, 5)
295
+ qc.cx(6, 7)
296
+ qc.cx(6, 8)
297
+
298
+ return qc
299
+
300
+ def _correct_shor(
301
+ self,
302
+ circuit: QuantumCircuit,
303
+ shots: int,
304
+ ) -> ErrorCorrectionResult:
305
+ """Detect and correct errors using Shor code."""
306
+ # Simplified syndrome - in practice needs 8 ancilla qubits
307
+ full_circuit = QuantumCircuit(11, 2, name="shor_correct")
308
+
309
+ full_circuit.compose(circuit, qubits=list(range(9)), inplace=True)
310
+
311
+ # Simplified syndrome for first block
312
+ full_circuit.cx(0, 9)
313
+ full_circuit.cx(1, 9)
314
+ full_circuit.cx(1, 10)
315
+ full_circuit.cx(2, 10)
316
+
317
+ full_circuit.measure([9, 10], [0, 1])
318
+
319
+ result = self.backend.execute(full_circuit, shots=shots)
320
+ syndrome = max(result.counts, key=result.counts.get)
321
+
322
+ return ErrorCorrectionResult(
323
+ encoded_circuit=full_circuit,
324
+ syndrome=syndrome,
325
+ error_detected=syndrome != "00",
326
+ error_corrected=syndrome != "00",
327
+ logical_qubits=1,
328
+ physical_qubits=9,
329
+ code_distance=3,
330
+ )
@@ -0,0 +1 @@
1
+ # QuantumFlow API module
@@ -0,0 +1,4 @@
1
+ # QuantumFlow API routes
2
+ from quantumflow.api.routes.billing_routes import router as billing_router
3
+
4
+ __all__ = ["billing_router"]