Table Of Contents

Next topic

Utilities (qit.utils)

This Page


Quantum Information Toolkit (QIT) is a free, open source Python 2.7 / Python 3 package for various quantum information and computing -related purposes, released under GNU GPL. It is a sister project of the MATLAB Quantum Information Toolkit and has equivalent functionality. QIT requires the following Python libraries:

For interactive use the IPython interactive shell is recommended.

The latest version can be found on our website,

The toolkit is installed by downloading it from the Python Package Index, or directly from the Git repository. For an interactive session, start IPython with

ipython --pylab

and then import the toolkit using

from qit import *

To get an overview of the features and capabilities of the toolkit, run examples.tour()


QIT is released under the GNU General Public License version 3. This basically means that you can freely use, share and modify it as you wish, as long as you give proper credit to the authors and do not change the terms of the license. See LICENSE.txt for the details.

Design notes

The main design goals for this toolkit are ease of use and comprehensiveness. It is primarily meant to be used as a tool for hypothesis testing, small simulations, and learning, not for computationally demanding simulations. Hence optimal efficiency of the algorithms used is not a number one priority. However, if you think an algorithm could be improved without compromising accuracy or maintainability, please let the authors know or become a contributor yourself!


QIT is an open source project and your contributions are welcome. To keep the code readable and maintainable, we ask you to follow these coding guidelines:

  • Fully document all the modules, classes and functions using docstrings (purpose, calling syntax, output, approximations used, assumptions made...). The docstrings may contain reStructuredText markup for math, citations etc.
  • Add relevant literature references to doc/refs.bib and cite them in the function or module docstring using sphinxcontrib-bibtex syntax.
  • Instead of using multiple similar functions, use a single function performing multiple related tasks, see e.g. qit.state.state.measure.
  • Raise an exception on invalid input.
  • Use variables sparingly, give them descriptive (but short) names.
  • Use brief comments to explain the logic of your code.
  • When you add new functions also add testing scripts for validating your code. If you modify existing code, make sure you didn’t break anything by checking that the testing scripts still run successfully.


  • Ville Bergholm 2008-2014
  • Jacob D. Biamonte 2008-2009
  • James D. Whitfield 2009-2010

Indices and tables