quantum-debugger 0.9.0__tar.gz → 1.0.0__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.
Files changed (371) hide show
  1. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/CHANGELOG.md +166 -0
  2. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/PKG-INFO +25 -4
  3. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/README.md +24 -3
  4. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/__init__.py +6 -1
  5. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/__init__.py +12 -0
  6. quantum_debugger-1.0.0/quantum_debugger/algorithms/tebd.py +141 -0
  7. quantum_debugger-1.0.0/quantum_debugger/mpo.py +97 -0
  8. quantum_debugger-1.0.0/quantum_debugger/mps.py +676 -0
  9. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/noise/noise_models.py +18 -5
  10. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger.egg-info/PKG-INFO +25 -4
  11. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger.egg-info/SOURCES.txt +8 -0
  12. quantum_debugger-1.0.0/tests/test_imaginary_tebd.py +72 -0
  13. quantum_debugger-1.0.0/tests/test_mpo.py +58 -0
  14. quantum_debugger-1.0.0/tests/test_mps.py +401 -0
  15. quantum_debugger-1.0.0/tests/test_mps_extensions.py +326 -0
  16. quantum_debugger-1.0.0/tests/test_tebd.py +74 -0
  17. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/unit/test_noise.py +88 -0
  18. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/AUTHORS.md +0 -0
  19. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/LICENSE +0 -0
  20. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/MANIFEST.in +0 -0
  21. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/examples/bell_state_debug.py +0 -0
  22. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/examples/benchmarks.py +0 -0
  23. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/examples/grover_profiling.py +0 -0
  24. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/examples/interactive_demo.py +0 -0
  25. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/examples/qaoa_maxcut_example.py +0 -0
  26. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/examples/qiskit_integration_demo.py +0 -0
  27. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/examples/qml_basic_example.py +0 -0
  28. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/examples/vqe_h2_example.py +0 -0
  29. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/adiabatic.py +0 -0
  30. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/amplitude_amplification.py +0 -0
  31. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/amplitude_estimation.py +0 -0
  32. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/arithmetic.py +0 -0
  33. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/bb84.py +0 -0
  34. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/bell_test.py +0 -0
  35. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/channel_capacity.py +0 -0
  36. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/classical_shadows.py +0 -0
  37. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/cloning.py +0 -0
  38. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/contextuality.py +0 -0
  39. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/decoherence_free.py +0 -0
  40. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/decomposition.py +0 -0
  41. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/discrimination.py +0 -0
  42. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/distillation.py +0 -0
  43. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/dynamical_decoupling.py +0 -0
  44. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/entanglement_growth.py +0 -0
  45. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/entanglement_negativity.py +0 -0
  46. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/error_correction.py +0 -0
  47. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/error_detection.py +0 -0
  48. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/geometric_phase.py +0 -0
  49. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/grover.py +0 -0
  50. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/grover_optimize.py +0 -0
  51. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/hamiltonian_simulation.py +0 -0
  52. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/hhl.py +0 -0
  53. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/holevo.py +0 -0
  54. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/hubbard.py +0 -0
  55. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/imaginary_time.py +0 -0
  56. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/jordan_wigner.py +0 -0
  57. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/kitaev_chain.py +0 -0
  58. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/krylov.py +0 -0
  59. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/level_statistics.py +0 -0
  60. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/loschmidt.py +0 -0
  61. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/loss_robustness.py +0 -0
  62. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/magic_measures.py +0 -0
  63. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/magic_state.py +0 -0
  64. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/many_body_correlations.py +0 -0
  65. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/maxcut.py +0 -0
  66. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/mbqc.py +0 -0
  67. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/metrology.py +0 -0
  68. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/multicontrol.py +0 -0
  69. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/nonlocality.py +0 -0
  70. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/oracles.py +0 -0
  71. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/otoc.py +0 -0
  72. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/perfect_code.py +0 -0
  73. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/petz.py +0 -0
  74. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/phase_estimation.py +0 -0
  75. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/protocols.py +0 -0
  76. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/qec_noise.py +0 -0
  77. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/qec_threshold.py +0 -0
  78. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/qft.py +0 -0
  79. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/quantum_counting.py +0 -0
  80. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/quantum_phase_transition.py +0 -0
  81. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/quantum_walk.py +0 -0
  82. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/randomized_benchmarking.py +0 -0
  83. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/sat_solver.py +0 -0
  84. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/schmidt.py +0 -0
  85. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/shor.py +0 -0
  86. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/simon.py +0 -0
  87. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/spectroscopy.py +0 -0
  88. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/spin_squeezing.py +0 -0
  89. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/ssh_model.py +0 -0
  90. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/state_preparation.py +0 -0
  91. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/steane_code.py +0 -0
  92. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/swap_test.py +0 -0
  93. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/thermal.py +0 -0
  94. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/uncertainty.py +0 -0
  95. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/vqe_solver.py +0 -0
  96. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/weak_values.py +0 -0
  97. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/algorithms/zeno.py +0 -0
  98. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/backends/__init__.py +0 -0
  99. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/backends/_cuda_dll.py +0 -0
  100. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/backends/aws_backend.py +0 -0
  101. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/backends/base.py +0 -0
  102. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/backends/base_backend.py +0 -0
  103. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/backends/cupy_backend.py +0 -0
  104. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/backends/gpu_backend.py +0 -0
  105. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/backends/ibm_backend.py +0 -0
  106. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/backends/numba_backend.py +0 -0
  107. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/backends/numpy_backend.py +0 -0
  108. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/backends/sparse_backend.py +0 -0
  109. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/benchmarks/__init__.py +0 -0
  110. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/benchmarks/optimization_benchmarks.py +0 -0
  111. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/benchmarks/qml_benchmarks.py +0 -0
  112. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/benchmarks/report_generator.py +0 -0
  113. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/benchmarks/scalability_benchmarks.py +0 -0
  114. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/core/__init__.py +0 -0
  115. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/core/circuit.py +0 -0
  116. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/core/gates.py +0 -0
  117. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/core/quantum_state.py +0 -0
  118. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/debugger/__init__.py +0 -0
  119. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/debugger/breakpoints.py +0 -0
  120. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/debugger/debugger.py +0 -0
  121. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/debugger/inspector.py +0 -0
  122. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/density_matrix.py +0 -0
  123. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/gpu/__init__.py +0 -0
  124. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/gpu/memory.py +0 -0
  125. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/gpu/mixed_precision.py +0 -0
  126. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/gpu/multi_gpu.py +0 -0
  127. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/integrations/__init__.py +0 -0
  128. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/integrations/cirq_adapter.py +0 -0
  129. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/integrations/cirq_bridge.py +0 -0
  130. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/integrations/pennylane_bridge.py +0 -0
  131. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/integrations/qiskit_adapter.py +0 -0
  132. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/integrations/qiskit_bridge.py +0 -0
  133. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/mitigation/__init__.py +0 -0
  134. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/mitigation/core/__init__.py +0 -0
  135. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/mitigation/core/extrapolator.py +0 -0
  136. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/mitigation/core/folder.py +0 -0
  137. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/mitigation/zne.py +0 -0
  138. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/noise/__init__.py +0 -0
  139. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/noise/composite_noise.py +0 -0
  140. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/noise/hardware_profiles.py +0 -0
  141. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/noise/noise_helpers.py +0 -0
  142. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/noise/stochastic_sampler.py +0 -0
  143. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/optimization/__init__.py +0 -0
  144. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/optimization/circuit_compiler.py +0 -0
  145. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/optimization/gate_reduction.py +0 -0
  146. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/optimization/optimization_passes.py +0 -0
  147. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/optimization/transpiler.py +0 -0
  148. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/parallel/__init__.py +0 -0
  149. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/parallel/executor.py +0 -0
  150. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/profiler/__init__.py +0 -0
  151. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/profiler/metrics.py +0 -0
  152. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/profiler/profiler.py +0 -0
  153. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/__init__.py +0 -0
  154. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/advanced/__init__.py +0 -0
  155. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/advanced/ansatz_analysis.py +0 -0
  156. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/advanced/autoencoder.py +0 -0
  157. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/advanced/data_reuploading.py +0 -0
  158. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/advanced/qcnn.py +0 -0
  159. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/advanced/vqc.py +0 -0
  160. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/algorithms/__init__.py +0 -0
  161. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/algorithms/actor_critic.py +0 -0
  162. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/algorithms/dqn.py +0 -0
  163. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/algorithms/policy_gradient.py +0 -0
  164. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/algorithms/qaoa.py +0 -0
  165. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/algorithms/qgan.py +0 -0
  166. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/algorithms/qrl.py +0 -0
  167. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/algorithms/vqd.py +0 -0
  168. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/algorithms/vqe.py +0 -0
  169. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/ansatz/__init__.py +0 -0
  170. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/ansatz/excitation_preserving.py +0 -0
  171. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/ansatz/real_amplitudes.py +0 -0
  172. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/ansatz/strongly_entangling.py +0 -0
  173. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/ansatz/two_local.py +0 -0
  174. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/automl/__init__.py +0 -0
  175. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/automl/ansatz_selector.py +0 -0
  176. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/automl/architecture_search.py +0 -0
  177. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/automl/auto_qnn.py +0 -0
  178. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/automl/hyperparameter_tuner.py +0 -0
  179. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/data/__init__.py +0 -0
  180. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/data/dataset.py +0 -0
  181. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/data/feature_maps.py +0 -0
  182. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/error_mitigation/__init__.py +0 -0
  183. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/error_mitigation/zne.py +0 -0
  184. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/gates/__init__.py +0 -0
  185. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/gates/parameterized.py +0 -0
  186. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/hamiltonians/__init__.py +0 -0
  187. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/hamiltonians/molecular.py +0 -0
  188. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/hybrid/__init__.py +0 -0
  189. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/hybrid/layers.py +0 -0
  190. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/hybrid/pytorch_integration.py +0 -0
  191. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/hybrid/tensorflow_integration.py +0 -0
  192. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/kernels/__init__.py +0 -0
  193. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/kernels/alignment.py +0 -0
  194. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/kernels/qsvm.py +0 -0
  195. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/kernels/quantum_kernel.py +0 -0
  196. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/mitigation/__init__.py +0 -0
  197. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/mitigation/cdr.py +0 -0
  198. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/mitigation/error_characterization.py +0 -0
  199. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/mitigation/noise_models.py +0 -0
  200. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/mitigation/pec.py +0 -0
  201. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/optimizers/__init__.py +0 -0
  202. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/optimizers/advanced.py +0 -0
  203. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/optimizers/basics.py +0 -0
  204. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/optimizers/spsa.py +0 -0
  205. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/qnn/__init__.py +0 -0
  206. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/qnn/base.py +0 -0
  207. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/qnn/encoding.py +0 -0
  208. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/qnn/losses.py +0 -0
  209. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/qnn/network.py +0 -0
  210. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/qnn/variational.py +0 -0
  211. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/training/__init__.py +0 -0
  212. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/transfer/__init__.py +0 -0
  213. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/transfer/fine_tuning.py +0 -0
  214. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/transfer/model_zoo.py +0 -0
  215. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/transfer/pretrained.py +0 -0
  216. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/transfer/serialization.py +0 -0
  217. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/utils/__init__.py +0 -0
  218. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/qml/utils/gradients.py +0 -0
  219. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/stabilizer.py +0 -0
  220. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/tomography.py +0 -0
  221. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/visualization/__init__.py +0 -0
  222. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/visualization/bloch_sphere.py +0 -0
  223. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger/visualization/state_viz.py +0 -0
  224. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger.egg-info/dependency_links.txt +0 -0
  225. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger.egg-info/requires.txt +0 -0
  226. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/quantum_debugger.egg-info/top_level.txt +0 -0
  227. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/requirements.txt +0 -0
  228. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/setup.cfg +0 -0
  229. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/setup.py +0 -0
  230. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/__init__.py +0 -0
  231. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/cirq/__init__.py +0 -0
  232. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/cirq/test_cirq_advanced.py +0 -0
  233. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/cirq/test_cirq_edge_cases.py +0 -0
  234. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/cirq/test_cirq_integration.py +0 -0
  235. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/conftest.py +0 -0
  236. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/integration/__init__.py +0 -0
  237. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/integration/test_integration.py +0 -0
  238. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/integration/test_qiskit_integration.py +0 -0
  239. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/qml/__init__.py +0 -0
  240. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/qml/test_actor_critic.py +0 -0
  241. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/qml/test_advanced_algorithms.py +0 -0
  242. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/qml/test_advanced_optimizers.py +0 -0
  243. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/qml/test_advanced_qml.py +0 -0
  244. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/qml/test_ansatz_library.py +0 -0
  245. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/qml/test_automl.py +0 -0
  246. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/qml/test_dataset.py +0 -0
  247. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/qml/test_dqn.py +0 -0
  248. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/qml/test_edge_cases.py +0 -0
  249. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/qml/test_hamiltonians.py +0 -0
  250. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/qml/test_hybrid.py +0 -0
  251. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/qml/test_kernels.py +0 -0
  252. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/qml/test_mitigation.py +0 -0
  253. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/qml/test_policy_gradient.py +0 -0
  254. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/qml/test_qaoa.py +0 -0
  255. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/qml/test_qml_parameterized_gates.py +0 -0
  256. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/qml/test_qnn.py +0 -0
  257. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/qml/test_spsa.py +0 -0
  258. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/qml/test_transfer.py +0 -0
  259. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/qml/test_transfer_extended.py +0 -0
  260. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/qml/test_vqd.py +0 -0
  261. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/qml/test_vqe.py +0 -0
  262. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/qml/test_zne.py +0 -0
  263. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_adiabatic.py +0 -0
  264. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_algorithms.py +0 -0
  265. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_arithmetic.py +0 -0
  266. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_backends.py +0 -0
  267. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_bb84.py +0 -0
  268. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_bell_test.py +0 -0
  269. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_benchmarks.py +0 -0
  270. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_channel_capacity.py +0 -0
  271. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_classical_shadows.py +0 -0
  272. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_cloning.py +0 -0
  273. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_contextuality.py +0 -0
  274. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_decoherence_free.py +0 -0
  275. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_decomposition.py +0 -0
  276. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_density_matrix.py +0 -0
  277. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_discrimination.py +0 -0
  278. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_distillation.py +0 -0
  279. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_dynamical_decoupling.py +0 -0
  280. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_entanglement_growth.py +0 -0
  281. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_error_correction.py +0 -0
  282. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_error_detection.py +0 -0
  283. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_geometric_phase.py +0 -0
  284. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_grover_optimize.py +0 -0
  285. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_hamiltonian_simulation.py +0 -0
  286. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_holevo.py +0 -0
  287. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_hubbard.py +0 -0
  288. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_imaginary_time.py +0 -0
  289. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_integrations.py +0 -0
  290. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_jordan_wigner.py +0 -0
  291. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_kitaev_chain.py +0 -0
  292. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_krylov.py +0 -0
  293. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_level_statistics.py +0 -0
  294. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_loschmidt.py +0 -0
  295. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_loss_robustness.py +0 -0
  296. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_magic_measures.py +0 -0
  297. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_magic_state.py +0 -0
  298. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_many_body_extra.py +0 -0
  299. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_maxcut.py +0 -0
  300. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_mbqc.py +0 -0
  301. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_metrology.py +0 -0
  302. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_multicontrol.py +0 -0
  303. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_nonlocality.py +0 -0
  304. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_optimization.py +0 -0
  305. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_otoc.py +0 -0
  306. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_pauli_decompose.py +0 -0
  307. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_perfect_code.py +0 -0
  308. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_petz.py +0 -0
  309. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_protocols_shor.py +0 -0
  310. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_qec_noise.py +0 -0
  311. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_qec_threshold.py +0 -0
  312. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_randomized_benchmarking.py +0 -0
  313. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_sat_solver.py +0 -0
  314. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_schmidt.py +0 -0
  315. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_simon.py +0 -0
  316. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_spectroscopy.py +0 -0
  317. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_spin_squeezing.py +0 -0
  318. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_stabilizer.py +0 -0
  319. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_state_preparation.py +0 -0
  320. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_steane_code.py +0 -0
  321. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_thermal.py +0 -0
  322. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_tomography.py +0 -0
  323. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_trotter_scaling.py +0 -0
  324. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_uncertainty.py +0 -0
  325. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_vqe_solver.py +0 -0
  326. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_weak_values.py +0 -0
  327. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/test_zeno.py +0 -0
  328. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/unit/CONVERSION_TRACKER.py +0 -0
  329. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/unit/__init__.py +0 -0
  330. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/unit/test_advanced.py +0 -0
  331. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/unit/test_backend_comprehensive.py +0 -0
  332. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/unit/test_backend_integration.py +0 -0
  333. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/unit/test_backends.py +0 -0
  334. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/unit/test_backends_advanced.py +0 -0
  335. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/unit/test_backends_comprehensive.py +0 -0
  336. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/unit/test_backends_fast.py +0 -0
  337. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/unit/test_circuit_noise.py +0 -0
  338. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/unit/test_circuit_noise_advanced.py +0 -0
  339. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/unit/test_circuit_noise_unique.py +0 -0
  340. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/unit/test_compatibility.py +0 -0
  341. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/unit/test_comprehensive.py +0 -0
  342. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/unit/test_distribution.py +0 -0
  343. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/unit/test_docstrings.py +0 -0
  344. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/unit/test_error_handling.py +0 -0
  345. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/unit/test_extreme.py +0 -0
  346. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/unit/test_gpu_quick.py +0 -0
  347. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/unit/test_hardware_profiles_extended.py +0 -0
  348. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/unit/test_hardware_profiles_phase3.py +0 -0
  349. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/unit/test_mitigation_comprehensive.py +0 -0
  350. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/unit/test_mitigation_final.py +0 -0
  351. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/unit/test_mitigation_observables.py +0 -0
  352. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/unit/test_mitigation_zne.py +0 -0
  353. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/unit/test_noise_advanced.py +0 -0
  354. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/unit/test_noise_extreme.py +0 -0
  355. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/unit/test_noise_final.py +0 -0
  356. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/unit/test_noise_performance.py +0 -0
  357. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/unit/test_noise_quantum_info.py +0 -0
  358. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/unit/test_noise_ultimate.py +0 -0
  359. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/unit/test_parallel.py +0 -0
  360. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/unit/test_performance.py +0 -0
  361. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/unit/test_production.py +0 -0
  362. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/unit/test_qiskit_complex.py +0 -0
  363. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/unit/test_qiskit_extreme.py +0 -0
  364. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/unit/test_qiskit_ultra.py +0 -0
  365. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/unit/test_qml_advanced.py +0 -0
  366. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/unit/test_qml_comprehensive.py +0 -0
  367. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/unit/test_qml_memory.py +0 -0
  368. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/unit/test_qml_threading.py +0 -0
  369. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/unit/test_qml_tricky.py +0 -0
  370. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/unit/test_quickstart.py +0 -0
  371. {quantum_debugger-0.9.0 → quantum_debugger-1.0.0}/tests/unit/test_validation.py +0 -0
