LaserPy_Quantum provides an intuitive interface for simulating complex laser interactions, current drivers, and interferometer setups, with plans to offload performance-critical components to Rust for high-speed numerical computations. A high-level, open-source Python library designed for the theoretical simulation of laser systems in quantum communication and cryptographic protocols.
- High-Level API for constructing laser-based quantum system simulations.
- Support for arbitrary waveform generation (AWG) and current drivers.
- Simulation of master–slave laser - configurations with injection locking.
- Built-in support for asymmetric Mach–Zehnder interferometers (AMZI) and photon detectors.
- Clock-driven simulation engine for precise time-step control.
- Extensible architecture for future modules and Rust acceleration.
LaserPy_Quantum documentation on Read the docs.
- LaserPy_Quantum is now on pypi.
pip install LaserPy_Quantum- Also, LaserPy_Quantum is under active development and welcomes opensource developers. Clone the repository locally:
git clone https://github.com/Mathwizard1/LaserPy_Quantum.git
cd LaserPy_Quantum
pip install -e .Ensure you’re using Python 3.9+.
Below is an example of using LaserPy_Quantum component and connection system with simulator:
from LaserPy_Quantum import Clock, PhysicalComponent
from LaserPy_Quantum import Connection, Simulator
from LaserPy_Quantum import display_class_instances_data
simulator_clock = Clock(dt=0.01)
simulator_clock.set(2)
simulator = Simulator(simulator_clock)
physical_device1 = PhysicalComponent()
physical_device2 = PhysicalComponent()
simulator.set((
Connection(simulator_clock, physical_device1),
Connection(physical_device1, physical_device2)
))
simulator.reset(True)
simulator.simulate()
time_data = simulator.get_data()
physical_device1.display_data(time_data)
physical_device2.display_data(time_data)
display_class_instances_data((physical_device1, physical_device2), time_data)LaserPy_Quantum’s current use case is simulating quantum key distribution (QKD) protocols using master–slave lasers with injection locking and interferometer-based detection.
It allows researchers and engineers to prototype and test theoretical setups before implementing them in hardware.
- Rust-based backend for high-performance simulation.
- Expanded library of optical components (modulators, detectors, etc.).
-
convert information passing from dictionary to namedtuples
-
global config singleton
-
Quantum gates
-
Rust based critical parts off-loading
-
Component behaviour refinement
-
More components
- TODO Optical Circulator
- TODO multiport interferometer
- GUI
We welcome contributions!
Feel free to fork the repo, open issues, or submit pull requests.
LaserPy_Quantum is distributed under a dual-license model to support both the open-source community and commercial applications.
-
Open Source: For academic, personal, and open-source projects, LaserPy_Quantum is licensed under the GNU General Public License v3.0 (GPLv3). Note: Modifications or Derived works on Components system requires maintainer's permission.
-
Commercial: For use in proprietary or commercial software where the terms of GPLv3 are not suitable, a separate commercial license is available. Please contact the maintainer to discuss licensing options.
Maintained by Anshurup Gupta.
For questions or collaborations, open an issue or email.
