quantrs2_device/adaptive_compilation/
mod.rs1use std::collections::{BTreeMap, HashMap, VecDeque};
9use std::sync::{Arc, Mutex, RwLock};
10use std::time::{Duration, Instant, SystemTime};
11
12use quantrs2_circuit::prelude::*;
13use quantrs2_core::{
14 error::{QuantRS2Error, QuantRS2Result},
15 gate::GateOp,
16 qubit::QubitId,
17};
18
19#[cfg(feature = "scirs2")]
21use scirs2_graph::{
22 betweenness_centrality, closeness_centrality, dijkstra_path, minimum_spanning_tree,
23 strongly_connected_components, Graph,
24};
25#[cfg(feature = "scirs2")]
26use scirs2_linalg::{
27 cholesky, det, eig, inv, matrix_norm, prelude::*, qr, svd, trace, LinalgError, LinalgResult,
28};
29#[cfg(feature = "scirs2")]
30use scirs2_optimize::{minimize, OptimizeResult};
31#[cfg(feature = "scirs2")]
32use scirs2_stats::{
33 corrcoef,
34 distributions::{chi2, exponential, gamma, norm},
35 ks_2samp, mean, pearsonr, shapiro_wilk, spearmanr, std, ttest_1samp, ttest_ind, var,
36 Alternative, TTestResult,
37};
38
39#[cfg(not(feature = "scirs2"))]
41mod fallback_scirs2 {
42 use scirs2_core::ndarray::{Array1, Array2, ArrayView1, ArrayView2};
43
44 pub fn mean(_data: &ArrayView1<f64>) -> Result<f64, String> {
45 Ok(0.0)
46 }
47 pub fn std(_data: &ArrayView1<f64>, _ddof: i32) -> Result<f64, String> {
48 Ok(1.0)
49 }
50 pub fn pearsonr(
51 _x: &ArrayView1<f64>,
52 _y: &ArrayView1<f64>,
53 _alt: &str,
54 ) -> Result<(f64, f64), String> {
55 Ok((0.0, 0.5))
56 }
57 pub fn trace(_matrix: &ArrayView2<f64>) -> Result<f64, String> {
58 Ok(1.0)
59 }
60 pub fn inv(_matrix: &ArrayView2<f64>) -> Result<Array2<f64>, String> {
61 Ok(Array2::eye(2))
62 }
63
64 pub struct OptimizeResult {
65 pub x: Array1<f64>,
66 pub fun: f64,
67 pub success: bool,
68 pub nit: usize,
69 pub nfev: usize,
70 pub message: String,
71 }
72
73 pub fn minimize(
74 _func: fn(&Array1<f64>) -> f64,
75 _x0: &Array1<f64>,
76 _method: &str,
77 ) -> Result<OptimizeResult, String> {
78 Ok(OptimizeResult {
79 x: Array1::zeros(2),
80 fun: 0.0,
81 success: true,
82 nit: 0,
83 nfev: 0,
84 message: "Fallback optimization".to_string(),
85 })
86 }
87
88 pub fn differential_evolution(
89 _func: fn(&Array1<f64>) -> f64,
90 _bounds: &[(f64, f64)],
91 ) -> Result<OptimizeResult, String> {
92 Ok(OptimizeResult {
93 x: Array1::zeros(2),
94 fun: 0.0,
95 success: true,
96 nit: 0,
97 nfev: 0,
98 message: "Fallback optimization".to_string(),
99 })
100 }
101}
102
103#[cfg(not(feature = "scirs2"))]
104use fallback_scirs2::*;
105
106use scirs2_core::ndarray::{s, Array1, Array2, ArrayView1, ArrayView2};
107use scirs2_core::random::prelude::*;
108use scirs2_core::Complex64;
109
110use crate::{
111 backend_traits::{query_backend_capabilities, BackendCapabilities},
112 calibration::{CalibrationManager, DeviceCalibration},
113 dynamical_decoupling::DynamicalDecouplingConfig,
114 integrated_device_manager::{IntegratedQuantumDeviceManager, WorkflowDefinition, WorkflowType},
115 mapping_scirs2::{SciRS2MappingConfig, SciRS2MappingResult, SciRS2QubitMapper},
116 noise_model::CalibrationNoiseModel,
117 process_tomography::{SciRS2ProcessTomographer, SciRS2ProcessTomographyConfig},
118 topology::HardwareTopology,
119 vqa_support::{VQAConfig, VQAExecutor, VQAResult},
120 CircuitExecutor, CircuitResult, DeviceError, DeviceResult, QuantumDevice,
121};
122
123pub mod config;
125pub mod hardware_adaptation;
126pub mod ml_integration;
127pub mod monitoring;
128pub mod strategies;
129
130pub use config::*;
132pub use hardware_adaptation::*;
133pub use ml_integration::*;
134pub use monitoring::*;
135pub use strategies::*;
136
137