Expand description
§LogosQ Noise Modeler
A Rust crate for simulating realistic quantum processing unit (QPU) noise, enabling accurate NISQ-era quantum circuit simulations.
§Overview
This crate provides customizable noise models that integrate seamlessly with LogosQ’s state-vector simulations. It supports standard quantum error channels (depolarizing, amplitude damping, phase damping) with compile-time configurable parameters and runtime validation.
§Key Features
- Compile-time configurable models: Type-safe noise channel construction
- Hardware profile integration: Fetch real QPU noise data via APIs
- High performance: SIMD-optimized operations, optional GPU acceleration
- Validated accuracy: Benchmarked against Qiskit Aer and empirical data
§NISQ-Era Focus
Current quantum devices operate in the Noisy Intermediate-Scale Quantum (NISQ) regime where errors significantly impact computation. This crate helps:
- Predict algorithm performance on real hardware
- Develop error mitigation strategies
- Validate quantum advantage claims
§Installation
Add to your Cargo.toml:
[dependencies]
logosq-noise-modeler = "0.1"§Feature Flags
gpu: Enable CUDA-accelerated noise simulationsimd: Enable SIMD-optimized operations (auto-detected)hardware-profiles: Enable fetching real QPU noise profiles
§Dependencies
rand: Probabilistic noise samplingndarray: Matrix operations for Kraus operatorsnum-complex: Complex number support
§Usage Examples
§Basic Noise Application
use logosq_noise_modeler::{DepolarizingChannel, NoiseModel, StateVector};
// Create a depolarizing channel with 1% error probability
let channel = DepolarizingChannel::new(0.01)?;
// Apply to a quantum state
let mut state = StateVector::zero_state(2);
channel.apply(&mut state, 0)?; // Apply to qubit 0§Noisy Grover’s Algorithm
use logosq_noise_modeler::{NoiseModel, CompositeNoiseModel, DepolarizingChannel, AmplitudeDamping};
// Build a realistic noise model
let noise = CompositeNoiseModel::new()
.with_single_qubit_gate_noise(DepolarizingChannel::new(0.001)?)
.with_two_qubit_gate_noise(DepolarizingChannel::new(0.01)?)
.with_idle_noise(AmplitudeDamping::new(0.0001)?);
// Simulate Grover's with noise
let circuit = grover_circuit(4, &[5]); // 4 qubits, search for |5⟩
let result = simulate_with_noise(&circuit, &noise, 1000)?;
println!("Success probability: {:.2}%", result.success_rate() * 100.0);§Supported Noise Models
§Depolarizing Channel
Applies Pauli errors with equal probability. For single-qubit:
$$\mathcal{E}(\rho) = (1-p)\rho + \frac{p}{3}(X\rho X + Y\rho Y + Z\rho Z)$$
Reference: Nielsen & Chuang, Section 8.3.4
§Amplitude Damping
Models energy relaxation (T1 decay):
$$K_0 = \begin{pmatrix} 1 & 0 \ 0 & \sqrt{1-\gamma} \end{pmatrix}, \quad K_1 = \begin{pmatrix} 0 & \sqrt{\gamma} \ 0 & 0 \end{pmatrix}$$
Reference: Nielsen & Chuang, Section 8.3.5
§Phase Damping
Models dephasing (T2 decay without energy loss):
$$K_0 = \begin{pmatrix} 1 & 0 \ 0 & \sqrt{1-\lambda} \end{pmatrix}, \quad K_1 = \begin{pmatrix} 0 & 0 \ 0 & \sqrt{\lambda} \end{pmatrix}$$
§Bit-Flip Channel
$$\mathcal{E}(\rho) = (1-p)\rho + pX\rho X$$
§Phase-Flip Channel
$$\mathcal{E}(\rho) = (1-p)\rho + pZ\rho Z$$
§Thermal Relaxation
Combined T1/T2 relaxation with thermal population:
$$\mathcal{E}(\rho) = \text{AmplitudeDamping}(\gamma) \circ \text{PhaseDamping}(\lambda)$$
where $\gamma = 1 - e^{-t/T_1}$ and $\lambda = 1 - e^{-t/T_2}$
§Integration with Hardware
Fetch real QPU noise profiles:
use logosq_noise_modeler::{HardwareNoiseProfile, NoiseModel};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Fetch IBM Quantum device calibration
let profile = HardwareNoiseProfile::from_ibm("ibm_brisbane").await?;
// Convert to noise model
let noise = profile.to_noise_model();
// Use with LogosQ-Hardware-Integrator for pre-flight simulation
Ok(())
}§Validation and Accuracy
§Numerical Stability
- All probabilities validated in [0, 1] range
- Kraus operators verified to satisfy completeness: $\sum_k K_k^\dagger K_k = I$
- Double-precision floating point throughout
§Benchmarks vs Qiskit Aer
| Model | LogosQ | Qiskit Aer | Fidelity Diff |
|---|---|---|---|
| Depolarizing | 0.9234 | 0.9231 | < 0.001 |
| Amplitude Damping | 0.8876 | 0.8879 | < 0.001 |
| Thermal Relaxation | 0.8543 | 0.8540 | < 0.001 |
§Advanced Customization
§Custom Noise Channels
Implement the NoiseChannel trait:
use logosq_noise_modeler::{NoiseChannel, StateVector, NoiseError, KrausOperator};
struct MyCustomNoise {
kraus_ops: Vec<KrausOperator>,
}
impl NoiseChannel for MyCustomNoise {
fn apply(&self, state: &mut StateVector, qubit: usize) -> Result<(), NoiseError> {
// Apply Kraus operators
state.apply_kraus(&self.kraus_ops, qubit)
}
fn kraus_operators(&self) -> &[KrausOperator] {
&self.kraus_ops
}
}§Thread-Safe Random Number Generation
For parallel simulations, use thread-local RNG:
use logosq_noise_modeler::ThreadSafeRng;
let rng = ThreadSafeRng::new();
// Safe to use across threads§Contributing
To add a new noise model:
- Implement
NoiseChanneltrait - Add mathematical derivation in rustdoc
- Include unit tests with known analytical results
- Add benchmarks comparing to reference implementations
§License
MIT OR Apache-2.0
§External Data Sources
Hardware noise profiles may include data from:
- IBM Quantum calibration API (subject to IBM terms)
- IonQ device specifications
§Changelog
§v0.1.0
- Initial release with core noise channels
- Hardware profile integration
- GPU acceleration support
Structs§
- Amplitude
Damping - Amplitude damping channel (T1 decay).
- BitFlip
Channel - Bit-flip channel.
- Composite
Noise Model - A composite noise model combining multiple noise sources.
- Depolarizing
Channel - Depolarizing noise channel.
- Hardware
Noise Profile - A noise profile fetched from real quantum hardware.
- Kraus
Operator - A Kraus operator for quantum channel representation.
- Phase
Damping - Phase damping channel (pure dephasing).
- Phase
Flip Channel - Phase-flip channel.
- State
Vector - A quantum state vector representation.
- Thermal
Relaxation - Thermal relaxation channel combining T1 and T2 effects.
- Thread
Safe Rng - Thread-safe random number generator for parallel simulations.
Enums§
- Noise
Error - Errors that can occur during noise modeling operations.
Traits§
- Noise
Channel - A quantum noise channel that can be applied to a state vector.
- Noise
Model - A complete noise model that can be applied to circuits.