pub struct QuantumDebugger<const N: usize> { /* private fields */ }Expand description
Main quantum algorithm debugger
Implementations§
Source§impl<const N: usize> QuantumDebugger<N>
impl<const N: usize> QuantumDebugger<N>
Sourcepub fn new(config: DebugConfig) -> Result<Self>
pub fn new(config: DebugConfig) -> Result<Self>
Create a new quantum debugger
Sourcepub fn load_circuit(&mut self, circuit: Circuit<N>) -> Result<()>
pub fn load_circuit(&mut self, circuit: Circuit<N>) -> Result<()>
Load a circuit for debugging
Sourcepub fn add_breakpoint(&mut self, condition: BreakCondition)
pub fn add_breakpoint(&mut self, condition: BreakCondition)
Add a breakpoint
Sourcepub fn remove_breakpoint(&mut self, index: usize) -> Result<()>
pub fn remove_breakpoint(&mut self, index: usize) -> Result<()>
Remove a breakpoint
Sourcepub fn add_watchpoint(&mut self, watchpoint: Watchpoint)
pub fn add_watchpoint(&mut self, watchpoint: Watchpoint)
Add a watchpoint
Sourcepub fn remove_watchpoint(&mut self, id: &str) -> Result<()>
pub fn remove_watchpoint(&mut self, id: &str) -> Result<()>
Remove a watchpoint
Sourcepub fn step(&mut self) -> Result<StepResult>
pub fn step(&mut self) -> Result<StepResult>
Execute the circuit step by step
Sourcepub fn run(&mut self) -> Result<StepResult>
pub fn run(&mut self) -> Result<StepResult>
Run until next breakpoint or completion
Sourcepub fn get_current_state(&self) -> Result<Array1<Complex64>>
pub fn get_current_state(&self) -> Result<Array1<Complex64>>
Get current quantum state
Returns the full 2^N amplitude vector after the gates that have been
executed so far (self.current_gate gates from the loaded circuit).
The state is reconstructed by replaying the executed prefix of the
circuit through the embedded StateVectorSimulator. This always
reflects the real amplitudes; if no circuit is loaded, the simulator
is in the initial |0…0⟩ state, which is returned as a genuine state
vector (amplitude 1 on the zero basis state) rather than a fabricated
all-zero vector.
Sourcepub fn get_entanglement_entropy(&self, cut: usize) -> Result<f64>
pub fn get_entanglement_entropy(&self, cut: usize) -> Result<f64>
Get entanglement entropy at the specified bipartition cut.
The cut splits the qubits into two contiguous groups; cut is the number
of qubits on one side of the partition. The von Neumann entropy (in nats,
consistent with the MPS path) of the reduced density matrix is returned.
Both the state-vector and MPS backends are handled through
Self::get_current_state, which yields the genuine amplitudes for the
current step (the MPS backend is contracted to a state vector via its
to_statevector method). This computes the real entropy in every case
rather than returning a placeholder.
Sourcepub fn get_pauli_expectation(&self, pauli_string: &str) -> Result<Complex64>
pub fn get_pauli_expectation(&self, pauli_string: &str) -> Result<Complex64>
Get expectation value of Pauli observable
Sourcepub const fn get_metrics(&self) -> &PerformanceMetrics
pub const fn get_metrics(&self) -> &PerformanceMetrics
Get performance metrics
Sourcepub const fn get_snapshots(&self) -> &VecDeque<ExecutionSnapshot>
pub const fn get_snapshots(&self) -> &VecDeque<ExecutionSnapshot>
Get all snapshots
Sourcepub fn get_watchpoint(&self, id: &str) -> Option<&Watchpoint>
pub fn get_watchpoint(&self, id: &str) -> Option<&Watchpoint>
Get watchpoint by ID
Sourcepub const fn get_watchpoints(&self) -> &HashMap<String, Watchpoint>
pub const fn get_watchpoints(&self) -> &HashMap<String, Watchpoint>
Get all watchpoints
Sourcepub const fn is_finished(&self) -> bool
pub const fn is_finished(&self) -> bool
Check if execution is finished
Sourcepub const fn get_execution_state(&self) -> &ExecutionState
pub const fn get_execution_state(&self) -> &ExecutionState
Get current execution state
Sourcepub fn generate_report(&self) -> DebugReport
pub fn generate_report(&self) -> DebugReport
Generate debugging report
Auto Trait Implementations§
impl<const N: usize> !Freeze for QuantumDebugger<N>
impl<const N: usize> !RefUnwindSafe for QuantumDebugger<N>
impl<const N: usize> !UnwindSafe for QuantumDebugger<N>
impl<const N: usize> Send for QuantumDebugger<N>
impl<const N: usize> Sync for QuantumDebugger<N>
impl<const N: usize> Unpin for QuantumDebugger<N>
impl<const N: usize> UnsafeUnpin for QuantumDebugger<N>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.