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