quantrs2_device/performance_dashboard/
data_collection.rs

1//! Data Collection Configuration Types
2
3use serde::{Deserialize, Serialize};
4
5/// Data collection configuration
6#[derive(Debug, Clone, Serialize, Deserialize)]
7pub struct DataCollectionConfig {
8    /// Collection interval in seconds
9    pub collection_interval: u64,
10    /// Buffer size for historical data
11    pub buffer_size: usize,
12    /// Data retention period in days
13    pub retention_days: u32,
14    /// Metrics to collect
15    pub metrics_config: MetricsConfig,
16    /// Aggregation settings
17    pub aggregation_config: AggregationConfig,
18    /// Sampling configuration
19    pub sampling_config: SamplingConfig,
20}
21
22#[derive(Debug, Clone, Serialize, Deserialize)]
23pub struct MetricsConfig {
24    pub performance_metrics: Vec<PerformanceMetric>,
25    pub resource_metrics: Vec<ResourceMetric>,
26    pub quality_metrics: Vec<QualityMetric>,
27    pub custom_metrics: Vec<CustomMetric>,
28}
29
30#[derive(Debug, Clone, Serialize, Deserialize)]
31pub struct AggregationConfig {
32    pub aggregation_functions: Vec<AggregationFunction>,
33    pub time_windows: Vec<TimeWindow>,
34    pub grouping_dimensions: Vec<String>,
35}
36
37#[derive(Debug, Clone, Serialize, Deserialize)]
38pub struct SamplingConfig {
39    pub sampling_strategy: SamplingStrategy,
40    pub sample_rate: f64,
41    pub adaptive_sampling: bool,
42    pub quality_based_sampling: bool,
43}
44
45#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
46pub enum PerformanceMetric {
47    Fidelity,
48    Throughput,
49    Latency,
50    ErrorRate,
51    SuccessRate,
52    CircuitDepth,
53    GateCount,
54    SwapCount,
55}
56
57#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
58pub enum ResourceMetric {
59    CpuUtilization,
60    MemoryUtilization,
61    NetworkUtilization,
62    StorageUtilization,
63    QuantumUtilization,
64    QueueLength,
65    ActiveConnections,
66}
67
68#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
69pub enum QualityMetric {
70    ProcessFidelity,
71    MeasurementFidelity,
72    GateFidelity,
73    StatePreparationFidelity,
74    ReadoutFidelity,
75    CoherenceTime,
76    CalibrationDrift,
77}
78
79#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
80pub enum CustomMetric {
81    UserDefined(String),
82    ApplicationSpecific(String),
83}
84
85#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
86pub enum AggregationFunction {
87    Mean,
88    Median,
89    Min,
90    Max,
91    Sum,
92    Count,
93    Percentile(f64),
94    StandardDeviation,
95    Variance,
96}
97
98#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
99pub enum TimeWindow {
100    Seconds(u64),
101    Minutes(u64),
102    Hours(u64),
103    Days(u64),
104}
105
106#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
107pub enum SamplingStrategy {
108    Fixed,
109    Adaptive,
110    QualityBased,
111    EventDriven,
112    Hybrid,
113}