##qy
Quantum photonics with Python. Control and automation, DAQ, IO, simulation, graphics, GUI, analysis.
This library is tested under Python27. It depends on numpy, matplotlib. For RS-232 communication with hardware, we need the pySerial library. For GUIs, we use wx.
Some old modules still depend on Scipy and Cython --- soon these will no longer be required.
To quickly get started with qy
under Microsoft Windows, use the precompiled installer: TODO: implement this!
qy
includes a number of optimized Python extensions written in C
. If you want to modify and/or build from source, you will need a C
compiler (I suggest MinGW under Windows). A simple build/install is then done with
$ python setup.py build
$ python setup.py install
You may need to tell setuptools
which compiler to use
$ python setup.py build -c mingw32
$ python setup.py instal
If you are modifying code in qy
, I strongly reccomend the develop
mode provided by setuptools
:
$ python setup.py develop
This saves typing python setup.py install
before each test.
qy.analysis
Statistical/data analysis. Coincidence counting, classical metrics, etc.qy.formats
File formats. Currently just theCTX
format, which attempts to provide a sane representation of laboratory data.qy.graphics
Utility functions for graphing. Color pallettes. Some example code for generating 3D plots with POVRay.qy.gui
wx
-based user interface modules for various pieces of lab hardware. Focus on coincidence counting.qy.hardware
Interfaces to motor controllers, lasers, timetaggers, FPGAs, Arduinos, etc.qy.settings
Keeps global settings forqy
in a single place. Uses anrc
-like format.qy.simulation
Includes definitions for the circuit model (basis states, Paulis, 1-qubit/2-qubit gates), some bulk optical elements (HWP, QWP, polarizer etc).qy.simulation.linear_optics
A genericp
-photons-in-m
-modes linear-optics simulator. Based around an optimized implementation of the permanent. Draws pretty pictures, and is quite fast for certain scenarios.qy.util
Stuff with no other home. Timestamping, progress bars, unicode wrangling.
###TODO
- Optimize
settings
module (and standardize torc
format?). - Get rid of Scipy (
$ grep -rl "scipy" ./
) - Stress test cython code in
linear_optics
- Tidy up
hardware
modules, get code from other people e.g. PicoHarp