quantrs2_device/process_tomography/
config.rs1use std::collections::HashMap;
4
5#[derive(Debug, Clone)]
7pub struct SciRS2ProcessTomographyConfig {
8 pub num_input_states: usize,
10 pub shots_per_state: usize,
12 pub reconstruction_method: ReconstructionMethod,
14 pub confidence_level: f64,
16 pub enable_compressed_sensing: bool,
18 pub enable_mle: bool,
20 pub enable_bayesian: bool,
22 pub enable_structure_analysis: bool,
24 pub enable_multi_process: bool,
26 pub optimization_config: OptimizationConfig,
28 pub validation_config: ProcessValidationConfig,
30}
31
32#[derive(Debug, Clone, PartialEq, Eq)]
34pub enum ReconstructionMethod {
35 LinearInversion,
37 MaximumLikelihood,
39 CompressedSensing,
41 BayesianInference,
43 EnsembleMethods,
45 MachineLearning,
47}
48
49#[derive(Debug, Clone)]
51pub struct OptimizationConfig {
52 pub max_iterations: usize,
54 pub tolerance: f64,
56 pub algorithm: OptimizationAlgorithm,
58 pub enable_parallel: bool,
60 pub adaptive_step_size: bool,
62 pub regularization: RegularizationConfig,
64}
65
66#[derive(Debug, Clone, PartialEq, Eq)]
68pub enum OptimizationAlgorithm {
69 LBFGS,
70 ConjugateGradient,
71 TrustRegion,
72 DifferentialEvolution,
73 SimulatedAnnealing,
74 GeneticAlgorithm,
75 ParticleSwarm,
76}
77
78#[derive(Debug, Clone)]
80pub struct RegularizationConfig {
81 pub l1_strength: f64,
83 pub l2_strength: f64,
85 pub trace_strength: f64,
87 pub positivity_strength: f64,
89}
90
91#[derive(Debug, Clone)]
93pub struct ProcessValidationConfig {
94 pub enable_cross_validation: bool,
96 pub cv_folds: usize,
98 pub enable_bootstrap: bool,
100 pub bootstrap_samples: usize,
102 pub enable_benchmarking: bool,
104 pub benchmark_processes: Vec<String>,
106}
107
108impl Default for SciRS2ProcessTomographyConfig {
109 fn default() -> Self {
110 Self {
111 num_input_states: 36, shots_per_state: 10000,
113 reconstruction_method: ReconstructionMethod::MaximumLikelihood,
114 confidence_level: 0.95,
115 enable_compressed_sensing: true,
116 enable_mle: true,
117 enable_bayesian: false,
118 enable_structure_analysis: true,
119 enable_multi_process: false,
120 optimization_config: OptimizationConfig::default(),
121 validation_config: ProcessValidationConfig::default(),
122 }
123 }
124}
125
126impl Default for OptimizationConfig {
127 fn default() -> Self {
128 Self {
129 max_iterations: 1000,
130 tolerance: 1e-8,
131 algorithm: OptimizationAlgorithm::LBFGS,
132 enable_parallel: true,
133 adaptive_step_size: true,
134 regularization: RegularizationConfig::default(),
135 }
136 }
137}
138
139impl Default for RegularizationConfig {
140 fn default() -> Self {
141 Self {
142 l1_strength: 0.001,
143 l2_strength: 0.01,
144 trace_strength: 1000.0,
145 positivity_strength: 100.0,
146 }
147 }
148}
149
150impl Default for ProcessValidationConfig {
151 fn default() -> Self {
152 Self {
153 enable_cross_validation: true,
154 cv_folds: 5,
155 enable_bootstrap: true,
156 bootstrap_samples: 100,
157 enable_benchmarking: true,
158 benchmark_processes: vec![
159 "identity".to_string(),
160 "pauli_x".to_string(),
161 "pauli_y".to_string(),
162 "pauli_z".to_string(),
163 "hadamard".to_string(),
164 ],
165 }
166 }
167}