quantum-debugger 0.6.0__tar.gz → 0.6.1__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.
- quantum_debugger-0.6.1/CHANGELOG.md +188 -0
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/PKG-INFO +34 -14
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/README.md +32 -13
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/__init__.py +38 -33
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/backends/__init__.py +44 -47
- quantum_debugger-0.6.1/quantum_debugger/backends/_cuda_dll.py +69 -0
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/backends/aws_backend.py +89 -86
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/backends/base.py +15 -16
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/backends/base_backend.py +14 -19
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/backends/cupy_backend.py +37 -32
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/backends/gpu_backend.py +71 -71
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/backends/ibm_backend.py +60 -59
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/backends/numba_backend.py +34 -32
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/backends/numpy_backend.py +13 -13
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/backends/sparse_backend.py +32 -32
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/benchmarks/__init__.py +18 -25
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/benchmarks/optimization_benchmarks.py +55 -59
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/benchmarks/qml_benchmarks.py +89 -111
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/benchmarks/report_generator.py +77 -71
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/benchmarks/scalability_benchmarks.py +72 -74
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/core/circuit.py +222 -133
- quantum_debugger-0.6.1/quantum_debugger/core/gates.py +125 -0
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/core/quantum_state.py +138 -90
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/debugger/breakpoints.py +35 -29
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/debugger/debugger.py +86 -71
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/debugger/inspector.py +82 -76
- quantum_debugger-0.6.1/quantum_debugger/gpu/__init__.py +25 -0
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/gpu/memory.py +66 -52
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/gpu/mixed_precision.py +118 -80
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/gpu/multi_gpu.py +119 -132
- quantum_debugger-0.6.1/quantum_debugger/integrations/__init__.py +46 -0
- quantum_debugger-0.6.1/quantum_debugger/integrations/cirq_adapter.py +288 -0
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/integrations/cirq_bridge.py +98 -84
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/integrations/pennylane_bridge.py +100 -81
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/integrations/qiskit_adapter.py +60 -57
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/integrations/qiskit_bridge.py +88 -79
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/mitigation/__init__.py +7 -7
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/mitigation/core/__init__.py +5 -5
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/mitigation/core/extrapolator.py +86 -99
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/mitigation/core/folder.py +96 -92
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/mitigation/zne.py +63 -64
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/noise/__init__.py +24 -24
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/noise/composite_noise.py +9 -10
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/noise/hardware_profiles.py +126 -149
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/noise/noise_helpers.py +26 -21
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/noise/noise_models.py +79 -78
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/noise/stochastic_sampler.py +45 -41
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/optimization/__init__.py +11 -14
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/optimization/circuit_compiler.py +38 -44
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/optimization/gate_reduction.py +78 -79
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/optimization/optimization_passes.py +47 -41
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/optimization/transpiler.py +79 -85
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/parallel/__init__.py +2 -2
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/parallel/executor.py +51 -40
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/profiler/metrics.py +49 -45
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/profiler/profiler.py +49 -46
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/__init__.py +8 -4
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/algorithms/__init__.py +1 -7
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/algorithms/qaoa.py +84 -99
- quantum_debugger-0.6.1/quantum_debugger/qml/algorithms/qgan.py +246 -0
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/algorithms/qrl.py +117 -84
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/algorithms/vqe.py +72 -44
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/ansatz/__init__.py +11 -7
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/ansatz/excitation_preserving.py +50 -44
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/ansatz/real_amplitudes.py +35 -33
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/ansatz/strongly_entangling.py +40 -39
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/ansatz/two_local.py +53 -50
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/automl/__init__.py +8 -11
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/automl/ansatz_selector.py +32 -39
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/automl/architecture_search.py +54 -61
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/automl/auto_qnn.py +128 -76
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/automl/hyperparameter_tuner.py +62 -67
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/data/dataset.py +47 -47
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/data/feature_maps.py +57 -57
- quantum_debugger-0.6.1/quantum_debugger/qml/error_mitigation/__init__.py +11 -0
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/error_mitigation/zne.py +126 -96
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/gates/__init__.py +1 -1
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/gates/parameterized.py +46 -48
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/hamiltonians/__init__.py +1 -1
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/hamiltonians/molecular.py +186 -175
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/hybrid/__init__.py +11 -12
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/hybrid/layers.py +199 -98
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/hybrid/pytorch_integration.py +89 -81
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/hybrid/tensorflow_integration.py +119 -72
- quantum_debugger-0.6.1/quantum_debugger/qml/kernels/__init__.py +37 -0
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/kernels/alignment.py +56 -66
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/kernels/qsvm.py +59 -68
- quantum_debugger-0.6.1/quantum_debugger/qml/kernels/quantum_kernel.py +256 -0
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/mitigation/__init__.py +14 -17
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/mitigation/cdr.py +97 -108
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/mitigation/error_characterization.py +62 -74
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/mitigation/noise_models.py +70 -81
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/mitigation/pec.py +174 -66
- quantum_debugger-0.6.1/quantum_debugger/qml/optimizers/__init__.py +30 -0
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/optimizers/advanced.py +190 -142
- quantum_debugger-0.6.1/quantum_debugger/qml/optimizers/basics.py +98 -0
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/qnn/__init__.py +12 -12
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/qnn/base.py +25 -23
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/qnn/encoding.py +18 -20
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/qnn/losses.py +29 -28
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/qnn/network.py +137 -102
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/qnn/variational.py +30 -32
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/training/__init__.py +44 -40
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/transfer/__init__.py +10 -15
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/transfer/fine_tuning.py +43 -57
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/transfer/model_zoo.py +93 -90
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/transfer/pretrained.py +86 -89
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/transfer/serialization.py +65 -65
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/utils/gradients.py +31 -38
- quantum_debugger-0.6.1/quantum_debugger/visualization/bloch_sphere.py +187 -0
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/visualization/state_viz.py +91 -87
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger.egg-info/PKG-INFO +34 -14
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger.egg-info/SOURCES.txt +2 -0
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger.egg-info/requires.txt +1 -0
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/setup.py +16 -1
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/cirq/test_cirq_advanced.py +155 -154
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/cirq/test_cirq_edge_cases.py +131 -129
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/cirq/test_cirq_integration.py +117 -108
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/conftest.py +17 -0
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/integration/test_integration.py +115 -109
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/integration/test_qiskit_integration.py +60 -59
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/qml/test_advanced_algorithms.py +79 -73
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/qml/test_advanced_optimizers.py +115 -110
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/qml/test_ansatz_library.py +74 -81
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/qml/test_automl.py +33 -33
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/qml/test_dataset.py +129 -117
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/qml/test_edge_cases.py +149 -148
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/qml/test_hamiltonians.py +105 -106
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/qml/test_hybrid.py +114 -150
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/qml/test_kernels.py +88 -109
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/qml/test_mitigation.py +108 -112
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/qml/test_qaoa.py +65 -63
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/qml/test_qml_parameterized_gates.py +75 -83
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/qml/test_qnn.py +119 -122
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/qml/test_transfer.py +96 -105
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/qml/test_transfer_extended.py +121 -130
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/qml/test_vqe.py +44 -48
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/qml/test_zne.py +47 -51
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/test_backends.py +45 -39
- quantum_debugger-0.6.1/tests/test_benchmarks.py +138 -0
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/test_integrations.py +44 -44
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/test_optimization.py +123 -123
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_advanced.py +103 -102
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_backend_comprehensive.py +80 -54
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_backend_integration.py +20 -20
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_backends.py +15 -15
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_backends_advanced.py +42 -40
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_backends_comprehensive.py +33 -30
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_backends_fast.py +32 -27
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_circuit_noise.py +36 -33
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_circuit_noise_advanced.py +138 -129
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_circuit_noise_unique.py +175 -166
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_compatibility.py +22 -15
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_comprehensive.py +155 -147
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_distribution.py +35 -34
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_docstrings.py +27 -16
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_error_handling.py +57 -58
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_extreme.py +143 -140
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_gpu_quick.py +14 -12
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_hardware_profiles_extended.py +48 -38
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_hardware_profiles_phase3.py +38 -32
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_mitigation_comprehensive.py +114 -129
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_mitigation_final.py +53 -65
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_mitigation_observables.py +60 -59
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_mitigation_zne.py +47 -46
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_noise.py +29 -22
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_noise_advanced.py +175 -169
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_noise_extreme.py +145 -139
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_noise_final.py +144 -139
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_noise_performance.py +128 -123
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_noise_quantum_info.py +148 -139
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_noise_ultimate.py +41 -40
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_parallel.py +45 -43
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_performance.py +20 -20
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_production.py +141 -133
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_qiskit_complex.py +68 -67
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_qiskit_extreme.py +110 -104
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_qiskit_ultra.py +76 -73
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_qml_advanced.py +57 -55
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_qml_comprehensive.py +81 -79
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_qml_memory.py +71 -65
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_qml_threading.py +50 -50
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_qml_tricky.py +90 -86
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_quickstart.py +30 -29
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/test_validation.py +118 -117
- quantum_debugger-0.6.0/CHANGELOG.md +0 -110
- quantum_debugger-0.6.0/quantum_debugger/core/gates.py +0 -141
- quantum_debugger-0.6.0/quantum_debugger/gpu/__init__.py +0 -19
- quantum_debugger-0.6.0/quantum_debugger/integrations/__init__.py +0 -55
- quantum_debugger-0.6.0/quantum_debugger/integrations/cirq_adapter.py +0 -270
- quantum_debugger-0.6.0/quantum_debugger/qml/algorithms/qgan.py +0 -203
- quantum_debugger-0.6.0/quantum_debugger/qml/error_mitigation/__init__.py +0 -15
- quantum_debugger-0.6.0/quantum_debugger/qml/kernels/__init__.py +0 -40
- quantum_debugger-0.6.0/quantum_debugger/qml/kernels/quantum_kernel.py +0 -240
- quantum_debugger-0.6.0/quantum_debugger/qml/optimizers/__init__.py +0 -24
- quantum_debugger-0.6.0/quantum_debugger/visualization/bloch_sphere.py +0 -152
- quantum_debugger-0.6.0/tests/test_benchmarks.py +0 -153
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/AUTHORS.md +0 -0
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/LICENSE +0 -0
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/MANIFEST.in +0 -0
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/examples/bell_state_debug.py +0 -0
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/examples/benchmarks.py +0 -0
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/examples/grover_profiling.py +0 -0
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/examples/interactive_demo.py +0 -0
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/examples/qaoa_maxcut_example.py +0 -0
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/examples/qiskit_integration_demo.py +0 -0
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/examples/qml_basic_example.py +0 -0
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/examples/vqe_h2_example.py +0 -0
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/core/__init__.py +0 -0
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/debugger/__init__.py +0 -0
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/profiler/__init__.py +0 -0
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/data/__init__.py +0 -0
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/qml/utils/__init__.py +0 -0
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger/visualization/__init__.py +0 -0
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger.egg-info/dependency_links.txt +0 -0
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/quantum_debugger.egg-info/top_level.txt +0 -0
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/requirements.txt +0 -0
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/setup.cfg +0 -0
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/__init__.py +0 -0
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/cirq/__init__.py +0 -0
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/integration/__init__.py +0 -0
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/qml/__init__.py +0 -0
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/CONVERSION_TRACKER.py +0 -0
- {quantum_debugger-0.6.0 → quantum_debugger-0.6.1}/tests/unit/__init__.py +0 -0
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to QuantumDebugger will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [0.6.1] - 2026-07-16
|
|
9
|
+
|
|
10
|
+
Release-hardening pass focused on correctness, performance, and robustness. No
|
|
11
|
+
breaking API changes.
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
- **GPU state-vector simulation**: `QuantumCircuit.get_statevector(use_gpu=True,
|
|
15
|
+
precision='single'|'double')` runs the entire circuit on the GPU (CuPy) — the
|
|
16
|
+
state lives on the device across all gates with a single transfer back.
|
|
17
|
+
Verified identical to CPU in double precision; measured ~6x (double) and
|
|
18
|
+
50-75x (single) vs CPU at 20-22 qubits on an RTX 5060.
|
|
19
|
+
- **Automatic Windows CUDA DLL discovery** so the GPU backend works out of the
|
|
20
|
+
box with the `cupy-cuda12x` + `nvidia-*-cu12` pip wheel setup.
|
|
21
|
+
|
|
22
|
+
### Fixed
|
|
23
|
+
- **Import robustness**: a broken or version-incompatible optional dependency
|
|
24
|
+
(e.g. PennyLane against a mismatched JAX) no longer crashes
|
|
25
|
+
`import quantum_debugger`. Optional-integration guards now degrade gracefully
|
|
26
|
+
to `<FRAMEWORK>_AVAILABLE = False` instead of only catching `ImportError`.
|
|
27
|
+
- **QNN training**: `QuantumNeuralNetwork.fit` now uses the compiled optimizer
|
|
28
|
+
(Adam / SGD) instead of a hardcoded `params -= 0.01 * gradient` that ignored
|
|
29
|
+
`compile(...)`. Training now actually converges.
|
|
30
|
+
- **QNN readout**: the network output is now a proper Pauli-Z expectation
|
|
31
|
+
`<Z_0>` over the full distribution, rather than `P(|0...0>) - P(|1...1>)`
|
|
32
|
+
which discarded almost all amplitudes for >2 qubits.
|
|
33
|
+
- **AutoML**: `AutoQNN` now selects models on a held-out validation split (was
|
|
34
|
+
scoring on the training data — leakage) and refits the winning configuration
|
|
35
|
+
on all data.
|
|
36
|
+
- **QAOA**: the cost layer now applies genuine two-qubit ZZ interactions
|
|
37
|
+
(CNOT·RZ·CNOT) instead of single-qubit RZ rotations, so the ansatz can
|
|
38
|
+
entangle and reach the true MaxCut optima.
|
|
39
|
+
- **Hybrid (PyTorch)**: fixed a shape-mismatch crash in `HybridQNN` caused by a
|
|
40
|
+
duplicated output projection, and replaced the all-zero backward pass with
|
|
41
|
+
finite-difference gradients so the quantum layer (and any preceding classical
|
|
42
|
+
layers) actually train.
|
|
43
|
+
- Corrected two test bugs exposed once the suite became collectable
|
|
44
|
+
(a swapped-argument `rx` call and a sign error in a QAOA convergence check).
|
|
45
|
+
- **Windows CUDA DLL discovery**: with the common `cupy-cuda12x` + `nvidia-*-cu12`
|
|
46
|
+
wheel setup, the CUDA DLLs live under `site-packages/nvidia/*/bin` and are not
|
|
47
|
+
on the Windows DLL search path, so CuPy failed to load `nvrtc`/`cublas`. The
|
|
48
|
+
backend now adds those directories to `PATH` and the DLL search list before
|
|
49
|
+
importing CuPy, so the GPU backend works out of the box (verified on an
|
|
50
|
+
RTX 5060 / sm_120).
|
|
51
|
+
|
|
52
|
+
### Reworked — placeholder features are now genuinely quantum
|
|
53
|
+
Several advertised features previously returned classical surrogates, random
|
|
54
|
+
values, or zero gradients. They are now real implementations, each verified:
|
|
55
|
+
- **Quantum fidelity kernel / QSVM**: `FidelityKernel` computes
|
|
56
|
+
`|<phi(x1)|phi(x2)>|^2` by simulating the real feature-map circuits (was a
|
|
57
|
+
classical RBF). Gram matrix verified symmetric, unit-diagonal, PSD.
|
|
58
|
+
`ProjectedKernel` is now the real reduced-density-matrix kernel.
|
|
59
|
+
- **Hybrid quantum layer** (`QuantumMiddleLayer`): forward is now a real
|
|
60
|
+
encoding + variational circuit measured in Z (was `cos(x + params)`), with
|
|
61
|
+
exact parameter-shift gradients wired into the PyTorch and TensorFlow layers
|
|
62
|
+
(were all-zero gradients). Gradients verified against finite differences.
|
|
63
|
+
- **Quantum GAN**: real variational generator circuit and a trainable
|
|
64
|
+
discriminator with exact BCE gradients (was a global-phase no-op generator and
|
|
65
|
+
a random discriminator). Generator demonstrably learns a target distribution.
|
|
66
|
+
- **Quantum RL**: real parameterized-circuit Q-function with parameter-shift TD
|
|
67
|
+
updates (was `tanh` of a dot product). Agent learns the gridworld to optimum.
|
|
68
|
+
- **Error mitigation**: genuine PEC (quasi-probability Monte Carlo that recovers
|
|
69
|
+
the ideal expectation), CDR (exact Clifford simulation + regression), Quantum
|
|
70
|
+
Natural Gradient (true Fubini-Study metric, matches analytic values), and ZNE
|
|
71
|
+
noise scaling by real unitary folding (preserves the logical unitary).
|
|
72
|
+
- **GPU module**: `DistributedQNN`/`DataParallelQNN` now genuinely train via real
|
|
73
|
+
data-parallel gradient averaging (base class no longer raises
|
|
74
|
+
`NotImplementedError`); mixed-precision `train_step` uses a real gradient (was
|
|
75
|
+
random). Multi-GPU wall-clock speedup still requires GPU hardware.
|
|
76
|
+
|
|
77
|
+
### Changed
|
|
78
|
+
- **Core simulator performance**: `QuantumState.apply_gate` now applies gates by
|
|
79
|
+
tensor contraction (O(2**n) per gate) instead of materializing the full
|
|
80
|
+
2**n x 2**n operator (O(4**n)). Results are numerically identical (verified
|
|
81
|
+
against the previous implementation over thousands of random configurations);
|
|
82
|
+
16-qubit circuits that were previously infeasible now run in tens of ms.
|
|
83
|
+
- Reconciled version metadata: `__version__` is the single source of truth and
|
|
84
|
+
`setup.py` reads it (previously `0.4.2` in the package vs `0.6.0` in setup).
|
|
85
|
+
|
|
86
|
+
## [0.4.2] - 2025-12-22
|
|
87
|
+
|
|
88
|
+
### Added
|
|
89
|
+
- **Complete pytest migration**: All 200 legacy script-style tests converted to pytest format
|
|
90
|
+
- **Hardware profiles extended**: AWS Braket, Azure Quantum provider support
|
|
91
|
+
- **2025 hardware updates**: IBM Heron, Google Willow, IonQ Forte profiles
|
|
92
|
+
- **Advanced backend tests**: 8 edge case and performance tests
|
|
93
|
+
- **GPU backend support**: CuPy backend availability testing
|
|
94
|
+
- **Enhanced test coverage**: 656 comprehensive tests (all passing ✅)
|
|
95
|
+
|
|
96
|
+
### Changed
|
|
97
|
+
- Migrated all legacy test files from script execution to pytest format
|
|
98
|
+
- Updated test structure for better CI/CD compatibility
|
|
99
|
+
- Enhanced backend validation with 6 comprehensive backend tests
|
|
100
|
+
- Improved hardware profile testing (18 tests total)
|
|
101
|
+
|
|
102
|
+
### Fixed
|
|
103
|
+
- Test suite compatibility issues
|
|
104
|
+
- Backend detection for GPU/CuPy
|
|
105
|
+
- Hardware profile version tracking
|
|
106
|
+
|
|
107
|
+
### Documentation
|
|
108
|
+
- Updated README.md with v0.4.2 features and test count
|
|
109
|
+
- Added comprehensive testing section in README
|
|
110
|
+
- Created FINAL_TEST_SUMMARY.md with complete 656 test breakdown
|
|
111
|
+
- Fixed all documentation links (tutorials, examples, LICENSE)
|
|
112
|
+
- Updated version numbers across all files
|
|
113
|
+
|
|
114
|
+
### Testing
|
|
115
|
+
- **656 total tests** (all passing ✅)
|
|
116
|
+
- All script-style tests converted to pytest
|
|
117
|
+
- Complete test coverage documentation
|
|
118
|
+
|
|
119
|
+
## [0.4.1] - 2024-12-XX
|
|
120
|
+
|
|
121
|
+
### Added
|
|
122
|
+
- Additional QML features and optimizations
|
|
123
|
+
- Performance improvements
|
|
124
|
+
|
|
125
|
+
## [0.4.0] - 2024-12-XX
|
|
126
|
+
|
|
127
|
+
### Added
|
|
128
|
+
- **Quantum Machine Learning Module**
|
|
129
|
+
- Parameterized gates (RX, RY, RZ with trainable parameters)
|
|
130
|
+
- VQE algorithm for molecular chemistry
|
|
131
|
+
- QAOA for combinatorial optimization
|
|
132
|
+
- Training framework with 4 optimizers (Adam, SGD, SPSA, RMSprop)
|
|
133
|
+
- Gradient computation (parameter shift rule, finite differences)
|
|
134
|
+
- 316 comprehensive tests
|
|
135
|
+
- 3 tutorials, 4 example scripts
|
|
136
|
+
|
|
137
|
+
### Changed
|
|
138
|
+
- Enhanced circuit profiling
|
|
139
|
+
- Improved state visualization
|
|
140
|
+
|
|
141
|
+
## [0.3.0] - 2024-12-XX
|
|
142
|
+
|
|
143
|
+
### Added
|
|
144
|
+
- Realistic noise models (4 types)
|
|
145
|
+
- Hardware profiles (IBM, Google, IonQ, Rigetti)
|
|
146
|
+
- Qiskit Aer validation
|
|
147
|
+
- 89 new tests
|
|
148
|
+
|
|
149
|
+
## [0.2.0] - 2024-XX-XX
|
|
150
|
+
|
|
151
|
+
### Added
|
|
152
|
+
- Bidirectional circuit conversion with Qiskit
|
|
153
|
+
- CP gate support
|
|
154
|
+
- 12-qubit support
|
|
155
|
+
|
|
156
|
+
## [0.1.1] - 2024-12-03
|
|
157
|
+
|
|
158
|
+
### Fixed
|
|
159
|
+
- Fixed SWAP gate matrix for little-endian qubit ordering
|
|
160
|
+
- Fixed CNOT gate matrix for little-endian qubit ordering
|
|
161
|
+
- Fixed Toffoli gate matrix for little-endian qubit ordering
|
|
162
|
+
- Fixed entanglement detection for Bell states
|
|
163
|
+
- Rewrote multi-qubit gate expansion algorithm using tensor products
|
|
164
|
+
|
|
165
|
+
### Added
|
|
166
|
+
- 69 comprehensive tests (100% pass rate)
|
|
167
|
+
- Test suites: quickstart, advanced, comprehensive, extreme, validation, production, edge cases
|
|
168
|
+
- Numerical stability tests (100+ consecutive operations)
|
|
169
|
+
- Quantum mechanics validation tests
|
|
170
|
+
- Production readiness tests
|
|
171
|
+
|
|
172
|
+
### Changed
|
|
173
|
+
- Improved gate expansion algorithm for better accuracy
|
|
174
|
+
- Enhanced test coverage to 69 tests across 7 test suites
|
|
175
|
+
|
|
176
|
+
## [0.1.0] - 2024-11-30
|
|
177
|
+
|
|
178
|
+
### Added
|
|
179
|
+
- Initial release
|
|
180
|
+
- Core quantum state representation
|
|
181
|
+
- 15+ quantum gates (H, X, Y, Z, S, T, RX, RY, RZ, PHASE, CNOT, CZ, SWAP, Toffoli)
|
|
182
|
+
- Step-through debugger with breakpoints
|
|
183
|
+
- Circuit profiler with optimization suggestions
|
|
184
|
+
- State visualization tools
|
|
185
|
+
- Bloch sphere representation
|
|
186
|
+
- Support for up to 15 qubits
|
|
187
|
+
- Example circuits and demos
|
|
188
|
+
- Comprehensive documentation
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: quantum-debugger
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.1
|
|
4
4
|
Summary: Comprehensive quantum machine learning library with AutoML, GPU acceleration, advanced algorithms (QGANs, Quantum RL), transfer learning, and multi-framework support (Qiskit, PennyLane, Cirq, TensorFlow, PyTorch)
|
|
5
5
|
Home-page: https://github.com/Raunakg2005/quantum-debugger
|
|
6
6
|
Author: Raunak Kumar Gupta
|
|
@@ -28,6 +28,7 @@ License-File: AUTHORS.md
|
|
|
28
28
|
Requires-Dist: numpy>=1.20.0
|
|
29
29
|
Requires-Dist: scipy>=1.7.0
|
|
30
30
|
Requires-Dist: matplotlib>=3.5.0
|
|
31
|
+
Requires-Dist: scikit-learn>=1.0.0
|
|
31
32
|
Provides-Extra: qiskit
|
|
32
33
|
Requires-Dist: qiskit>=1.0.0; extra == "qiskit"
|
|
33
34
|
Provides-Extra: pennylane
|
|
@@ -83,7 +84,22 @@ Dynamic: summary
|
|
|
83
84
|
[](https://python.org)
|
|
84
85
|
[](LICENSE)
|
|
85
86
|
|
|
86
|
-
A powerful Python library for quantum circuit debugging, state inspection, performance analysis, and
|
|
87
|
+
A powerful Python library for quantum circuit debugging, state inspection, performance analysis, and quantum machine learning. From basic circuits to QML with one-line AutoML.
|
|
88
|
+
|
|
89
|
+
## What's New in v0.6.1
|
|
90
|
+
|
|
91
|
+
Correctness, performance, and "make the advertised features real" release:
|
|
92
|
+
- **Faster core** - gate application is now O(2ⁿ) per gate (was O(4ⁿ)); optional
|
|
93
|
+
**GPU state-vector simulation** (`get_statevector(use_gpu=True)`, up to ~50-75x
|
|
94
|
+
at 20+ qubits in single precision).
|
|
95
|
+
- **Genuinely quantum QML** - the quantum kernel/QSVM, hybrid PyTorch/TF layers,
|
|
96
|
+
Quantum GAN, Quantum RL, and error mitigation (PEC, CDR, QNG, ZNE) are now real
|
|
97
|
+
circuit-based implementations with real gradients, each verified — not the
|
|
98
|
+
classical/placeholder stand-ins they were before.
|
|
99
|
+
- **Robust imports** - a broken optional dependency no longer breaks
|
|
100
|
+
`import quantum_debugger`.
|
|
101
|
+
|
|
102
|
+
See [CHANGELOG.md](CHANGELOG.md) for the full list.
|
|
87
103
|
|
|
88
104
|
## What's New in v0.6.0
|
|
89
105
|
|
|
@@ -141,11 +157,16 @@ predictions = model.predict(X_test)
|
|
|
141
157
|
- **Auto-Publishing** - Automatic PyPI releases
|
|
142
158
|
- **Code Quality** - Linting, formatting checks
|
|
143
159
|
|
|
144
|
-
**GPU Acceleration (
|
|
145
|
-
- **
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
-
|
|
160
|
+
**GPU Acceleration (v0.6.1)**
|
|
161
|
+
- **GPU state-vector simulation** - `circuit.get_statevector(use_gpu=True)` runs
|
|
162
|
+
the whole circuit on the GPU (CuPy). Measured on an RTX 5060 vs CPU: ~6x in
|
|
163
|
+
double precision, and 50-75x in single precision (`precision='single'`) at
|
|
164
|
+
20-22 qubits, where the CPU becomes the bottleneck.
|
|
165
|
+
- **Distributed / mixed-precision training** - real data-parallel gradient
|
|
166
|
+
averaging and mixed-precision steps. (Multi-GPU wall-clock speedup requires
|
|
167
|
+
multiple physical GPUs; on one device these run correctly but sequentially.)
|
|
168
|
+
- **Windows-friendly** - auto-discovers pip-installed CUDA runtime wheels
|
|
169
|
+
(`nvidia-*-cu12`) so the GPU backend works without a manual CUDA toolkit setup.
|
|
149
170
|
|
|
150
171
|
See [complete documentation](https://github.com/Raunakg2005/quantum-debugger#documentation) for details.
|
|
151
172
|
|
|
@@ -376,10 +397,10 @@ pytest tests/ --cov=quantum_debugger --cov-report=html
|
|
|
376
397
|
|
|
377
398
|
See [FINAL_TEST_SUMMARY.md](tests/FINAL_TEST_SUMMARY.md) for detailed test information.
|
|
378
399
|
|
|
379
|
-
**Test Statistics:**
|
|
380
|
-
-
|
|
381
|
-
-
|
|
382
|
-
-
|
|
400
|
+
**Test Statistics (v0.6.1):**
|
|
401
|
+
- ~980 tests passing (`pytest tests/ -m "not aws"`)
|
|
402
|
+
- GPU-hardware tests require a working CUDA + CuPy install; they skip otherwise
|
|
403
|
+
- A few tests are performance/timing based and may vary by machine
|
|
383
404
|
|
|
384
405
|
## Contributing
|
|
385
406
|
|
|
@@ -424,6 +445,5 @@ If you use quantum-debugger in your research, please cite:
|
|
|
424
445
|
|
|
425
446
|
---
|
|
426
447
|
|
|
427
|
-
**Version:** 0.6.
|
|
428
|
-
**
|
|
429
|
-
**Last Updated:** January 14, 2026
|
|
448
|
+
**Version:** 0.6.1
|
|
449
|
+
**Last Updated:** July 2026
|
|
@@ -9,7 +9,22 @@
|
|
|
9
9
|
[](https://python.org)
|
|
10
10
|
[](LICENSE)
|
|
11
11
|
|
|
12
|
-
A powerful Python library for quantum circuit debugging, state inspection, performance analysis, and
|
|
12
|
+
A powerful Python library for quantum circuit debugging, state inspection, performance analysis, and quantum machine learning. From basic circuits to QML with one-line AutoML.
|
|
13
|
+
|
|
14
|
+
## What's New in v0.6.1
|
|
15
|
+
|
|
16
|
+
Correctness, performance, and "make the advertised features real" release:
|
|
17
|
+
- **Faster core** - gate application is now O(2ⁿ) per gate (was O(4ⁿ)); optional
|
|
18
|
+
**GPU state-vector simulation** (`get_statevector(use_gpu=True)`, up to ~50-75x
|
|
19
|
+
at 20+ qubits in single precision).
|
|
20
|
+
- **Genuinely quantum QML** - the quantum kernel/QSVM, hybrid PyTorch/TF layers,
|
|
21
|
+
Quantum GAN, Quantum RL, and error mitigation (PEC, CDR, QNG, ZNE) are now real
|
|
22
|
+
circuit-based implementations with real gradients, each verified — not the
|
|
23
|
+
classical/placeholder stand-ins they were before.
|
|
24
|
+
- **Robust imports** - a broken optional dependency no longer breaks
|
|
25
|
+
`import quantum_debugger`.
|
|
26
|
+
|
|
27
|
+
See [CHANGELOG.md](CHANGELOG.md) for the full list.
|
|
13
28
|
|
|
14
29
|
## What's New in v0.6.0
|
|
15
30
|
|
|
@@ -67,11 +82,16 @@ predictions = model.predict(X_test)
|
|
|
67
82
|
- **Auto-Publishing** - Automatic PyPI releases
|
|
68
83
|
- **Code Quality** - Linting, formatting checks
|
|
69
84
|
|
|
70
|
-
**GPU Acceleration (
|
|
71
|
-
- **
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
-
|
|
85
|
+
**GPU Acceleration (v0.6.1)**
|
|
86
|
+
- **GPU state-vector simulation** - `circuit.get_statevector(use_gpu=True)` runs
|
|
87
|
+
the whole circuit on the GPU (CuPy). Measured on an RTX 5060 vs CPU: ~6x in
|
|
88
|
+
double precision, and 50-75x in single precision (`precision='single'`) at
|
|
89
|
+
20-22 qubits, where the CPU becomes the bottleneck.
|
|
90
|
+
- **Distributed / mixed-precision training** - real data-parallel gradient
|
|
91
|
+
averaging and mixed-precision steps. (Multi-GPU wall-clock speedup requires
|
|
92
|
+
multiple physical GPUs; on one device these run correctly but sequentially.)
|
|
93
|
+
- **Windows-friendly** - auto-discovers pip-installed CUDA runtime wheels
|
|
94
|
+
(`nvidia-*-cu12`) so the GPU backend works without a manual CUDA toolkit setup.
|
|
75
95
|
|
|
76
96
|
See [complete documentation](https://github.com/Raunakg2005/quantum-debugger#documentation) for details.
|
|
77
97
|
|
|
@@ -302,10 +322,10 @@ pytest tests/ --cov=quantum_debugger --cov-report=html
|
|
|
302
322
|
|
|
303
323
|
See [FINAL_TEST_SUMMARY.md](tests/FINAL_TEST_SUMMARY.md) for detailed test information.
|
|
304
324
|
|
|
305
|
-
**Test Statistics:**
|
|
306
|
-
-
|
|
307
|
-
-
|
|
308
|
-
-
|
|
325
|
+
**Test Statistics (v0.6.1):**
|
|
326
|
+
- ~980 tests passing (`pytest tests/ -m "not aws"`)
|
|
327
|
+
- GPU-hardware tests require a working CUDA + CuPy install; they skip otherwise
|
|
328
|
+
- A few tests are performance/timing based and may vary by machine
|
|
309
329
|
|
|
310
330
|
## Contributing
|
|
311
331
|
|
|
@@ -350,6 +370,5 @@ If you use quantum-debugger in your research, please cite:
|
|
|
350
370
|
|
|
351
371
|
---
|
|
352
372
|
|
|
353
|
-
**Version:** 0.6.
|
|
354
|
-
**
|
|
355
|
-
**Last Updated:** January 14, 2026
|
|
373
|
+
**Version:** 0.6.1
|
|
374
|
+
**Last Updated:** July 2026
|
|
@@ -11,14 +11,21 @@ Features:
|
|
|
11
11
|
- Zero-noise extrapolation (v0.4.0)
|
|
12
12
|
- Qiskit integration
|
|
13
13
|
- Hardware profile support
|
|
14
|
-
|
|
15
|
-
Version: 0.4.0-dev
|
|
16
14
|
"""
|
|
17
15
|
|
|
18
|
-
__version__ = "0.
|
|
19
|
-
__author__ = "
|
|
16
|
+
__version__ = "0.6.1"
|
|
17
|
+
__author__ = "Raunak Kumar Gupta"
|
|
20
18
|
__license__ = "MIT"
|
|
21
19
|
|
|
20
|
+
# Make pip-installed CUDA runtime DLLs discoverable (Windows) as early as
|
|
21
|
+
# possible, before anything imports CuPy, so the GPU backend works out of the box.
|
|
22
|
+
try:
|
|
23
|
+
from .backends._cuda_dll import ensure_cuda_dlls
|
|
24
|
+
|
|
25
|
+
ensure_cuda_dlls()
|
|
26
|
+
except Exception:
|
|
27
|
+
pass
|
|
28
|
+
|
|
22
29
|
from .core.circuit import QuantumCircuit
|
|
23
30
|
from .core.quantum_state import QuantumState
|
|
24
31
|
from .core.gates import GateLibrary
|
|
@@ -54,40 +61,38 @@ from .mitigation import (
|
|
|
54
61
|
# Optional integrations
|
|
55
62
|
try:
|
|
56
63
|
from .integrations import QiskitAdapter
|
|
57
|
-
|
|
58
|
-
|
|
64
|
+
|
|
65
|
+
__all_integrations__ = ["QiskitAdapter"]
|
|
66
|
+
except Exception: # optional integrations must never break the base import
|
|
59
67
|
__all_integrations__ = []
|
|
60
68
|
|
|
61
69
|
__all__ = [
|
|
62
70
|
# Core
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
71
|
+
"QuantumCircuit",
|
|
72
|
+
"QuantumState",
|
|
73
|
+
"GateLibrary",
|
|
74
|
+
"QuantumDebugger",
|
|
75
|
+
"Breakpoint",
|
|
76
|
+
"BreakpointManager",
|
|
77
|
+
"StateInspector",
|
|
78
|
+
"CircuitProfiler",
|
|
79
|
+
"CircuitMetrics",
|
|
80
|
+
"StateVisualizer",
|
|
81
|
+
"BlochSphere",
|
|
75
82
|
# Noise Models (v0.3.0)
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
83
|
+
"DepolarizingNoise",
|
|
84
|
+
"AmplitudeDamping",
|
|
85
|
+
"PhaseDamping",
|
|
86
|
+
"ThermalRelaxation",
|
|
87
|
+
"CompositeNoise",
|
|
82
88
|
# Hardware Profiles
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
89
|
+
"IBM_PERTH_2025",
|
|
90
|
+
"GOOGLE_SYCAMORE_2025",
|
|
91
|
+
"IONQ_ARIA_2025",
|
|
92
|
+
"RIGETTI_ASPEN_2025",
|
|
88
93
|
# Error Mitigation (v0.4.0)
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
94
|
+
"zero_noise_extrapolation",
|
|
95
|
+
"global_fold",
|
|
96
|
+
"local_fold",
|
|
97
|
+
"adaptive_fold",
|
|
93
98
|
] + __all_integrations__
|
|
@@ -15,6 +15,7 @@ except ImportError:
|
|
|
15
15
|
|
|
16
16
|
try:
|
|
17
17
|
from .sparse_backend import SparseBackend
|
|
18
|
+
|
|
18
19
|
HAS_SPARSE = True
|
|
19
20
|
except ImportError:
|
|
20
21
|
HAS_SPARSE = False
|
|
@@ -28,50 +29,48 @@ except ImportError:
|
|
|
28
29
|
_backend_cache = {}
|
|
29
30
|
|
|
30
31
|
|
|
31
|
-
def get_backend(name=
|
|
32
|
+
def get_backend(name="auto"):
|
|
32
33
|
"""
|
|
33
34
|
Get computational backend by name.
|
|
34
|
-
|
|
35
|
+
|
|
35
36
|
Args:
|
|
36
37
|
name: Backend name ('auto', 'numpy', 'numba', 'sparse', 'cupy')
|
|
37
38
|
'auto' selects best available backend
|
|
38
|
-
|
|
39
|
+
|
|
39
40
|
Returns:
|
|
40
41
|
Backend instance
|
|
41
|
-
|
|
42
|
+
|
|
42
43
|
Example:
|
|
43
44
|
>>> backend = get_backend('numba')
|
|
44
45
|
>>> backend = get_backend() # Auto-select
|
|
45
46
|
"""
|
|
46
47
|
if name in _backend_cache:
|
|
47
48
|
return _backend_cache[name]
|
|
48
|
-
|
|
49
|
-
if name ==
|
|
49
|
+
|
|
50
|
+
if name == "auto":
|
|
50
51
|
# Auto-select best available
|
|
51
52
|
if HAS_NUMBA:
|
|
52
53
|
backend = NumbaBackend()
|
|
53
54
|
else:
|
|
54
55
|
backend = NumPyBackend()
|
|
55
|
-
|
|
56
|
-
elif name ==
|
|
56
|
+
|
|
57
|
+
elif name == "numpy":
|
|
57
58
|
backend = NumPyBackend()
|
|
58
|
-
|
|
59
|
-
elif name ==
|
|
59
|
+
|
|
60
|
+
elif name == "numba":
|
|
60
61
|
if not HAS_NUMBA:
|
|
61
62
|
raise ImportError(
|
|
62
63
|
"Numba not available. Install with: pip install numba\n"
|
|
63
64
|
"Falling back to NumPy..."
|
|
64
65
|
)
|
|
65
66
|
backend = NumbaBackend()
|
|
66
|
-
|
|
67
|
-
elif name ==
|
|
67
|
+
|
|
68
|
+
elif name == "sparse":
|
|
68
69
|
if not HAS_SPARSE:
|
|
69
|
-
raise ImportError(
|
|
70
|
-
"SciPy not available. Install with: pip install scipy"
|
|
71
|
-
)
|
|
70
|
+
raise ImportError("SciPy not available. Install with: pip install scipy")
|
|
72
71
|
backend = SparseBackend()
|
|
73
|
-
|
|
74
|
-
elif name ==
|
|
72
|
+
|
|
73
|
+
elif name == "cupy" or name == "gpu":
|
|
75
74
|
if not HAS_CUPY:
|
|
76
75
|
raise ImportError(
|
|
77
76
|
"CuPy not available. For GPU acceleration, install with:\n"
|
|
@@ -80,13 +79,13 @@ def get_backend(name='auto'):
|
|
|
80
79
|
"Check https://docs.cupy.dev/en/stable/install.html"
|
|
81
80
|
)
|
|
82
81
|
backend = CuPyBackend()
|
|
83
|
-
|
|
82
|
+
|
|
84
83
|
else:
|
|
85
84
|
raise ValueError(
|
|
86
85
|
f"Unknown backend '{name}'. "
|
|
87
86
|
f"Available: 'auto', 'numpy', 'numba', 'sparse'"
|
|
88
87
|
)
|
|
89
|
-
|
|
88
|
+
|
|
90
89
|
_backend_cache[name] = backend
|
|
91
90
|
return backend
|
|
92
91
|
|
|
@@ -94,44 +93,41 @@ def get_backend(name='auto'):
|
|
|
94
93
|
def list_available_backends():
|
|
95
94
|
"""
|
|
96
95
|
List all available backends on this system.
|
|
97
|
-
|
|
96
|
+
|
|
98
97
|
Returns:
|
|
99
98
|
dict: Backend name -> availability status
|
|
100
99
|
"""
|
|
101
100
|
backends = {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
101
|
+
"numpy": True, # Always available
|
|
102
|
+
"numba": HAS_NUMBA,
|
|
103
|
+
"sparse": HAS_SPARSE,
|
|
104
|
+
"cupy": HAS_CUPY,
|
|
106
105
|
}
|
|
107
|
-
|
|
106
|
+
|
|
108
107
|
return backends
|
|
109
108
|
|
|
110
109
|
|
|
111
110
|
__all__ = [
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
111
|
+
"Backend",
|
|
112
|
+
"NumPyBackend",
|
|
113
|
+
"get_backend",
|
|
114
|
+
"list_available_backends",
|
|
116
115
|
]
|
|
117
116
|
|
|
118
117
|
if HAS_NUMBA:
|
|
119
|
-
__all__.append(
|
|
118
|
+
__all__.append("NumbaBackend")
|
|
120
119
|
|
|
121
120
|
if HAS_SPARSE:
|
|
122
|
-
__all__.append(
|
|
121
|
+
__all__.append("SparseBackend")
|
|
123
122
|
|
|
124
123
|
if HAS_CUPY:
|
|
125
|
-
__all__.append(
|
|
124
|
+
__all__.append("CuPyBackend")
|
|
126
125
|
|
|
127
126
|
# Add GPU backend
|
|
128
127
|
try:
|
|
129
|
-
from .gpu_backend import
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
benchmark_backends
|
|
133
|
-
)
|
|
134
|
-
__all__.extend(['GPUBackend', 'get_optimal_backend', 'benchmark_backends'])
|
|
128
|
+
from .gpu_backend import GPUBackend, get_optimal_backend, benchmark_backends
|
|
129
|
+
|
|
130
|
+
__all__.extend(["GPUBackend", "get_optimal_backend", "benchmark_backends"])
|
|
135
131
|
except ImportError:
|
|
136
132
|
pass
|
|
137
133
|
|
|
@@ -140,22 +136,23 @@ try:
|
|
|
140
136
|
from .ibm_backend import IBMQuantumBackend, IBM_AVAILABLE
|
|
141
137
|
from .aws_backend import AWSBraketBackend, AWS_AVAILABLE
|
|
142
138
|
from .base_backend import QuantumBackend
|
|
143
|
-
|
|
144
|
-
__all__.extend([
|
|
145
|
-
|
|
139
|
+
|
|
140
|
+
__all__.extend(["IBMQuantumBackend", "AWSBraketBackend", "QuantumBackend"])
|
|
141
|
+
|
|
146
142
|
def get_available_backends():
|
|
147
143
|
"""Get list of available quantum backends."""
|
|
148
144
|
backends = []
|
|
149
145
|
if IBM_AVAILABLE:
|
|
150
|
-
backends.append(
|
|
146
|
+
backends.append("ibm")
|
|
151
147
|
if AWS_AVAILABLE:
|
|
152
|
-
backends.append(
|
|
148
|
+
backends.append("aws")
|
|
153
149
|
return backends
|
|
154
|
-
|
|
155
|
-
__all__.append(
|
|
156
|
-
|
|
150
|
+
|
|
151
|
+
__all__.append("get_available_backends")
|
|
152
|
+
|
|
157
153
|
except ImportError:
|
|
158
154
|
# Hardware backends not installed
|
|
159
155
|
def get_available_backends():
|
|
160
156
|
return []
|
|
161
|
-
|
|
157
|
+
|
|
158
|
+
__all__.append("get_available_backends")
|