quantrs2_device/noise_modeling_scirs2/
config.rs

1//! Configuration structures and enums for SciRS2 noise modeling
2
3use serde::{Deserialize, Serialize};
4
5/// Advanced noise modeling configuration
6#[derive(Debug, Clone, Serialize, Deserialize)]
7pub struct SciRS2NoiseConfig {
8    /// Enable machine learning-based modeling
9    pub enable_ml_modeling: bool,
10    /// Enable spectral noise analysis
11    pub enable_spectral_analysis: bool,
12    /// Enable temporal correlation modeling
13    pub enable_temporal_modeling: bool,
14    /// Enable spatial correlation modeling
15    pub enable_spatial_modeling: bool,
16    /// Enable multi-level noise decomposition
17    pub enable_multi_level_decomposition: bool,
18    /// Statistical confidence level
19    pub confidence_level: f64,
20    /// Number of noise realizations for statistical analysis
21    pub num_realizations: usize,
22    /// Sampling frequency for temporal analysis (Hz)
23    pub sampling_frequency: f64,
24    /// Spatial correlation range (number of qubits)
25    pub spatial_range: usize,
26    /// Enable adaptive noise modeling
27    pub enable_adaptive_modeling: bool,
28    /// Model validation configuration
29    pub validation_config: ValidationConfig,
30}
31
32/// Model validation configuration
33#[derive(Debug, Clone, Serialize, Deserialize)]
34pub struct ValidationConfig {
35    /// Cross-validation folds
36    pub cv_folds: usize,
37    /// Train/test split ratio
38    pub test_ratio: f64,
39    /// Enable bootstrap validation
40    pub enable_bootstrap: bool,
41    /// Number of bootstrap samples
42    pub bootstrap_samples: usize,
43    /// Validation metrics to compute
44    pub metrics: Vec<ValidationMetric>,
45}
46
47/// Validation metrics
48#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
49pub enum ValidationMetric {
50    RMSE,
51    MAE,
52    R2,
53    LogLikelihood,
54    AIC,
55    BIC,
56    KLDivergence,
57    WassersteinDistance,
58}
59
60/// Distribution types for noise characterization
61#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
62pub enum DistributionType {
63    Normal,
64    LogNormal,
65    Gamma,
66    Exponential,
67    Poisson,
68    Mixture,
69    Empirical,
70    Custom(String),
71}
72
73/// Noise color classifications
74#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
75pub enum NoiseColor {
76    White,
77    Pink,
78    Brown,
79    Blue,
80    Violet,
81    Custom { exponent: f64 },
82}
83
84/// AR model types
85#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
86pub enum ARModelType {
87    AR,
88    MA,
89    ARMA,
90    ARIMA,
91    GARCH,
92    Custom(String),
93}
94
95/// Machine learning model types
96#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
97pub enum MLModelType {
98    GaussianProcess,
99    NeuralNetwork,
100    RandomForest,
101    SupportVector,
102    Ensemble,
103    Custom(String),
104}
105
106/// Spatial interpolation methods
107#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
108pub enum SpatialInterpolation {
109    Kriging,
110    RadialBasisFunction,
111    InverseDistance,
112    NearestNeighbor,
113    Spline,
114    Custom(String),
115}
116
117/// Decomposition methods
118#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
119pub enum DecompositionMethod {
120    PCA,
121    ICA,
122    NMF,
123    FastICA,
124    Wavelet,
125    Custom(String),
126}
127
128impl Default for SciRS2NoiseConfig {
129    fn default() -> Self {
130        Self {
131            enable_ml_modeling: true,
132            enable_spectral_analysis: true,
133            enable_temporal_modeling: true,
134            enable_spatial_modeling: true,
135            enable_multi_level_decomposition: true,
136            confidence_level: 0.95,
137            num_realizations: 1000,
138            sampling_frequency: 1e9, // 1 GHz
139            spatial_range: 5,
140            enable_adaptive_modeling: true,
141            validation_config: ValidationConfig {
142                cv_folds: 5,
143                test_ratio: 0.2,
144                enable_bootstrap: true,
145                bootstrap_samples: 100,
146                metrics: vec![
147                    ValidationMetric::RMSE,
148                    ValidationMetric::R2,
149                    ValidationMetric::LogLikelihood,
150                ],
151            },
152        }
153    }
154}
155
156impl Default for ValidationConfig {
157    fn default() -> Self {
158        Self {
159            cv_folds: 5,
160            test_ratio: 0.2,
161            enable_bootstrap: true,
162            bootstrap_samples: 100,
163            metrics: vec![ValidationMetric::RMSE, ValidationMetric::R2],
164        }
165    }
166}