@@ -5,6 +5,172 @@ All notable changes to QuantumDebugger will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.0.0]
9
+
10
+ Theme: scale & tensor networks — breaking the exponential state-vector wall. The
11
+ headline is a full **matrix product state** engine (`quantum_debugger.mps.MPS`):
12
+ construction from a state vector or a `QuantumCircuit`, exact single-qubit and
13
+ SVD-truncated two-qubit gates (nearest-neighbour and long-range via SWAP networks),
14
+ and a complete `O(n·chi^2)` readout toolkit — expectation values, arbitrary
15
+ Pauli-string and Pauli-sum-Hamiltonian energies, correlations, entanglement entropy
16
+ across every bond, overlap/fidelity between states, and exact Born-rule sampling —
17
+ none of which ever forms the dense state. On top of it, TEBD gives real-time dynamics
18
+ and imaginary-time DMRG-style ground states. Every MPS operation is verified against
19
+ the state-vector simulator; the engine scales to 100-qubit GHZ states, 40-qubit
20
+ quenches, and 24-qubit ground states — moving the library from "≤25 qubits exactly"
21
+ to "hundreds of qubits when entanglement allows." (The major-version bump the
22
+ tensor-network capability earns.)
23
+
24
+ ### Added
25
+ - **MPS two-site expectation** (`MPS.two_site_expectation`) — the expectation of any
26
+ two-qubit operator (4x4) via the two-qubit reduced density matrix `Tr(O rho_ab)`,
27
+ matching the dense value and `<ZZ>` correlations — the primitive for bond energies.
28
+ - **MPS truncation error & normalization** (`MPS.truncation_error`, `MPS.normalize`) —
29
+ the weight lost when compressing to a target bond dimension (`1 - fidelity`, exactly
30
+ 0 for a GHZ at bond ≥ 2, decreasing as the bond grows) and in-place unit
31
+ normalization — the diagnostics that make bond-dimension choices principled.
32
+ - **MPS two-qubit correlations** (`MPS.two_qubit_rdm`, `MPS.mutual_information`,
33
+ `MPS.concurrence`) — the reduced density matrix of any qubit pair assembled from
34
+ their 16 two-qubit Pauli expectations (scalable, matching the dense partial trace),
35
+ and the pairwise mutual information and Wootters concurrence from it (a Bell pair
36
+ giving 2 bits and concurrence 1, a product pair giving 0).
37
+ - **MPS amplitudes & basis states** (`MPS.amplitude`, `MPS.probability`,
38
+ `MPS.from_bitstring`, `MPS.most_probable`) — the amplitude `<bits|psi>` of any
39
+ computational-basis string by contracting fixed-bit tensor slices (`O(n·chi^2)`,
40
+ matching the dense value, probabilities summing to 1), a basis-state constructor,
41
+ and the most-probable outcome from sampling (a GHZ returning `0000`/`1111` at
42
+ probability 0.5).
43
+ - **Heisenberg MPO** (`mpo.heisenberg_mpo`) — the bond-dimension-5 matrix product
44
+ operator for `H = J sum (XX + YY + ZZ)`, verified to contract to the exact dense
45
+ Heisenberg Hamiltonian.
46
+ - **MPS Bloch vectors & purity profile** (`MPS.bloch_vector`, `MPS.purity_profile`) —
47
+ each qubit's `(<X>,<Y>,<Z>)` and its purity `Tr(rho_i^2)` (a GHZ giving zero Bloch
48
+ vectors and 0.5 purity everywhere, a product state giving unit purity) — a local
49
+ read of how entangled each site is.
50
+ - **MPS structure factor & magnetization** (`MPS.structure_factor`,
51
+ `MPS.total_magnetization`, `MPS.schmidt_gap`) — the static structure factor
52
+ `S(k) = (1/n) sum e^{ik(i-j)} <O_i O_j>` (verified against the dense computation and
53
+ peaking at `S(0)=n` for a ferromagnet), the summed magnetization, and the
54
+ entanglement-spectrum Schmidt gap (an order parameter that closes at a transition).
55
+ - **Apply an MPO to an MPS** (`MPS.apply_mpo`, `MPS.expectation_mpo`) — compute
56
+ `H|psi>` by contracting a matrix product operator into the state (bond dimensions
57
+ multiply, optionally recompressed), verified to match the dense `H·psi`; plus a
58
+ convenience `expectation_mpo` matching `MPS.energy`.
59
+ - **MPS reduced density matrix & entanglement spectrum** (`MPS.single_qubit_rdm`,
60
+ `MPS.entanglement_spectrum`) — a qubit's reduced density matrix from its Pauli
61
+ expectations (scalable, matching the dense partial trace) and the full Schmidt
62
+ spectrum across any bond (a Bell cut giving `[0.707, 0.707]`, squares summing to 1).
63
+ - **Matrix Product Operators** (`quantum_debugger.mpo`: `tfim_mpo`, `mpo_expectation`,
64
+ `mpo_to_matrix`) — the operator analogue of an MPS: a Hamiltonian as a chain of
65
+ rank-4 tensors (the TFIM needs only bond dimension 3), so `<psi|H|psi>` on a large
66
+ MPS costs `O(n·chi^2·D^2)` with no dense operator. Verified: the MPO contracts to the
67
+ exact dense TFIM Hamiltonian, its expectation matches both the dense and the
68
+ `MPS.energy` value, and a 30-qubit GHZ gives the exact `-J(n-1)`.
69
+ - **MPS construction helpers** (`MPS.from_product`, `MPS.random`) — build a product
70
+ state from per-qubit amplitudes (bond dimension 1) or a reproducible random MPS at a
71
+ target bond dimension; verified normalized with the expected structure.
72
+ - **MPS linear algebra** (`MPS.add`, `MPS.compress`) — sum two MPS by the
73
+ direct-sum-of-bonds construction (matching the dense `(a+b)`), and recompress to a
74
+ smaller bond dimension (a GHZ compresses to bond 2 losslessly, fidelity 1).
75
+ - **MPS magnetization & correlation profiles** (`MPS.magnetization_profile`,
76
+ `MPS.correlation_profile`) — `<O_i>` on every site and the spatial correlation
77
+ function `<O_a(ref) O_b(j)>` by contraction; a GHZ gives zero magnetization and unit
78
+ correlation across the chain.
79
+ - **MPS energy variance** (`MPS.variance`) — `<H^2> - <H>^2` of a Pauli-sum
80
+ Hamiltonian, exactly 0 on an eigenstate and positive off it — the convergence check
81
+ for tensor-network ground-state methods.
82
+ - **MPS Renyi entanglement entropy** (`MPS.renyi_entropy`) — Renyi-`alpha` entropy
83
+ across any bond from the canonicalized Schmidt spectrum (`alpha=1` recovers von
84
+ Neumann, `alpha=2` the collision entropy), verified non-increasing in `alpha`.
85
+ - **MPS Hamiltonian energy** (`MPS.energy`) — evaluate `<psi|H|psi>` for any
86
+ Hamiltonian given as `(coefficient, pauli_string)` terms (the `pauli_decompose` /
87
+ VQE format) on a matrix product state, summing Pauli-string expectations by
88
+ contraction. Verified against dense for TFIM and a Pauli-decomposed Fermi-Hubbard
89
+ Hamiltonian, and a GHZ gives the exact `-J(n-1)` — connecting the chemistry/spin
90
+ Hamiltonians of 0.9 to the large-scale MPS engine.
91
+ - **MPS Pauli-string expectation** (`MPS.expectation_pauli`) — the expectation of any
92
+ multi-qubit Pauli observable `<psi|P|psi>` on a matrix product state by
93
+ `O(n·chi^3)` contraction. Verified against the dense value for all 256 Pauli strings
94
+ on 4 qubits, and a 20-qubit GHZ correctly returns `<X^20> = 1` (its stabilizer) —
95
+ measuring arbitrary observables on systems too large to store densely.
96
+ - **Circuit → MPS runner** (`MPS.from_circuit`) — run an existing `QuantumCircuit` on
97
+ the tensor-network engine: single-qubit gates applied exactly, two-qubit gates via
98
+ the long-range SWAP path (either control/target ordering handled by re-indexing the
99
+ 4x4 matrix), three-plus-qubit gates rejected with a clear message to decompose first.
100
+ Verified to reproduce the state-vector result exactly on mixed random circuits and
101
+ reversed-control CNOTs, with a GHZ circuit staying at bond dimension 2. (Note: the
102
+ scale ceiling here is the `QuantumCircuit` object itself, which allocates a dense
103
+ state; to exceed it, drive the `MPS` directly.)
104
+ - **MPS long-range two-qubit gates** (`MPS.apply_two_long_range`) — apply a two-qubit
105
+ gate to *any* pair of qubits (not just neighbours) via a nearest-neighbour SWAP
106
+ ladder: swap the qubits together, apply the gate, swap back. Verified against the
107
+ state-vector simulator for all pairs and asymmetric random unitaries, correctly
108
+ delegating for adjacent qubits, and building a long-range Bell pair between qubits 0
109
+ and 9 — so arbitrary-connectivity circuits run on the MPS engine.
110
+ - **MPS overlap & fidelity** (`MPS.overlap`, `MPS.fidelity`) — the inner product
111
+ `<phi|psi>` of two matrix product states by the double-layer `O(n·chi^3)`
112
+ contraction, and the state fidelity from it. Verified to match the dense inner
113
+ product exactly, self-fidelity is 1 (including a 40-qubit GHZ), and orthogonal states
114
+ give zero overlap — comparing tensor-network states without ever forming them
115
+ densely.
116
+ - **MPS entanglement entropy** (`MPS.bond_entropies`, `MPS.entanglement_entropy`) —
117
+ the entanglement entropy across every bond, read from the Schmidt spectrum by
118
+ canonicalizing the network (right-to-left then left-to-right SVD sweeps), scaling to
119
+ large `n` with no dense state. Verified to match the dense density-matrix
120
+ entanglement entropy exactly at every cut; a product state gives 0, a GHZ exactly 1
121
+ bit across every bond — including a 60-qubit GHZ whose full entropy profile is
122
+ computed instantly.
123
+ - **MPS measurement sampling** (`MPS.sample`) — draw computational-basis shots from a
124
+ matrix product state by exact sequential conditional sampling with precomputed right
125
+ environments, `O(shots·n·chi^2)`, never forming the dense state. Verified: the
126
+ empirical distribution matches the dense Born rule to within shot noise on random
127
+ states, Bell/GHZ give only their correlated outcomes, a product state is
128
+ deterministic, and shot counts are conserved — measurement statistics from systems
129
+ far too large to store as a state vector.
130
+ - **Imaginary-time TEBD ground states** (`algorithms.imaginary_tebd_ground_state`,
131
+ `tfim_mps_energy`) — DMRG-style ground-state search on the MPS: apply imaginary-time
132
+ bond gates `e^{-h dtau}` (cooling), renormalize, and settle into the ground state.
133
+ Verified against exact diagonalization (error < 5e-3 for n = 4/6/8, improving with
134
+ finer steps), respects the variational lower bound, and finds the ground state of a
135
+ **24-qubit** chain that no dense diagonalizer could reach — with the energy per site
136
+ extensive across sizes. `tfim_mps_energy` reads the TFIM energy off any MPS by
137
+ contraction, matching the dense value exactly.
138
+ - **TEBD time evolution** (`algorithms.tebd_tfim`, `tebd_magnetization`,
139
+ `tfim_bond_gate`) — real-time many-body dynamics on the MPS: Trotterize
140
+ `e^{-iHt}` into two-site gates, apply them even-then-odd, and let the SVD truncation
141
+ bound the bond dimension. Verified to match exact state-vector evolution to fidelity
142
+ > 0.9999 on small TFIM chains (finer Trotter steps improving it), runs a 30-qubit
143
+ quench beyond the dense simulator's reach, keeps the bond capped at `max_bond`, and
144
+ reproduces the physics — a vanishing field freezes the magnetization (`|0...0>` is an
145
+ eigenstate) while a transverse field tilts the spins.
146
+ - **Matrix Product State simulator** (`quantum_debugger.mps.MPS`) — the 1.0 flagship:
147
+ a tensor-network engine that breaks the exponential state-vector wall for
148
+ low-entanglement states. Represents an n-qubit state as a chain of rank-3 tensors
149
+ with bond dimension `chi` (`O(n·chi^2)` memory instead of `2^n`), applies
150
+ single-qubit gates exactly and neighbouring two-qubit gates by SVD with truncation
151
+ to `max_bond` (the DMRG/TEBD approximation), and computes norms, expectation values,
152
+ and two-point correlations by `O(n·chi^3)` contraction — never forming the dense
153
+ state. Verified: exact state-vector roundtrip, single- and two-qubit gates
154
+ (including asymmetric random unitaries) match the state-vector simulator to 1e-10,
155
+ bond dimensions correctly detect structure (product → 1, GHZ → 2), and a **100-qubit
156
+ GHZ** builds instantly at bond dimension 2 with correct `<Z0 Z99> = 1`, `<X0> = 0` —
157
+ a `2^100`-amplitude state held in a handful of small tensors.
158
+
159
+ ## [0.9.1]
160
+
161
+ Theme: correctness patch for the depolarizing noise channel.
162
+
163
+ ### Fixed
164
+ - **`DepolarizingNoise.get_kraus_operators()`** now implements the same channel as
165
+ `DepolarizingNoise.apply()` and the class docstring — the Pauli-error convention
166
+ `ρ → (1−p)ρ + (p/3)(XρX + YρY + ZρZ)`, giving `K₀ = √(1−p)·I` and `K₁₋₃ = √(p/3)·{X, Y, Z}`.
167
+ It previously used a `√(p/4)` weighting (the uniform `ρ → (1−p)ρ + pI/2` convention), which
168
+ agrees with `apply()` only under the substitution `p → 4p/3`. Because
169
+ `StochasticNoiseSampler` consumes the Kraus path, Monte-Carlo–sampled depolarizing noise was
170
+ silently `4/3×` too strong for a given `p`. The operators remain trace-preserving
171
+ (`Σ Kᵢ†Kᵢ = I`). Added channel-equivalence, trace-preservation, edge-case, and sampler
172
+ regression tests. (Present in 0.8.0 and 0.9.0; fixed here.)
173
+
8
174
  ## [0.9.0]
