Version 0.2.0 (Nov 26, 2021)

This release adds a few new features to the pulse-level simulator.

PRs are collected


  • MAJOR Add the Model class that represents the physical model including hardware parameters, control and drift Hamiltonians and noise objects. (#105)

  • Separate the gate definition from the QubitCircuit.propagators method (#83)

  • Support different pulse shapes. (#85)

  • Use autosummary to generate a summary of API docs. (#103)

  • Improve the scheduling algorithm. (#105)


Compatibility Note: The behaviour of Processor.pulses changes significantly from version 0.1 to version 0.2. In 0.1, if no control coefficients are added, pulses contains a list of partially initialized Pulse objects. They include control Hamiltonians but have no coefficients or tlist. This behaviour has changed. From 0.2, the list only includes controls that have non-trivial dynamics. To inspect the available control Hamiltonians, please use Processor.get_control and Processor.get_control_labels.

Version 0.1.2 (Nov 25, 2021)

This micro release adds more thorough documentation for the project and fixes a few bugs in QubitCircuit and Processor.

PRs are collected at


  • Efficient Hadamard transform. (#103)

  • Make circuit latex code accessible in QubitCircuit. (#108)

Bug Fixes

  • Fix the leaking noise objects in Processor. (#89)

  • Fix a bug in time-dependent collapse operators in Processor. (#107)

Version 0.1.1 (July 28, 2021)

This micro release adds more thorough documentation for the project and fixes a few bugs in QubitCircuit and Processor.

PRs are collected here.


  • Improve the documentation.

  • Workflows for releases and automatically building the documentation, migrated from qutip. (#49, #78)

  • The part of tex code taken from circuit is removed due to licence issue. Instead, the latex code now requires the user to install qcircuit in advance. (#61)

  • Rename Noise.get_noisy_dynamics with Noise.get_noisy_pulses. The new name is more appropriate because it returns a list of Pulse, not a QobjEvo. The old API is deprecated. (#76)

  • Add more thorough documentation for installing external dependencies for circuit plotting. (#65)

Bug Fixes

  • Add the missing drift Hamiltonian to the method Processor.run_analytically. It was missing because only the control part of the Hamiltonian is added. (#74)

  • Fix a few bugs in QubitCircuit: Make QubitCircuit.propagators_no_expand private. It will be removed and replaced by QubitCircuit.propagators. The attributes QubitCircuit.U_list is also removed. (#66)

Developer Changes

  • Documentation is moved from /docs to /doc. (#49, #78)

Version 0.1.0 (May 14, 2021)

This is the first release of qutip-qip, the Quantum Information Processing package in QuTiP.

The qutip-qip package used to be a module qutip.qip under QuTiP (Quantum Toolbox in Python). From QuTiP 5.0, the community has decided to decrease the size of the core QuTiP package by reducing the external dependencies, in order to simplify maintenance. Hence a few modules are separated from the core QuTiP and will become QuTiP family packages. They are still maintained by the QuTiP team but hosted under different repositories in the QuTiP organization.

The qutip-qip package, QuTiP quantum information processing, aims at providing basic tools for quantum computing simulation both for simple quantum algorithm design and for experimental realization. Compared to other libraries for quantum information processing, qutip-qip puts additional emphasis on the physics layer and the interaction with the QuTiP package. The package offers two different approaches for simulating quantum circuits, one with QubitCircuit calculating unitary evolution under quantum gates by matrix product, another called Processor using open system solvers in QuTiP to simulate the execution of quantum circuits on a noisy quantum device.