Skip to main content

Python bindings for QuantRS2-Core quantum computing framework

Project description

QuantRS2-Core: Advanced Quantum Computing Foundation

Crates.io Documentation License

QuantRS2-Core is the foundational library of the QuantRS2 quantum computing framework, providing a comprehensive suite of quantum computing primitives, algorithms, and optimizations that power the entire ecosystem.

Core Features

Basic Quantum Primitives

  • Type-Safe Qubit Identifiers: Zero-cost abstractions with compile-time validation
  • Comprehensive Gate Library: All standard quantum gates with optimized matrix representations
  • Quantum Registers: Fixed-size register types using const generics
  • Robust Error Handling: Comprehensive error types with detailed diagnostics

Advanced Decomposition Algorithms

  • Solovay-Kitaev: Universal gate set approximation with configurable precision
  • Clifford+T Decomposition: T-count optimization for fault-tolerant computing
  • KAK Decomposition: Multi-qubit gate decomposition with recursive algorithms
  • Shannon Decomposition: Optimal gate count decomposition for arbitrary unitaries
  • Cartan Decomposition: Two-qubit gate decomposition using Lie algebra

Quantum Machine Learning

  • QML Layers: Rotation, entangling, and hardware-efficient layers
  • Data Encoding: Feature maps and data re-uploading strategies
  • Training Framework: Optimizers, loss functions, and hyperparameter optimization
  • Variational Algorithms: VQE, QAOA with automatic differentiation

Error Correction & Fault Tolerance

  • Quantum Error Correction: Surface, color, and Steane codes
  • Stabilizer Formalism: Pauli strings and syndrome decoding
  • Noise Models: Comprehensive quantum channel representations
  • Topological QC: Anyonic models, braiding operations, and fusion trees

Advanced Computing Paradigms

  • MBQC: Measurement-based quantum computing with cluster states
  • Tensor Networks: Efficient contraction algorithms and optimization
  • Fermionic Systems: Jordan-Wigner and Bravyi-Kitaev transformations
  • Bosonic Systems: Continuous variable quantum computing

Performance & Optimization

  • GPU Acceleration: CUDA and OpenCL backend support
  • SIMD Operations: Vectorized quantum state operations
  • Batch Processing: Parallel execution of quantum circuits
  • ZX-Calculus: Graph-based circuit optimization
  • Memory Efficiency: Optimized state vector representations

Usage

Basic Quantum Operations

use quantrs2_core::prelude::*;

fn main() -> QuantRS2Result<()> {
    // Create qubits and apply basic gates
    let q0 = QubitId::new(0);
    let q1 = QubitId::new(1);
    
    // Standard gates
    let x_gate = XGate::new();
    let h_gate = HGate::new();
    let cnot = CXGate::new();
    
    // Parametric gates
    let rz = RZGate::new(std::f64::consts::PI / 4.0);
    
    // Controlled operations
    let controlled_x = make_controlled(XGate::new(), vec![q0]);
    
    Ok(())
}

Gate Decomposition

use quantrs2_core::prelude::*;

fn decomposition_example() -> QuantRS2Result<()> {
    // Solovay-Kitaev decomposition
    let config = SolovayKitaevConfig::default();
    let sk = SolovayKitaev::new(config);
    let target_gate = RYGate::new(0.123);
    let sequence = sk.decompose(&target_gate, 10)?;
    
    // Clifford+T decomposition for fault-tolerant computing
    let decomposer = CliffordTDecomposer::new();
    let ct_sequence = decomposer.decompose_gate(&target_gate)?;
    let t_count = count_t_gates_in_sequence(&ct_sequence);
    
    // KAK decomposition for two-qubit gates
    let cnot = CXGate::new();
    let kak_decomp = decompose_two_qubit_kak(&cnot.matrix())?;
    
    Ok(())
}

Quantum Machine Learning

use quantrs2_core::prelude::*;

fn qml_example() -> QuantRS2Result<()> {
    // Create QML layers
    let rotation_layer = RotationLayer::new(4, vec!['X', 'Y', 'Z']);
    let entangling_layer = EntanglingLayer::circular(4);
    
    // Build a QML circuit
    let mut circuit = QMLCircuit::new(4);
    circuit.add_layer(Box::new(rotation_layer));
    circuit.add_layer(Box::new(entangling_layer));
    
    // Training configuration
    let config = TrainingConfig {
        learning_rate: 0.01,
        epochs: 100,
        batch_size: 32,
        optimizer: Optimizer::Adam,
        loss_function: LossFunction::MeanSquaredError,
    };
    
    Ok(())
}

Error Correction

use quantrs2_core::prelude::*;

fn error_correction_example() -> QuantRS2Result<()> {
    // Surface code for error correction
    let surface_code = SurfaceCode::new(3, 3)?;
    let stabilizers = surface_code.stabilizers();
    
    // Syndrome measurement and decoding
    let syndrome = vec![0, 1, 0, 1]; // Example syndrome
    let decoder = LookupDecoder::new(&surface_code);
    let correction = decoder.decode(&syndrome)?;
    
    // Quantum channels for noise modeling
    let depolarizing = QuantumChannels::depolarizing(0.01);
    let amplitude_damping = QuantumChannels::amplitude_damping(0.05);
    
    Ok(())
}