9
175
 
10
176
  Theme: quantum chemistry, many-body physics & advanced simulation. Fermionic systems
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: quantum-debugger
3
- Version: 0.9.0
3
+ Version: 1.0.0
4
4
  Summary: A quantum simulation and debugging toolkit: state-vector, Clifford/stabilizer, and density-matrix (open-systems) engines, with a broad algorithm library, error correction under noise, quantum machine learning, GPU acceleration, 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
@@ -84,7 +84,28 @@ Dynamic: summary
84
84
  [![Python](https://img.shields.io/badge/python-3.9%2B-blue)](https://python.org)
85
85
  [![License](https://img.shields.io/badge/license-MIT-green)](LICENSE)
86
86
 
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.
87
+ ## What's New in v1.0.0
88
+
89
+ Scale & tensor networks — **breaking the exponential state-vector wall**:
90
+
91
+ - **Matrix Product State Simulator (`MPS`)** — `O(n·χ²)` memory instead of `2ⁿ`. Represents large, lightly-entangled quantum systems (e.g. **100-qubit GHZ states**, area-law ground states) with exact single-qubit gates, SVD-truncated two-qubit gates, and long-range connectivity via SWAP networks.
92
+ - **Matrix Product Operators (`MPO`)** — compact tensor chains for TFIM (`tfim_mpo`) and Heisenberg (`heisenberg_mpo`) models; evaluate `<ψ|H|ψ>` in `O(n·χ²·D²)` time without dense matrices.
93
+ - **TEBD Real-Time Dynamics** (`tebd_tfim`, `tebd_magnetization`) — Trotterized time evolution on the MPS engine with automatic SVD bond truncation.
94
+ - **Imaginary-Time DMRG-Style Ground States** (`imaginary_tebd_ground_state`) — cool MPS into true ground states on 24+ qubit chains unreachable by dense diagonalizers.
95
+ - **Arbitrary Pauli & Energy Readout** — `MPS.expectation_pauli` and `MPS.energy` evaluate arbitrary Pauli strings and Hamiltonians by tensor contraction.
96
+ - **Born-Rule Measurement Sampling** (`MPS.sample`) — sequential conditional sampling with precomputed environments, drawing shots directly from the MPS.
97
+ - **Circuit-to-MPS Converter** (`MPS.from_circuit`) — execute `QuantumCircuit` instances directly on the tensor-network engine.
98
+
99
+ See the [Matrix Product States Guide](docs/mps_guide.md) and [CHANGELOG.md](CHANGELOG.md).
100
+
101
+ ## What's New in v0.9.1
102
+
103
+ Correctness patch: **`DepolarizingNoise.get_kraus_operators()`** now implements the same
104
+ channel as `apply()` and the class docstring — the Pauli-error convention
105
+ `ρ → (1−p)ρ + (p/3)(XρX + YρY + ZρZ)` (`K₀ = √(1−p)·I`, `K₁₋₃ = √(p/3)·{X, Y, Z}`). The old
106
+ `√(p/4)` weighting made `StochasticNoiseSampler`'s Monte-Carlo depolarizing noise `4/3×` too
107
+ strong for a given `p`. Trace preservation is unchanged; channel-equivalence and sampler
108
+ regression tests added. See [CHANGELOG.md](CHANGELOG.md).
88
109
 
89
110
  ## What's New in v0.9.0
90
111
 
@@ -490,5 +511,5 @@ If you use quantum-debugger in your research, please cite:
490
511
 
491
512
  ---
492
513
 
493
- **Version:** 0.9.0 (latest on PyPI) · 0.8.0, 0.7.1 (previous)
494
- **Last Updated:** August 2026
514
+ **Version:** 1.0.0 (latest on PyPI) · 0.9.1, 0.9.0, 0.8.0 (previous)
515
+ **Last Updated:** September 2026
@@ -9,7 +9,28 @@
9
9
  [![Python](https://img.shields.io/badge/python-3.9%2B-blue)](https://python.org)
10
10
  [![License](https://img.shields.io/badge/license-MIT-green)](LICENSE)
11
11
 
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.
12
+ ## What's New in v1.0.0
13
+
14
+ Scale & tensor networks — **breaking the exponential state-vector wall**:
15
+
16
+ - **Matrix Product State Simulator (`MPS`)** — `O(n·χ²)` memory instead of `2ⁿ`. Represents large, lightly-entangled quantum systems (e.g. **100-qubit GHZ states**, area-law ground states) with exact single-qubit gates, SVD-truncated two-qubit gates, and long-range connectivity via SWAP networks.
17
+ - **Matrix Product Operators (`MPO`)** — compact tensor chains for TFIM (`tfim_mpo`) and Heisenberg (`heisenberg_mpo`) models; evaluate `<ψ|H|ψ>` in `O(n·χ²·D²)` time without dense matrices.
18
+ - **TEBD Real-Time Dynamics** (`tebd_tfim`, `tebd_magnetization`) — Trotterized time evolution on the MPS engine with automatic SVD bond truncation.
19
+ - **Imaginary-Time DMRG-Style Ground States** (`imaginary_tebd_ground_state`) — cool MPS into true ground states on 24+ qubit chains unreachable by dense diagonalizers.
20
+ - **Arbitrary Pauli & Energy Readout** — `MPS.expectation_pauli` and `MPS.energy` evaluate arbitrary Pauli strings and Hamiltonians by tensor contraction.
21
+ - **Born-Rule Measurement Sampling** (`MPS.sample`) — sequential conditional sampling with precomputed environments, drawing shots directly from the MPS.
22
+ - **Circuit-to-MPS Converter** (`MPS.from_circuit`) — execute `QuantumCircuit` instances directly on the tensor-network engine.
23
+
24
+ See the [Matrix Product States Guide](docs/mps_guide.md) and [CHANGELOG.md](CHANGELOG.md).
25
+
26
+ ## What's New in v0.9.1
27
+
28
+ Correctness patch: **`DepolarizingNoise.get_kraus_operators()`** now implements the same
29
+ channel as `apply()` and the class docstring — the Pauli-error convention
30
+ `ρ → (1−p)ρ + (p/3)(XρX + YρY + ZρZ)` (`K₀ = √(1−p)·I`, `K₁₋₃ = √(p/3)·{X, Y, Z}`). The old
31
+ `√(p/4)` weighting made `StochasticNoiseSampler`'s Monte-Carlo depolarizing noise `4/3×` too
32
+ strong for a given `p`. Trace preservation is unchanged; channel-equivalence and sampler
33
+ regression tests added. See [CHANGELOG.md](CHANGELOG.md).
13
34
 
14
35
  ## What's New in v0.9.0
15
36
 
@@ -415,5 +436,5 @@ If you use quantum-debugger in your research, please cite:
415
436
 
416
437
  ---
417
438
 
418
- **Version:** 0.9.0 (latest on PyPI) · 0.8.0, 0.7.1 (previous)
419
- **Last Updated:** August 2026
439
+ **Version:** 1.0.0 (latest on PyPI) · 0.9.1, 0.9.0, 0.8.0 (previous)
440
+ **Last Updated:** September 2026
@@ -13,7 +13,7 @@ Features:
13
13
  - Hardware profile support
14
14
  """
15
15
 
16
- __version__ = "0.9.0"
16
+ __version__ = "1.0.0"
17
17
  __author__ = "Raunak Kumar Gupta"
18
18
  __license__ = "MIT"
19
19
 
@@ -58,6 +58,9 @@ from .mitigation import (
58
58
  adaptive_fold,
59
59
  )
60
60
 
61
+ # Tensor Networks / Matrix Product States (v1.0.0)
62
+ from .mps import MPS
63
+
61
64
  # Optional integrations
62
65
  try:
63
66
  from .integrations import QiskitAdapter
@@ -79,6 +82,8 @@ __all__ = [
79
82
  "CircuitMetrics",
80
83
  "StateVisualizer",
81
84
  "BlochSphere",
85
+ # Tensor Networks (v1.0.0)
86
+ "MPS",
82
87
  # Noise Models (v0.3.0)
83
88
  "DepolarizingNoise",
84
89
  "AmplitudeDamping",
@@ -208,6 +208,13 @@ from .schmidt import (
208
208
  truncation_fidelity,
209
209
  area_law_compressibility,
210
210
  )
211
+ from .tebd import (
212
+ tfim_bond_gate,
213
+ tebd_tfim,
214
+ tebd_magnetization,
215
+ tfim_mps_energy,
216
+ imaginary_tebd_ground_state,
217
+ )
211
218
  from .ssh_model import (
212
219
  ssh_hamiltonian,
213
220
  ssh_winding_number,
@@ -440,6 +447,11 @@ __all__ = [
440
447
  "schmidt_decomposition",
441
448
  "truncation_fidelity",
442
449
  "area_law_compressibility",
450
+ "tfim_bond_gate",
451
+ "tebd_tfim",
452
+ "tebd_magnetization",
453
+ "tfim_mps_energy",
454
+ "imaginary_tebd_ground_state",
443
455
  # SSH topological insulator
444
456
  "ssh_hamiltonian",
445
457
  "ssh_winding_number",
@@ -0,0 +1,141 @@
1
+ """
2
+ TEBD -- Time-Evolving Block Decimation (dynamics on a matrix product state)
3
+
4
+ Real-time evolution of a many-body state under a nearest-neighbour Hamiltonian, done
5
+ directly on a matrix product state. Trotterize ``e^{-i H t}`` into two-site gates
6
+ ``e^{-i h_{j,j+1} dt}``, apply them to the MPS (even bonds, then odd bonds), and let
7
+ the built-in SVD truncation keep the bond dimension bounded. As long as the state
8
+ stays lightly entangled, this simulates the dynamics of far more qubits than the dense
9
+ state-vector engine can hold.
10
+
11
+ This module provides TEBD for the transverse-field Ising model; the same pattern works
12
+ for any nearest-neighbour Hamiltonian by supplying its two-site gates.
13
+ """
14
+
15
+ import numpy as np
16
+ from scipy.linalg import expm
17
+
18
+ from ..mps import MPS
19
+
20
+ _X = np.array([[0, 1], [1, 0]], dtype=complex)
21
+ _Z = np.array([[1, 0], [0, -1]], dtype=complex)
22
+ _I = np.eye(2, dtype=complex)
23
+
24
+
25
+ def tfim_bond_gate(n: int, i: int, dt: float, j_coupling: float, field: float) -> np.ndarray:
26
+ """
27
+ Two-site Trotter gate ``exp(-i h_{i,i+1} dt)`` for the transverse-field Ising model
28
+ ``H = -J sum Z Z - h sum X`` on a chain of ``n`` sites. The single-site field is
29
+ split evenly between the bonds it belongs to (full weight at the two chain ends).
30
+ """
31
+ hx_i = field * (0.5 if i > 0 else 1.0)
32
+ hx_j = field * (0.5 if i < n - 2 else 1.0)
33
+ h_local = (
34
+ -j_coupling * np.kron(_Z, _Z)
35
+ - hx_i * np.kron(_I, _X)
36
+ - hx_j * np.kron(_X, _I)
37
+ )
38
+ return expm(-1j * h_local * dt)
39
+
40
+
41
+ def tebd_tfim(n: int, time: float, steps: int = 100, j_coupling: float = 1.0,
42
+ field: float = 1.0, max_bond: int = 16, initial: "MPS" = None) -> "MPS":
43
+ """
44
+ Evolve a TFIM chain of ``n`` sites for total ``time`` with ``steps`` Trotter steps,
45
+ on an MPS truncated to ``max_bond``. Starts from ``|0...0>`` unless an ``initial``
46
+ MPS is supplied. Returns the evolved MPS.
47
+ """
48
+ mps = initial if initial is not None else MPS.zero_state(n, max_bond=max_bond)
49
+ mps.max_bond = max_bond
50
+ dt = time / steps
51
+ even = [tfim_bond_gate(n, i, dt, j_coupling, field) for i in range(0, n - 1, 2)]
52
+ odd = [tfim_bond_gate(n, i, dt, j_coupling, field) for i in range(1, n - 1, 2)]
53
+ for _ in range(steps):
54
+ for idx, i in enumerate(range(0, n - 1, 2)):
55
+ mps.apply_two(even[idx], i)
56
+ for idx, i in enumerate(range(1, n - 1, 2)):
57
+ mps.apply_two(odd[idx], i)
58
+ return mps
59
+
60
+
61
+ def tfim_mps_energy(mps: "MPS", j_coupling: float = 1.0, field: float = 1.0) -> float:
62
+ """
63
+ Energy ``<H>`` of the transverse-field Ising Hamiltonian
64
+ ``H = -J sum Z Z - h sum X`` for an MPS, from its bond correlations and site
65
+ expectations (contraction, no dense state).
66
+ """
67
+ n = mps.n
68
+ energy = 0.0
69
+ for i in range(n - 1):
70
+ energy += -j_coupling * mps.correlation(_Z, i, _Z, i + 1)
71
+ for i in range(n):
72
+ energy += -field * mps.expectation(_X, i)
73
+ return float(energy)
74
+
75
+
76
+ def _imag_bond_gate(n, i, dtau, j_coupling, field):
77
+ hx_i = field * (0.5 if i > 0 else 1.0)
78
+ hx_j = field * (0.5 if i < n - 2 else 1.0)
79
+ h_local = (
80
+ -j_coupling * np.kron(_Z, _Z)
81
+ - hx_i * np.kron(_I, _X)
82
+ - hx_j * np.kron(_X, _I)
83
+ )
84
+ return expm(-h_local * dtau) # imaginary time -> real exponential (cooling)
85
+
86
+
87
+ def imaginary_tebd_ground_state(n: int, j_coupling: float = 1.0, field: float = 1.0,
88
+ dtau: float = 0.05, steps: int = 300,
89
+ max_bond: int = 16) -> dict:
90
+ """
91
+ Find the TFIM ground state of an ``n``-site chain by imaginary-time TEBD -- apply
92
+ ``e^{-h_{j,j+1} dtau}`` bond gates (cooling), renormalizing each step, until the
93
+ state settles into the ground state. Scales to chains far beyond the dense
94
+ simulator.
95
+
96
+ Returns dict with ``energy`` (variational ground energy), ``bond`` (bond dimension
97
+ reached), and -- when ``n`` is small enough to diagonalize -- ``exact_energy`` and
98
+ ``error``.
99
+ """
100
+ from ..core.gates import GateLibrary
101
+
102
+ mps = MPS.zero_state(n, max_bond=max_bond)
103
+ for q in range(n): # start from |+...+> for good ground-state overlap
104
+ mps.apply_single(GateLibrary.H, q)
105
+
106
+ for _ in range(steps):
107
+ for i in range(0, n - 1, 2):
108
+ mps.apply_two(_imag_bond_gate(n, i, dtau, j_coupling, field), i)
109
+ for i in range(1, n - 1, 2):
110
+ mps.apply_two(_imag_bond_gate(n, i, dtau, j_coupling, field), i)
111
+ norm = mps.norm()
112
+ mps.tensors[0] = mps.tensors[0] / norm
113
+
114
+ energy = tfim_mps_energy(mps, j_coupling, field)
115
+ result = {"energy": energy, "bond": mps.max_bond_dimension()}
116
+ if n <= 12:
117
+ from .hamiltonian_simulation import hamiltonian_matrix
118
+ from .vqe_solver import tfim_hamiltonian
119
+
120
+ H = hamiltonian_matrix(tfim_hamiltonian(n, field, j_coupling), n)
121
+ exact = float(np.linalg.eigvalsh(H).real.min())
122
+ result["exact_energy"] = exact
123
+ result["error"] = abs(energy - exact)
124
+ return result
125
+
126
+
127
+ def tebd_magnetization(n: int, time: float, steps: int = 100, j_coupling: float = 1.0,
128
+ field: float = 1.0, max_bond: int = 16) -> dict:
129
+ """
130
+ Quench a TFIM chain from the all-up state and read out the transverse magnetization.
131
+
132
+ Returns dict with ``z_profile`` (``<Z_i>`` on each site), ``mean_z``, and
133
+ ``max_bond`` (the bond dimension reached -- the cost of the entanglement generated).
134
+ """
135
+ mps = tebd_tfim(n, time, steps, j_coupling, field, max_bond)
136
+ z_profile = [mps.expectation(_Z, q) for q in range(n)]
137
+ return {
138
+ "z_profile": z_profile,
139
+ "mean_z": float(np.mean(z_profile)),
140
+ "max_bond": mps.max_bond_dimension(),
141
+ }
@@ -0,0 +1,97 @@
1
+ """
2
+ Matrix Product Operators (MPO)
3
+
4
+ The operator analogue of a matrix product state: a many-body operator ``H`` written as
5
+ a chain of rank-4 tensors ``W[i]`` of shape ``(D_left, 2, 2, D_right)`` (bond, physical
6
+ out, physical in, bond). Local Hamiltonians have a *small* MPO bond dimension -- the
7
+ transverse-field Ising model needs only 3 -- so ``<psi|H|psi>`` on a matrix product
8
+ state costs ``O(n * chi^2 * D^2)`` with no dense operator ever formed. MPOs are the
9
+ operator input to DMRG and MPS-based time evolution.
10
+ """
11
+
12
+ import numpy as np
13
+
14
+ _I = np.eye(2, dtype=complex)
15
+ _Z = np.array([[1, 0], [0, -1]], dtype=complex)
16
+ _X = np.array([[0, 1], [1, 0]], dtype=complex)
17
+
18
+
19
+ def tfim_mpo(n: int, j_coupling: float = 1.0, field: float = 1.0) -> list:
20
+ """
21
+ Bond-dimension-3 MPO for the transverse-field Ising Hamiltonian
22
+ ``H = -J sum Z Z - h sum X`` on ``n`` sites. Returns the list of ``W`` tensors.
23
+ """
24
+ W = np.zeros((3, 2, 2, 3), dtype=complex)
25
+ W[0, :, :, 0] = _I
26
+ W[1, :, :, 0] = _Z
27
+ W[2, :, :, 0] = -field * _X
28
+ W[2, :, :, 1] = -j_coupling * _Z
29
+ W[2, :, :, 2] = _I
30
+ tensors = []
31
+ for i in range(n):
32
+ if i == 0:
33
+ tensors.append(W[2:3, :, :, :]) # left boundary row
34
+ elif i == n - 1:
35
+ tensors.append(W[:, :, :, 0:1]) # right boundary column
36
+ else:
37
+ tensors.append(W)
38
+ return tensors
39
+
40
+
41
+ def heisenberg_mpo(n: int, j_coupling: float = 1.0) -> list:
42
+ """
43
+ Bond-dimension-5 MPO for the Heisenberg Hamiltonian
44
+ ``H = J sum (X X + Y Y + Z Z)`` on ``n`` sites.
45
+ """
46
+ Y = np.array([[0, -1j], [1j, 0]], dtype=complex)
47
+ W = np.zeros((5, 2, 2, 5), dtype=complex)
48
+ W[0, :, :, 0] = _I
49
+ W[4, :, :, 4] = _I
50
+ W[1, :, :, 0] = _X
51
+ W[2, :, :, 0] = Y
52
+ W[3, :, :, 0] = _Z
53
+ W[4, :, :, 1] = j_coupling * _X
54
+ W[4, :, :, 2] = j_coupling * Y
55
+ W[4, :, :, 3] = j_coupling * _Z
56
+ tensors = []
57
+ for i in range(n):
58
+ if i == 0:
59
+ tensors.append(W[4:5, :, :, :])
60
+ elif i == n - 1:
61
+ tensors.append(W[:, :, :, 0:1])
62
+ else:
63
+ tensors.append(W)
64
+ return tensors
65
+
66
+
67
+ def mpo_expectation(mps, mpo) -> float:
68
+ """
69
+ Expectation ``<psi|H|psi>`` of an MPO ``mpo`` for a matrix product state ``mps``, by
70
+ sweeping the three-layer (bra, operator, ket) contraction -- no dense operator.
71
+ """
72
+ E = np.ones((1, 1, 1), dtype=complex) # (bra bond, mpo bond, ket bond)
73
+ for A, W in zip(mps.tensors, mpo):
74
+ E = np.einsum("lmn,nSr->lmSr", E, A) # absorb ket tensor
75
+ E = np.einsum("lmSr,mSTw->lTrw", E, W) # apply operator tensor
76
+ E = np.einsum("lTrw,lTb->wrb", E, np.conj(A)) # absorb bra tensor
77
+ E = E.transpose(2, 0, 1)
78
+ return float(np.real(E[0, 0, 0]))
79
+
80
+
81
+ def mpo_to_matrix(mpo) -> np.ndarray:
82
+ """Contract an MPO into its dense ``2^n x 2^n`` operator (small ``n``, for checking)."""
83
+ n = len(mpo)
84
+ T = mpo[0]
85
+ for W in mpo[1:]:
86
+ T = np.tensordot(T, W, axes=(T.ndim - 1, 0))
87
+ # T axes: bond_l, (out,in) per site, bond_r -> reshape
88
+ T = T[0, ..., 0] # drop trivial boundary bonds
89
+ outs = list(range(0, 2 * n, 2))
90
+ ins = list(range(1, 2 * n, 2))
91
+ T = T.transpose(outs + ins)
92
+ dim = 2**n
93
+ M = T.reshape(dim, dim)
94
+ # little-endian reordering to match the rest of the library
95
+ perm = list(range(n - 1, -1, -1))
96
+ Mt = M.reshape([2] * (2 * n)).transpose(perm + [n + p for p in perm]).reshape(dim, dim)
97
+ return Mt