quantrs2_device/noise_modeling_scirs2/
config.rs1use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
7pub struct SciRS2NoiseConfig {
8 pub enable_ml_modeling: bool,
10 pub enable_spectral_analysis: bool,
12 pub enable_temporal_modeling: bool,
14 pub enable_spatial_modeling: bool,
16 pub enable_multi_level_decomposition: bool,
18 pub confidence_level: f64,
20 pub num_realizations: usize,
22 pub sampling_frequency: f64,
24 pub spatial_range: usize,
26 pub enable_adaptive_modeling: bool,
28 pub validation_config: ValidationConfig,
30}
31
32#[derive(Debug, Clone, Serialize, Deserialize)]
34pub struct ValidationConfig {
35 pub cv_folds: usize,
37 pub test_ratio: f64,
39 pub enable_bootstrap: bool,
41 pub bootstrap_samples: usize,
43 pub metrics: Vec<ValidationMetric>,
45}
46
47#[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#[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#[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#[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#[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#[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#[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, 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}