quantrs2_device/mapping_scirs2/
mod.rs

1//! Advanced qubit mapping using SciRS2 graph algorithms
2//!
3//! This module provides state-of-the-art qubit mapping and routing algorithms
4//! leveraging SciRS2's comprehensive graph analysis capabilities.
5
6// Re-export all public types
7pub use analytics::*;
8pub use config::*;
9pub use core::*;
10pub use graph_analysis::*;
11pub use mapping_algorithms::*;
12pub use ml_integration::*;
13pub use optimization::*;
14pub use types::*;
15pub use utils::*;
16
17// Module declarations
18pub mod analytics;
19pub mod config;
20pub mod core;
21pub mod graph_analysis;
22pub mod mapping_algorithms;
23pub mod ml_integration;
24pub mod optimization;
25pub mod types;
26pub mod utils;
27
28// Common imports for all submodules
29pub use std::cmp::Ordering;
30pub use std::collections::{BTreeMap, BinaryHeap, HashMap, HashSet, VecDeque};
31pub use std::sync::{Arc, Mutex, RwLock};
32pub use std::time::{Duration, Instant, SystemTime};
33
34pub use scirs2_core::random::prelude::*;
35pub use serde::{Deserialize, Serialize};
36#[cfg(feature = "scheduling")]
37pub use tokio::sync::{Mutex as AsyncMutex, RwLock as AsyncRwLock};
38
39// Import only what we need from quantrs2_circuit to avoid name conflicts
40pub use quantrs2_circuit::builder::Circuit;
41
42pub use quantrs2_core::{
43    error::{QuantRS2Error, QuantRS2Result},
44    gate::GateOp,
45    qubit::QubitId,
46};
47
48#[cfg(feature = "scirs2")]
49pub use scirs2_graph::{
50    astar_search, astar_search_digraph, barabasi_albert_graph, betweenness_centrality,
51    closeness_centrality, clustering_coefficient, diameter, dijkstra_path, eigenvector_centrality,
52    erdos_renyi_graph, graph_density, k_core_decomposition, louvain_communities_result,
53    maximum_bipartite_matching, minimum_cut, minimum_spanning_tree, pagerank, radius,
54    spectral_radius, strongly_connected_components, topological_sort, watts_strogatz_graph,
55    DiGraph, Edge, Graph, GraphError, Node, Result as GraphResult,
56};
57// Import specific functions from scirs2_linalg to avoid CalibrationMethod ambiguity
58#[cfg(feature = "scirs2")]
59pub use scirs2_linalg::{eig, matrix_norm, svd, LinalgResult};
60#[cfg(feature = "scirs2")]
61pub use scirs2_optimize::{minimize, OptimizeResult};
62#[cfg(feature = "scirs2")]
63pub use scirs2_stats::{corrcoef, mean, pearsonr, std};
64
65pub use petgraph::graph::{NodeIndex, UnGraph};
66pub use petgraph::Graph as PetGraph;
67pub use scirs2_core::ndarray::{Array1, Array2, ArrayView1, ArrayView2, Axis};
68
69pub use crate::{
70    calibration::DeviceCalibration,
71    routing_advanced::{AdvancedRoutingResult, RoutingMetrics, SwapOperation},
72    topology::HardwareTopology,
73    DeviceError, DeviceResult,
74};