Skip to main content

The QuTiP quantum optimal control package

Project description

QuTiP - Quantum Optimal Control

The qutip-qoc package builds up on the qutip-qtrl package.

It enhances it by providing two additional algorithms to optimize analytically defined control functions. The first one is an extension of Gradient Optimization of Analytic conTrols (GOAT). The second one (JOPT) leverages QuTiPs version 5 new diffrax abilities to directly calculate gradients of JAX defined control functions using automatic differentiation.

Both algorithms consist of a two-layer approach to find global optimal values for parameterized analytical control functions. The global optimization layer provides scipy.optimize.dual_annealing and scipy.optimize.basinhopping, while the local minimization layer supports all gradient driven scipy.optimize.minimize methods.

The package also aims for a more general way of defining control problems with QuTiP and makes switching between the four control algorithms (GOAT, JOPT, and GRAPE and CRAB implemented in qutip-qtrl) very easy.

As with qutip-qtrl, the qutip-qoc package aims at providing advanced tools for the optimal control of quantum devices. Compared to other libraries for quantum optimal control, qutip-qoc puts additional emphasis on the physics layer and the interaction with the QuTiP package. Along with the extended GOAT and JOPT algorithms the package offers support for both the CRAB and GRAPE methods defined in qutip-qtrl.

If you would like to know the future development plan and ideas, have a look at the qutip roadmap and ideas.

Quick start

To install the package, use

pip install qutip-qoc

Documentation and tutorials

The documentation of qutip-qoc updated to the latest development version is hosted at qutip-qoc.readthedocs.io. Tutorials related to using quantum optimal control in qutip-qoc can be found here.

Installation from source

If you want to edit the source code, please download the source code and run the following command under the root qutip-qoc folder,

pip install --upgrade pip
pip install -e .

which makes sure that you are up to date with the latest pip version. Contribution guidelines are available here.

To build and test the documentation, additional packages need to be installed:

pip install pytest matplotlib sphinx sphinxcontrib-bibtex numpydoc sphinx_rtd_theme sphinxcontrib-bibtex

Under the doc directory, use

make html

to build the documentation, or

make doctest

to test the code in the documentation.

Testing

To test the installation, choose the correct branch that matches with the version, e.g., qutip-qoc-0.2.X for version 0.2. Then download the source code and run from the qutip-qoc directory.

pytest tests

Citing qutip-qoc

If you use qutip-qoc in your research, please cite the original QuTiP papers that are available here.

Support

This package is supported and maintained by the same developers group as QuTiP.

Powered by NumFOCUS Unitary Fund

QuTiP development is supported by Nori's lab at RIKEN, by the University of Sherbrooke, by Chalmers University of Technology, by Macquarie University and by Aberystwyth University, among other supporting organizations.

License

license

You are free to use this software, with or without modification, provided that the conditions listed in the LICENSE.txt file are satisfied.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

qutip_qoc-0.1.0b0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (331.2 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

qutip_qoc-0.1.0b0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (328.4 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

qutip_qoc-0.1.0b0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (331.4 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

qutip_qoc-0.1.0b0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (328.1 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

qutip_qoc-0.1.0b0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (338.3 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

qutip_qoc-0.1.0b0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (323.1 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

qutip_qoc-0.1.0b0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (338.2 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

qutip_qoc-0.1.0b0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (323.1 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

qutip_qoc-0.1.0b0-cp312-cp312-musllinux_1_2_x86_64.whl (958.6 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.2+ x86-64

qutip_qoc-0.1.0b0-cp312-cp312-musllinux_1_2_i686.whl (910.1 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.2+ i686

qutip_qoc-0.1.0b0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (984.6 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

qutip_qoc-0.1.0b0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (924.0 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

qutip_qoc-0.1.0b0-cp311-cp311-musllinux_1_2_x86_64.whl (969.5 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.2+ x86-64

qutip_qoc-0.1.0b0-cp311-cp311-musllinux_1_2_i686.whl (928.1 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.2+ i686

qutip_qoc-0.1.0b0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (996.1 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

qutip_qoc-0.1.0b0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (946.6 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

qutip_qoc-0.1.0b0-cp310-cp310-musllinux_1_2_x86_64.whl (901.4 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.2+ x86-64

qutip_qoc-0.1.0b0-cp310-cp310-musllinux_1_2_i686.whl (875.7 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.2+ i686

qutip_qoc-0.1.0b0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (931.7 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

qutip_qoc-0.1.0b0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (883.5 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

qutip_qoc-0.1.0b0-cp310-cp310-macosx_11_0_arm64.whl (313.8 kB view hashes)

Uploaded CPython 3.10 macOS 11.0+ ARM64

qutip_qoc-0.1.0b0-cp39-cp39-musllinux_1_2_x86_64.whl (903.6 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.2+ x86-64

qutip_qoc-0.1.0b0-cp39-cp39-musllinux_1_2_i686.whl (880.2 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.2+ i686

qutip_qoc-0.1.0b0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (934.1 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

qutip_qoc-0.1.0b0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (886.1 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

qutip_qoc-0.1.0b0-cp38-cp38-musllinux_1_2_x86_64.whl (924.7 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.2+ x86-64

qutip_qoc-0.1.0b0-cp38-cp38-musllinux_1_2_i686.whl (895.8 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.2+ i686

qutip_qoc-0.1.0b0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (950.2 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

qutip_qoc-0.1.0b0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (897.4 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

qutip_qoc-0.1.0b0-cp37-cp37m-musllinux_1_2_x86_64.whl (845.1 kB view hashes)

Uploaded CPython 3.7m musllinux: musl 1.2+ x86-64

qutip_qoc-0.1.0b0-cp37-cp37m-musllinux_1_2_i686.whl (812.9 kB view hashes)

Uploaded CPython 3.7m musllinux: musl 1.2+ i686

qutip_qoc-0.1.0b0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (875.4 kB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

qutip_qoc-0.1.0b0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (823.0 kB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

qutip_qoc-0.1.0b0-cp36-cp36m-musllinux_1_2_x86_64.whl (837.8 kB view hashes)

Uploaded CPython 3.6m musllinux: musl 1.2+ x86-64

qutip_qoc-0.1.0b0-cp36-cp36m-musllinux_1_2_i686.whl (803.4 kB view hashes)

Uploaded CPython 3.6m musllinux: musl 1.2+ i686

qutip_qoc-0.1.0b0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (865.9 kB view hashes)

Uploaded CPython 3.6m manylinux: glibc 2.17+ x86-64

qutip_qoc-0.1.0b0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (817.1 kB view hashes)

Uploaded CPython 3.6m manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

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