Skip to main content

Python implementation of Krotov's method for quantum optimal control

Project description

Krotov Python Package

Source code on Github Krotov on the Python Package Index Join the chat at https://gitter.im/qucontrol_krotov/Lobby Travis Continuous Integration AppVeyor Continuous Integration Coveralls Documentation Status BSD License

Python implementation of Krotov’s method for quantum optimal control.

This implementation follows the original implementation in the QDYN Fortran library. The method is described in detail in D. M. Reich, M. Ndong, and C. P. Koch, J. Chem. Phys. 136, 104103 (2012) (arXiv:1008.5126)

The krotov package is built on top of QuTiP.

Development happens on Github. You can read the full documentation at ReadTheDocs.

Purpose

Optimal control is one of the cornerstones of quantum technology. It asks the question how to make a manipulate the dynamics of a quantum system behave some desired way. See Glaser et al. Eur. Phys. J. D 69, 279 (2015) for an overview of the research field.

Krotov’s method is one of the two leading gradient-based optimization algorithms used in quantum optimal control. To date, there has not been an open source implementation of the method. This package provides this missing implementation.

The choice of Python as an implementation language is due to Python’s easy to learn syntax, expressiveness, and immense popularity in the scientific community. Moreover, the QuTiP library exists to provide the foundations of numerically describing quantum systems, and already includes basic versions of some of the other popular algorithms in quantum control, the gradient-based GRAPE and the gradient-free CRAB. The availability of the Jupyter notebook system provides an ideal platform for demonstrating the use of the method.

The Krotov package is targeted both towards students wishing to enter the field of quantum control, and researchers in the field. By providing a rich set of examples of how the package can be used to reproduce the solutions of control problems from recent publications, we enable users of our package to explore how to formulate typical control problems, and how to use Krotov’s method to solve them.

The choice of Python implies that for large-scale control problems, performance may become a significant issue. In this case, it may be necessary to implement Krotov’s method in a more efficient (compiled) language. While the method as such is relatively straightforward, there are some subtleties involved, which are explained both in the package documentation and in the source code. Thus, the Krotov package serves as a reference implementation, leveraging Python’s reputation as “executable pseudocode”, and as a foundation against which to test.

Prerequisites

The Krotov package is available for Python versions >= 3.5. Its main dependency is QuTiP (apart from the core packages of the Python scientific ecosystem). Thus, you should consider QuTiP’s installation instructions.

In any case, using some sort of virtual environment is strongly encouraged. Most packages in the Python scientific ecosystem are now available as wheels, making installation via pip easy. However, QuTiP currently does not provide wheels. Thus, on systems that do not have the necessary compilers installed (Windows, macOS), the conda package manager provides a good solution.

Assuming conda is installed (e.g. through Miniconda), the following commands set up a virtual (conda) environment into which the Krotov package can then be installed:

$ conda create -n qucontrolenv python=3.6
$ conda activate qucontrolenv
$ conda config --append channels conda-forge
$ conda install qutip

Installation

To install the latest released version of krotov into your current (conda) environment, run this command in your terminal:

$ pip install krotov

This is the preferred method to install the krotov package, as it will always install the most recent stable release.

You may also do

$ pip install krotov[dev,extras]

to install additional development dependencies, including packages required to run the example notebooks.

If you don’t have pip installed, this Python installation guide, respectively the Python Packaging User Guide can guide you through the process.

To install the latest development version of krotov from Github:

$ pip install git+https://github.com/qucontrol/krotov.git@master#egg=krotov

Usage

To use Krotov’s method for quantum optimal control in a Python script or Jupyter notebook, start with:

import krotov

Then,

  • define the necessary quantum operators and states using QuTiP.

  • create a list of objectives, as instances of krotov.Objective

  • call krotov.optimize_pulses to perform an optimization of an arbitrary number of control fields over all the objectives.

See Using Krotov with QuTiP and Examples for details.

History

0.2.0 (2019-02-14)

  • Added: Implementation of all the standard functionals

  • Added: The info_hook receives additional information, including ∫gₐ(t)dt (#32)

  • Added: Initialization of objectives for gate optimization in Liouville space

  • Added: A new propagator DensityMatrixODEPropagator for faster density matrix propagation

  • Added: Support for “stateful” propagators by sublassing from krotov.propagators.Propagator

  • Changed: more flexibility for parallelization (#29)

  • Added: Support for the second-order pulse update

  • Changed: The options for the controls (λₐ, update-shape) are now passed through a simplified dict interface, instead of a custom PulseOptions class.

0.1.0 (2018-12-24)

  • Initial release with complete implementation of first-order Krotov’s method

  • Support for state-to-state and gate optimization, for both closed and open systems

0.0.1 (2018-11-06)

  • Non-functional placeholder release

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

krotov-0.2.0.tar.gz (1.5 MB view details)

Uploaded Source

Built Distribution

krotov-0.2.0-py2.py3-none-any.whl (54.9 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file krotov-0.2.0.tar.gz.

File metadata

  • Download URL: krotov-0.2.0.tar.gz
  • Upload date:
  • Size: 1.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.7.3 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.8

File hashes

Hashes for krotov-0.2.0.tar.gz
Algorithm Hash digest
SHA256 c8b151b37d481d0484bfe8945c9b92adc9d715d9fa8c418e49a0d793a2f55e47
MD5 998b53a45241a84378ab4d0e9c7b6a36
BLAKE2b-256 6bf2c8def01c8aaa6679a96e22e9410ee293f9b37656f173a9b1f068c4383293

See more details on using hashes here.

File details

Details for the file krotov-0.2.0-py2.py3-none-any.whl.

File metadata

  • Download URL: krotov-0.2.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 54.9 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.7.3 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.8

File hashes

Hashes for krotov-0.2.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 dd42f8482965786fbeb96801f43b158739c993d9be571f8dcc98204614be189f
MD5 5716f90cdf6ff1501e06d8dc98d001b1
BLAKE2b-256 f96854c1d8d003dcff876dbe91120f09cd80181d44f3a4bbe07a03f16d2d6236

See more details on using hashes here.

Supported by

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