Batch Operations & GPU Acceleration

use quantrs2_core::prelude::*;

fn batch_and_gpu_example() -> QuantRS2Result<()> {
    // Create batch state vectors for parallel processing
    let batch_config = BatchConfig::new(1000, 4); // 1000 states, 4 qubits each
    let mut batch = create_batch(&batch_config)?;
    
    // Apply gates to entire batch
    apply_single_qubit_gate_batch(&mut batch, 0, &HGate::new())?;
    apply_two_qubit_gate_batch(&mut batch, 0, 1, &CXGate::new())?;
    
    // GPU acceleration (if available)
    let gpu_config = GpuConfig::default();
    let gpu_backend = GpuBackendFactory::create(&gpu_config)?;
    let gpu_state = gpu_backend.create_state_vector(10)?;
    
    Ok(())
}

Module Structure

Core Foundations

  • error.rs: Comprehensive error types and result wrappers
  • gate.rs: Gate trait definitions and standard quantum gates
  • qubit.rs: Type-safe qubit identifier with zero-cost abstractions
  • register.rs: Quantum register types with const generics
  • complex_ext.rs: Extended complex number operations for quantum states
  • matrix_ops.rs: Efficient quantum matrix operations with SciRS2 integration
  • operations.rs: Non-unitary quantum operations (measurements, reset, POVM)

Decomposition & Synthesis

  • decomposition.rs: Universal gate decomposition algorithms
  • decomposition/solovay_kitaev.rs: Universal gate set approximation
  • decomposition/clifford_t.rs: Fault-tolerant gate decomposition
  • synthesis.rs: Unitary matrix synthesis into gate sequences
  • shannon.rs: Quantum Shannon decomposition with optimal gate counts
  • cartan.rs: Cartan (KAK) decomposition using Lie algebra
  • kak_multiqubit.rs: Multi-qubit KAK decomposition with recursive algorithms

Advanced Quantum Systems

  • fermionic.rs: Fermionic operators with Jordan-Wigner transformations
  • bosonic.rs: Bosonic operators for continuous variable quantum computing
  • topological.rs: Anyonic models, braiding operations, and fusion trees
  • mbqc.rs: Measurement-based quantum computing with cluster states
  • tensor_network.rs: Tensor network representations and contraction algorithms

Error Correction & Fault Tolerance

  • error_correction.rs: Quantum error correction codes (surface, color, Steane)
  • quantum_channels.rs: Quantum channel representations (Kraus, Choi, Stinespring)
  • characterization.rs: Gate characterization and eigenstructure analysis

Optimization & Performance

  • optimization/: Circuit optimization passes and algorithms
    • compression.rs: Gate sequence compression with configurable strategies
    • fusion.rs: Gate fusion for reducing circuit depth
    • peephole.rs: Local optimization patterns and T-count reduction
    • zx_optimizer.rs: ZX-calculus based optimization passes
  • zx_calculus.rs: ZX-diagram representation and manipulation
  • zx_extraction.rs: Circuit extraction from ZX-diagrams
  • simd_ops.rs: SIMD-accelerated quantum operations
  • memory_efficient.rs: Memory-optimized state vector representations

Variational & Machine Learning

  • variational.rs: Variational quantum circuits with automatic differentiation
  • variational_optimization.rs: Optimization algorithms for variational methods
  • qml/: Quantum machine learning components
    • layers.rs: Parameterized quantum layers (rotation, entangling, pooling)
    • encoding.rs: Data encoding strategies and feature maps
    • training.rs: Training algorithms and hyperparameter optimization
  • parametric.rs: Parametric gates with symbolic computation
  • qaoa.rs: Quantum Approximate Optimization Algorithm
  • qpca.rs: Quantum Principal Component Analysis

Specialized Algorithms

  • hhl.rs: HHL algorithm for linear systems
  • eigensolve.rs: Quantum eigenvalue algorithms
  • quantum_counting.rs: Quantum counting and amplitude estimation
  • quantum_walk.rs: Discrete and continuous quantum walks

Hardware & Acceleration

  • gpu/: GPU acceleration support
    • mod.rs: GPU backend abstractions
    • cpu_backend.rs: CPU fallback support
  • controlled.rs: Efficient controlled gate operations
  • batch/: Batch processing for parallel quantum computations
    • operations.rs: Batch gate operations
    • execution.rs: Batch circuit execution
    • measurement.rs: Batch measurement and tomography
    • optimization.rs: Batch parameter optimization

Testing & Validation

  • testing.rs: Quantum-specific testing utilities and assertions

API Overview

Core Types

  • QubitId: Type-safe qubit identifier with zero-cost abstractions
  • Register<N>: Fixed-size quantum register using const generics
  • QuantRS2Error: Comprehensive error enumeration with detailed diagnostics
  • QuantRS2Result<T>: Convenient result type alias for error handling

