1use 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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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#[derive(Debug, Clone, Serialize, Deserialize)]
135pub struct SymmetryVerificationResult {
136 pub corrections: Vec<String>,
137 pub overhead: f64,
138}
139
140#[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#[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#[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#[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#[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#[derive(Debug, Clone, Serialize, Deserialize)]
193pub struct CorrelationAnalysisData {
194 pub correlation_matrix: Array2<f64>,
195 pub significant_correlations: Vec<(String, String, f64)>,
196}