quantrs2_tytan/advanced_visualization/
functions.rs1use std::collections::{HashMap, VecDeque};
6use std::time::{Duration, SystemTime};
7
8use super::types::{
9 AdvancedVisualizationManager, AnalysisError, ComparisonMetric, ComparisonResult,
10 ConvergenceAnalysis, ConvergenceData, DashboardData, Dataset, ExportFormat, InteractiveFeature,
11 PerformanceHistory, PerformancePrediction, PredictionError, QuantumState, RealTimeAnalysis,
12 RenderingQuality, StateVisualization, StatisticalTest, VisualizationConfig, VisualizationError,
13 WidgetConfig, WidgetRender, WidgetType,
14};
15
16pub trait StateVisualizationMethod: Send + Sync {
17 fn name(&self) -> &str;
18 fn visualize(&self, state: &QuantumState) -> Result<StateVisualization, VisualizationError>;
19 fn supported_dimensions(&self) -> Vec<usize>;
20 fn interactive_features(&self) -> Vec<InteractiveFeature>;
21}
22pub trait DashboardWidget: Send + Sync {
23 fn name(&self) -> &str;
24 fn widget_type(&self) -> WidgetType;
25 fn update(&mut self, data: &DashboardData) -> Result<(), VisualizationError>;
26 fn render(&self) -> Result<WidgetRender, VisualizationError>;
27 fn configure(&mut self, config: WidgetConfig) -> Result<(), VisualizationError>;
28}
29pub trait PerformancePredictor: Send + Sync {
30 fn name(&self) -> &str;
31 fn predict(
32 &self,
33 historical_data: &PerformanceHistory,
34 ) -> Result<PerformancePrediction, PredictionError>;
35 fn confidence(&self) -> f64;
36 fn prediction_horizon(&self) -> Duration;
37}
38pub trait ComparisonAlgorithm: Send + Sync {
39 fn name(&self) -> &str;
40 fn compare(&self, datasets: &[Dataset]) -> Result<ComparisonResult, AnalysisError>;
41 fn comparison_metrics(&self) -> Vec<ComparisonMetric>;
42 fn statistical_tests(&self) -> Vec<StatisticalTest>;
43}
44pub trait ConvergenceAnalyzer: Send + Sync {
45 fn name(&self) -> &str;
46 fn analyze(&self, data: &ConvergenceData) -> Result<ConvergenceAnalysis, AnalysisError>;
47 fn real_time_analysis(&self, data: &ConvergenceData)
48 -> Result<RealTimeAnalysis, AnalysisError>;
49}
50pub fn create_advanced_visualization_manager() -> AdvancedVisualizationManager {
52 AdvancedVisualizationManager::new(VisualizationConfig::default())
53}
54pub fn create_lightweight_visualization_manager() -> AdvancedVisualizationManager {
56 let config = VisualizationConfig {
57 interactive_mode: false,
58 real_time_updates: false,
59 enable_3d_rendering: false,
60 quantum_state_viz: false,
61 performance_dashboard: false,
62 update_frequency: Duration::from_secs(1),
63 max_data_points: 1000,
64 export_formats: vec![ExportFormat::PNG],
65 rendering_quality: RenderingQuality::Low,
66 color_schemes: HashMap::new(),
67 };
68 AdvancedVisualizationManager::new(config)
69}