Gate System

  • GateOp: Core trait for quantum gates with matrix representations
  • Standard gates: XGate, YGate, ZGate, HGate, SGate, TGate, CXGate, CZGate
  • Parametric gates: RXGate, RYGate, RZGate, U1Gate, U2Gate, U3Gate
  • Controlled operations: ControlledGate, MultiControlledGate, ToffoliGate, FredkinGate

Decomposition & Synthesis

  • SolovayKitaev: Universal gate set approximation with configurable precision
  • CliffordTDecomposer: T-count optimization for fault-tolerant computing
  • KAKDecomposition: Multi-qubit gate decomposition structures
  • ShannonDecomposer: Optimal gate count decomposition algorithms
  • CartanDecomposer: Two-qubit gate decomposition using Lie algebra

Machine Learning

  • QMLLayer: Base trait for quantum machine learning layers
  • QMLCircuit: Parameterized quantum circuits for ML applications
  • TrainingConfig: Configuration for quantum ML training
  • VariationalGate: Gates with trainable parameters and autodiff support

Error Correction

  • StabilizerCode: Base trait for quantum error correction codes
  • SurfaceCode, ColorCode: Specific error correction codes
  • QuantumChannel: Noise models with Kraus, Choi, and Stinespring representations
  • SyndromeDecoder: Syndrome decoding algorithms (lookup, MWPM)

Advanced Computing

  • TensorNetwork: Tensor network representations with contraction optimization
  • FermionOperator: Fermionic system representations with transformations
  • BosonOperator: Bosonic operators for continuous variable systems
  • AnyonType: Topological quantum computing with anyonic models

Performance & Optimization

  • BatchStateVector: Parallel processing of multiple quantum states
  • GpuBackend: GPU acceleration for quantum computations
  • ZXDiagram: ZX-calculus based circuit optimization
  • OptimizationPass: Circuit optimization pass framework

Performance Features

SIMD Acceleration

  • Vectorized quantum state operations using platform-specific SIMD instructions
  • Optimized inner products, normalizations, and phase applications
  • Batch processing of expectation values

Memory Optimization

  • Efficient state vector representations with configurable precision
  • Sparse matrix support through SciRS2 integration
  • Memory-mapped storage for large gate databases

GPU Computing

  • CUDA and OpenCL backend support for large-scale simulations
  • Optimized kernels for common quantum operations
  • Automatic fallback to CPU processing

SciRS2 Integration

  • Advanced linear algebra operations using SciRS2's optimized BLAS/LAPACK bindings
  • Sparse matrix solvers for large quantum systems
  • Parallel algorithms for batch quantum computations

Technical Details

  • Zero-cost abstractions: QubitId uses #[repr(transparent)] for no runtime overhead
  • Column-major storage: Gate matrices stored for optimal BLAS compatibility
  • Const generics: Compile-time validation of quantum register sizes
  • Trait specialization: Optimized handling for common gate patterns
  • Error propagation: Comprehensive error handling with detailed context

Integration with QuantRS2 Ecosystem

Circuit Module Integration

  • Provides foundational gate types for circuit construction
  • Supplies optimization passes for circuit compilation
  • Offers decomposition algorithms for gate translation

Simulation Module Integration

  • Supplies optimized matrix representations for quantum simulation
  • Provides batch processing capabilities for parallel simulations
  • Offers GPU acceleration for large-scale quantum computations

Device Module Integration

  • Provides gate calibration data structures for hardware backends
  • Supplies noise models for realistic quantum device simulation
  • Offers translation algorithms for device-specific gate sets

ML Module Integration

  • Provides QML layers and training frameworks
  • Supplies variational optimization algorithms
  • Offers automatic differentiation for quantum gradients

License

This project is licensed under either:

at your option.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

quantrs2_core_extension-0.1.0a5.tar.gz (707.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

quantrs2_core_extension-0.1.0a5-cp38-abi3-macosx_11_0_arm64.whl (394.4 kB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

File details

Details for the file quantrs2_core_extension-0.1.0a5.tar.gz.

File metadata

File hashes

Hashes for quantrs2_core_extension-0.1.0a5.tar.gz
Algorithm Hash digest
SHA256 0a13f1d7966abb61b53a58e0ca98247c4a3341d6c6b13b88e727844ade2ddfbb
MD5 5505140887f0ebd34d14261bac3a6da1
BLAKE2b-256 33bf9023b44643c8a5e7b4c18547fee4cbccfd4866e1d46ffb7a179bb9f4ad48

See more details on using hashes here.

File details

Details for the file quantrs2_core_extension-0.1.0a5-cp38-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for quantrs2_core_extension-0.1.0a5-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e54f7841213d612f7a60965aab8890c3ed70c50472a083622e809478a61f12c7
MD5 8bed1ab273be1a43dc5bfb45a731f35f
BLAKE2b-256 191a6da01826e0d2901ba790046c055e01ae19ff2b63e3e34d0f8f17b60e7e60

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page