1use ndarray::{Array1, Array2};
4use std::collections::HashMap;
5
6#[derive(Debug, Clone)]
8pub struct QuantumAnomalyConfig {
9 pub num_qubits: usize,
11
12 pub primary_method: AnomalyDetectionMethod,
14
15 pub ensemble_methods: Vec<AnomalyDetectionMethod>,
17
18 pub contamination: f64,
20
21 pub threshold: f64,
23
24 pub preprocessing: PreprocessingConfig,
26
27 pub quantum_enhancement: QuantumEnhancementConfig,
29
30 pub realtime_config: Option<RealtimeConfig>,
32
33 pub performance_config: PerformanceConfig,
35
36 pub specialized_detectors: Vec<SpecializedDetectorConfig>,
38}
39
40#[derive(Debug, Clone)]
42pub enum AnomalyDetectionMethod {
43 QuantumIsolationForest {
45 n_estimators: usize,
46 max_samples: usize,
47 max_depth: Option<usize>,
48 quantum_splitting: bool,
49 },
50
51 QuantumAutoencoder {
53 encoder_layers: Vec<usize>,
54 latent_dim: usize,
55 decoder_layers: Vec<usize>,
56 reconstruction_threshold: f64,
57 },
58
59 QuantumOneClassSVM {
61 kernel_type: QuantumKernelType,
62 nu: f64,
63 gamma: f64,
64 },
65
66 QuantumKMeansDetection {
68 n_clusters: usize,
69 distance_metric: DistanceMetric,
70 cluster_threshold: f64,
71 },
72
73 QuantumLOF {
75 n_neighbors: usize,
76 contamination: f64,
77 quantum_distance: bool,
78 },
79
80 QuantumDBSCAN {
82 eps: f64,
83 min_samples: usize,
84 quantum_density: bool,
85 },
86
87 QuantumNoveltyDetection {
89 reference_dataset_size: usize,
90 novelty_threshold: f64,
91 adaptation_rate: f64,
92 },
93
94 QuantumEnsemble {
96 base_methods: Vec<AnomalyDetectionMethod>,
97 voting_strategy: VotingStrategy,
98 weight_adaptation: bool,
99 },
100}
101
102#[derive(Debug, Clone)]
104pub enum SpecializedDetectorConfig {
105 TimeSeries {
107 window_size: usize,
108 seasonal_period: Option<usize>,
109 trend_detection: bool,
110 quantum_temporal_encoding: bool,
111 },
112
113 Multivariate {
115 correlation_analysis: bool,
116 causal_inference: bool,
117 quantum_feature_entanglement: bool,
118 },
119
120 NetworkGraph {
122 node_features: bool,
123 edge_features: bool,
124 structural_anomalies: bool,
125 quantum_graph_embedding: bool,
126 },
127
128 QuantumState {
130 fidelity_threshold: f64,
131 entanglement_entropy_analysis: bool,
132 quantum_tomography: bool,
133 },
134
135 QuantumCircuit {
137 gate_sequence_analysis: bool,
138 parameter_drift_detection: bool,
139 noise_characterization: bool,
140 },
141}
142
143#[derive(Debug, Clone)]
145pub struct QuantumEnhancementConfig {
146 pub quantum_feature_maps: bool,
148
149 pub entanglement_features: bool,
151
152 pub superposition_ensemble: bool,
154
155 pub interference_patterns: bool,
157
158 pub vqe_scoring: bool,
160
161 pub qaoa_optimization: bool,
163}
164
165#[derive(Debug, Clone)]
167pub struct PreprocessingConfig {
168 pub normalization: NormalizationType,
170
171 pub dimensionality_reduction: Option<DimensionalityReduction>,
173
174 pub feature_selection: Option<FeatureSelection>,
176
177 pub noise_filtering: Option<NoiseFiltering>,
179
180 pub missing_value_strategy: MissingValueStrategy,
182}
183
184#[derive(Debug, Clone)]
186pub struct RealtimeConfig {
187 pub buffer_size: usize,
189
190 pub update_frequency: usize,
192
193 pub drift_detection: bool,
195
196 pub online_learning: bool,
198
199 pub max_latency_ms: usize,
201}
202
203#[derive(Debug, Clone)]
205pub struct PerformanceConfig {
206 pub parallel_processing: bool,
208
209 pub batch_size: usize,
211
212 pub memory_optimization: bool,
214
215 pub gpu_acceleration: bool,
217
218 pub circuit_optimization: bool,
220}
221
222#[derive(Debug, Clone)]
224pub enum QuantumKernelType {
225 RBF,
226 Linear,
227 Polynomial,
228 QuantumFeatureMap,
229 QuantumKernel,
230}
231
232#[derive(Debug, Clone)]
233pub enum DistanceMetric {
234 Euclidean,
235 Manhattan,
236 Cosine,
237 Quantum,
238 QuantumFidelity,
239}
240
241#[derive(Debug, Clone)]
242pub enum VotingStrategy {
243 Majority,
244 Weighted,
245 Quantum,
246 Consensus,
247}
248
249#[derive(Debug, Clone)]
250pub enum NormalizationType {
251 MinMax,
252 ZScore,
253 Robust,
254 Quantum,
255}
256
257#[derive(Debug, Clone)]
258pub enum DimensionalityReduction {
259 PCA,
260 ICA,
261 UMAP,
262 QuantumPCA,
263 QuantumManifold,
264}
265
266#[derive(Debug, Clone)]
267pub enum FeatureSelection {
268 Variance,
269 Correlation,
270 MutualInformation,
271 QuantumInformation,
272}
273
274#[derive(Debug, Clone)]
275pub enum NoiseFiltering {
276 GaussianFilter,
277 MedianFilter,
278 WaveletDenoising,
279 QuantumDenoising,
280}
281
282#[derive(Debug, Clone)]
283pub enum MissingValueStrategy {
284 Remove,
285 Mean,
286 Median,
287 Interpolation,
288 QuantumImputation,
289}
290
291#[derive(Debug, Clone)]
293pub enum TimeSeriesAnomalyType {
294 Point,
296
297 Contextual,
299
300 Collective,
302
303 Seasonal,
305
306 Trend,
308
309 ChangePoint,
311}
312
313#[derive(Debug, Clone)]
315pub struct SeasonalContext {
316 pub seasonal_value: f64,
318
319 pub expected_pattern: Array1<f64>,
321
322 pub seasonal_deviation: f64,
324}
325
326#[derive(Debug, Clone)]
328pub struct TrendContext {
329 pub trend_value: f64,
331
332 pub trend_direction: i32, pub trend_strength: f64,
337}
338
339impl Default for QuantumAnomalyConfig {
340 fn default() -> Self {
341 Self {
342 num_qubits: 4,
343 primary_method: AnomalyDetectionMethod::QuantumIsolationForest {
344 n_estimators: 100,
345 max_samples: 256,
346 max_depth: None,
347 quantum_splitting: true,
348 },
349 ensemble_methods: Vec::new(),
350 contamination: 0.1,
351 threshold: 0.5,
352 preprocessing: PreprocessingConfig {
353 normalization: NormalizationType::ZScore,
354 dimensionality_reduction: None,
355 feature_selection: None,
356 noise_filtering: None,
357 missing_value_strategy: MissingValueStrategy::Mean,
358 },
359 quantum_enhancement: QuantumEnhancementConfig {
360 quantum_feature_maps: true,
361 entanglement_features: true,
362 superposition_ensemble: false,
363 interference_patterns: false,
364 vqe_scoring: false,
365 qaoa_optimization: false,
366 },
367 realtime_config: None,
368 performance_config: PerformanceConfig {
369 parallel_processing: true,
370 batch_size: 32,
371 memory_optimization: true,
372 gpu_acceleration: false,
373 circuit_optimization: true,
374 },
375 specialized_detectors: Vec::new(),
376 }
377 }
378}