quantrs2_device/qec/
results.rs

1//! Quantum Error Correction Result Types
2//!
3//! This module defines the result types returned by QEC operations:
4//! - Circuit correction results with performance metrics
5//! - Syndrome analysis results with pattern recognition data
6//! - Mitigation results for various error mitigation strategies
7//! - Statistical analysis results for QEC performance
8//! - ZNE (Zero-Noise Extrapolation) results
9
10use std::collections::HashMap;
11use std::time::{Duration, SystemTime};
12
13use quantrs2_circuit::prelude::Circuit;
14use scirs2_core::ndarray::Array2;
15use serde::{Deserialize, Serialize};
16
17use super::{
18    config::{SpatialPattern, TemporalPattern},
19    QECStrategy,
20};
21
22/// Comprehensive result of circuit error correction
23#[derive(Debug, Clone)]
24pub struct CorrectedCircuitResult<const N: usize> {
25    pub original_circuit: Circuit<N>,
26    pub corrected_circuit: Circuit<N>,
27    pub applied_strategy: QECStrategy,
28    pub syndrome_data: SyndromeAnalysisResult,
29    pub mitigation_data: MitigationResult<N>,
30    pub zne_data: Option<ZNEResult<N>>,
31    pub correction_performance: CorrectionPerformance,
32    pub statistical_analysis: StatisticalAnalysisResult,
33}
34
35/// Performance metrics for error correction
36#[derive(Debug, Clone, Serialize, Deserialize)]
37pub struct CorrectionPerformance {
38    pub total_time: Duration,
39    pub fidelity_improvement: f64,
40    pub resource_overhead: f64,
41    pub confidence_score: f64,
42}
43
44/// Analysis of error patterns in the quantum system
45#[derive(Debug, Clone, Serialize, Deserialize)]
46pub struct ErrorPatternAnalysis {
47    pub temporal_patterns: Vec<TemporalPattern>,
48    pub spatial_patterns: Vec<SpatialPattern>,
49    pub environmental_correlations: HashMap<String, f64>,
50    pub ml_predictions: Vec<PredictedPattern>,
51    pub confidence_score: f64,
52    pub last_updated: SystemTime,
53}
54
55// TemporalPattern and SpatialPattern are imported from config
56
57/// ML-predicted error pattern
58#[derive(Debug, Clone, Serialize, Deserialize)]
59pub struct PredictedPattern {
60    pub pattern_type: String,
61    pub probability: f64,
62    pub time_horizon: Duration,
63    pub affected_components: Vec<String>,
64}
65
66/// Syndrome measurements data
67#[derive(Debug, Clone, Serialize, Deserialize)]
68pub struct SyndromeMeasurements {
69    pub syndrome_bits: Vec<bool>,
70    pub detected_errors: Vec<usize>,
71    pub measurement_fidelity: f64,
72    pub measurement_time: Duration,
73    pub raw_measurements: HashMap<String, f64>,
74}
75
76/// Result of syndrome detection and analysis
77#[derive(Debug, Clone, Serialize, Deserialize)]
78pub struct SyndromeAnalysisResult {
79    pub syndrome_measurements: SyndromeMeasurements,
80    pub pattern_recognition: Option<PatternRecognitionResult>,
81    pub statistical_analysis: Option<SyndromeStatistics>,
82    pub historical_correlation: HistoricalCorrelation,
83    pub detection_confidence: f64,
84    pub timestamp: SystemTime,
85}
86
87/// Pattern recognition result from ML models
88#[derive(Debug, Clone, Serialize, Deserialize)]
89pub struct PatternRecognitionResult {
90    pub recognized_patterns: Vec<String>,
91    pub pattern_confidence: HashMap<String, f64>,
92    pub ml_model_used: String,
93    pub prediction_time: Duration,
94}
95
96/// Statistical analysis of syndromes
97#[derive(Debug, Clone, Serialize, Deserialize)]
98pub struct SyndromeStatistics {
99    pub error_rate_statistics: HashMap<String, f64>,
100    pub distribution_analysis: String,
101    pub confidence_intervals: HashMap<String, (f64, f64)>,
102    pub statistical_tests: HashMap<String, f64>,
103}
104
105/// Correlation with historical syndrome patterns
106#[derive(Debug, Clone, Serialize, Deserialize)]
107pub struct HistoricalCorrelation {
108    pub similarity_score: f64,
109    pub matching_patterns: Vec<String>,
110    pub temporal_correlation: f64,
111    pub deviation_analysis: HashMap<String, f64>,
112}
113
114/// Result of error mitigation strategies
115#[derive(Debug, Clone)]
116pub struct MitigationResult<const N: usize> {
117    pub circuit: Circuit<N>,
118    pub applied_corrections: Vec<String>,
119    pub resource_overhead: f64,
120    pub effectiveness_score: f64,
121    pub confidence_score: f64,
122    pub mitigation_time: SystemTime,
123}
124
125/// Result of gate-level mitigation
126#[derive(Debug, Clone)]
127pub struct GateMitigationResult<const N: usize> {
128    pub circuit: Circuit<N>,
129    pub corrections: Vec<String>,
130    pub resource_overhead: f64,
131}
132
133/// Result of symmetry verification
134#[derive(Debug, Clone, Serialize, Deserialize)]
135pub struct SymmetryVerificationResult {
136    pub corrections: Vec<String>,
137    pub overhead: f64,
138}
139
140/// Result of virtual distillation
141#[derive(Debug, Clone)]
142pub struct VirtualDistillationResult<const N: usize> {
143    pub circuit: Circuit<N>,
144    pub corrections: Vec<String>,
145    pub overhead: f64,
146}
147
148/// Zero-Noise Extrapolation (ZNE) result
149#[derive(Debug, Clone)]
150pub struct ZNEResult<const N: usize> {
151    pub original_circuit: Circuit<N>,
152    pub scaled_circuits: Vec<f64>,
153    pub extrapolated_result: HashMap<String, usize>,
154    pub richardson_result: Option<HashMap<String, usize>>,
155    pub statistical_confidence: f64,
156    pub zne_overhead: f64,
157}
158
159/// Result of readout error correction
160#[derive(Debug, Clone)]
161pub struct ReadoutCorrectedResult<const N: usize> {
162    pub circuit: Circuit<N>,
163    pub correction_matrix: Array2<f64>,
164    pub corrected_counts: HashMap<String, usize>,
165    pub fidelity_improvement: f64,
166    pub resource_overhead: f64,
167    pub confidence_score: f64,
168}
169
170/// Statistical analysis of QEC performance
171#[derive(Debug, Clone, Serialize, Deserialize)]
172pub struct StatisticalAnalysisResult {
173    pub mean_success_rate: f64,
174    pub std_success_rate: f64,
175    pub trend_analysis: TrendAnalysisData,
176    pub correlation_analysis: CorrelationAnalysisData,
177    pub prediction_accuracy: f64,
178    pub confidence_interval: (f64, f64),
179    pub sample_size: usize,
180    pub last_updated: SystemTime,
181}
182
183/// Trend analysis data
184#[derive(Debug, Clone, Serialize, Deserialize)]
185pub struct TrendAnalysisData {
186    pub trend_direction: String,
187    pub trend_strength: f64,
188    pub confidence_level: f64,
189}
190
191/// Correlation analysis data
192#[derive(Debug, Clone, Serialize, Deserialize)]
193pub struct CorrelationAnalysisData {
194    pub correlation_matrix: Array2<f64>,
195    pub significant_correlations: Vec<(String, String, f64)>,
196}