quantrs2_device/ml_optimization/
features.rs

1//! Feature Extraction Configuration Types
2
3use serde::{Deserialize, Serialize};
4
5/// Feature extraction configuration
6#[derive(Debug, Clone, Serialize, Deserialize)]
7pub struct FeatureExtractionConfig {
8    /// Enable syndrome history features
9    pub enable_syndrome_history: bool,
10    /// History length for features
11    pub history_length: usize,
12    /// Enable spatial features
13    pub enable_spatial_features: bool,
14    /// Enable temporal features
15    pub enable_temporal_features: bool,
16    /// Enable correlation features
17    pub enable_correlation_features: bool,
18    /// Enable automatic feature extraction
19    pub enable_auto_extraction: bool,
20    /// Circuit structure features
21    pub circuit_features: CircuitFeatureConfig,
22    /// Hardware-specific features
23    pub hardware_features: HardwareFeatureConfig,
24    /// Temporal features
25    pub temporal_features: TemporalFeatureConfig,
26    /// Statistical features
27    pub statistical_features: StatisticalFeatureConfig,
28    /// Graph-based features
29    pub graph_features: GraphFeatureConfig,
30    /// Feature selection methods
31    pub feature_selection: FeatureSelectionConfig,
32    /// Dimensionality reduction
33    pub dimensionality_reduction: DimensionalityReductionConfig,
34}
35
36/// Circuit feature configuration
37#[derive(Debug, Clone, Serialize, Deserialize)]
38pub struct CircuitFeatureConfig {
39    /// Basic circuit properties
40    pub basic_properties: bool,
41    /// Gate type distributions
42    pub gate_distributions: bool,
43    /// Circuit depth analysis
44    pub depth_analysis: bool,
45    /// Connectivity patterns
46    pub connectivity_patterns: bool,
47    /// Entanglement measures
48    pub entanglement_measures: bool,
49    /// Symmetry analysis
50    pub symmetry_analysis: bool,
51    /// Critical path analysis
52    pub critical_path_analysis: bool,
53}
54
55/// Hardware feature configuration
56#[derive(Debug, Clone, Serialize, Deserialize)]
57pub struct HardwareFeatureConfig {
58    /// Topology features
59    pub topology_features: bool,
60    /// Calibration features
61    pub calibration_features: bool,
62    /// Error rate features
63    pub error_rate_features: bool,
64    /// Timing features
65    pub timing_features: bool,
66    /// Resource utilization features
67    pub resource_features: bool,
68    /// Temperature and drift features
69    pub environmental_features: bool,
70}
71
72/// Temporal feature configuration
73#[derive(Debug, Clone, Serialize, Deserialize)]
74pub struct TemporalFeatureConfig {
75    /// Time series analysis
76    pub time_series_analysis: bool,
77    /// Trend detection
78    pub trend_detection: bool,
79    /// Seasonality analysis
80    pub seasonality_analysis: bool,
81    /// Autocorrelation features
82    pub autocorrelation_features: bool,
83    /// Fourier features
84    pub fourier_features: bool,
85}
86
87/// Statistical feature configuration
88#[derive(Debug, Clone, Serialize, Deserialize)]
89pub struct StatisticalFeatureConfig {
90    /// Moment features
91    pub moment_features: bool,
92    /// Distribution fitting
93    pub distribution_fitting: bool,
94    /// Correlation features
95    pub correlation_features: bool,
96    /// Outlier detection features
97    pub outlier_features: bool,
98    /// Normality tests
99    pub normality_tests: bool,
100}
101
102/// Graph feature configuration
103#[derive(Debug, Clone, Serialize, Deserialize)]
104pub struct GraphFeatureConfig {
105    /// Centrality measures
106    pub centrality_measures: bool,
107    /// Community detection features
108    pub community_features: bool,
109    /// Spectral features
110    pub spectral_features: bool,
111    /// Path-based features
112    pub path_features: bool,
113    /// Clustering features
114    pub clustering_features: bool,
115}
116
117/// Feature selection configuration
118#[derive(Debug, Clone, Serialize, Deserialize)]
119pub struct FeatureSelectionConfig {
120    /// Enable feature selection
121    pub enable_selection: bool,
122    /// Selection methods
123    pub selection_methods: Vec<FeatureSelectionMethod>,
124    /// Number of features to select
125    pub num_features: Option<usize>,
126    /// Selection threshold
127    pub selection_threshold: f64,
128}
129
130/// Feature selection methods
131#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
132pub enum FeatureSelectionMethod {
133    VarianceThreshold,
134    UnivariateSelection,
135    RecursiveFeatureElimination,
136    FeatureImportance,
137    MutualInformation,
138    CorrelationFilter,
139    LassoSelection,
140}
141
142/// Dimensionality reduction configuration
143#[derive(Debug, Clone, Serialize, Deserialize)]
144pub struct DimensionalityReductionConfig {
145    /// Enable dimensionality reduction
146    pub enable_reduction: bool,
147    /// Reduction methods
148    pub reduction_methods: Vec<DimensionalityReductionMethod>,
149    /// Target dimensionality
150    pub target_dimensions: Option<usize>,
151    /// Variance threshold
152    pub variance_threshold: f64,
153}
154
155/// Dimensionality reduction methods
156#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
157pub enum DimensionalityReductionMethod {
158    PCA,
159    ICA,
160    LDA,
161    TSNE,
162    UMAP,
163    AutoEncoder,
164    VariationalAutoEncoder,
165}