Skip to content
This repository has been archived by the owner on May 1, 2021. It is now read-only.

Google Season of Docs 2020

Nathan Shammah edited this page Apr 29, 2020 · 1 revision

Google Season of Docs aims to "provide a framework for technical writers and open source projects to work together towards the common goal of improving an open source project's documentation."

Supporting Organization

QuTiP is applying to Google Season of Docs 2020 with Unitary Fund, a 501(c)(3) non-profit organization that helps creating a quantum technology ecosystem that benefits the most people. QuTiP is an affiliated project of Unitary Fund.

Mentors

  • Alex Pitchford, @ajgpitch
  • Shahnawaz Ahmed, @quantshah

How does it work?

  • Open source organizations apply to be mentor organizations in this year's Season of Docs. They may submit a list of documentation project ideas with their applications.

  • Technical writers explore the list of participating organizations and choose the projects that interest them. A technical writer may contact the relevant organizations to discuss their ideas. The technical writer then writes up a project proposal and submits it to Season of Docs.

  • The organizations confirm the technical writing projects that they want to mentor.

  • The accepted technical writers spend a few months working with mentors from the open source organizations to complete their projects.

  • At the end of the program, the Google program administrators announce the projects that finished successfully.

QuTiP

  • QuTiP is the open-source software to study quantum physics. It develops both an intuitive playground to understand quantum mechanics and cutting-edge tools to investigate it.
  • QuTiP provides the most comprehensive toolbox to characterize noise and dissipation –realistic processes– affecting quantum systems, as well as tools not only to monitor but also to minimize their impact (quantum optimal control, description of decoherence-free spaces).
  • For this reason QuTiP is a software born out of the quantum optics community and that has become increasingly relevant for the quantum computing community, as current quantum computing devices are noisy (NISQ definition by Preskill).
  • pypinfo data shows that QuTiP is popular in countries that are strong in quantum tech and quantum computing research, eg, The Netherlands in the top five, as well as countries that benefit in the use of open source software (OSS) for university coursework, eg, India.
  • In the past three years, there has been an evolution in the quantum tech community, which has embraced OSS.
  • OSS libraries are used as a means to grow the user base, as well as in a more structural way for quantum computers, as they provide cloud access to quantum devices, e.g., IBM Q.
  • QuTiP is the only major library that has continued to thrive in this ecosystem, competing with other library packages that are funded by corporations or VC-backed startups/
  • Since the tools of QuTiP provide a common ground to study quantum mechanics, it is important that this independent project is provided with the necessary support to thrive
  • As access to quantum computers becomes more and more widespread also for the use of data scientist and QuTiP's popularity grows even more for undergraduate and graduate courses, becoming the de-facto standard OSS to study quantum optical systems, it is imperative that the QuTiP library makes a quality jump to provide a comprehensive introduction to its tools for a much broader community of users.

Ideas

There are two major directions for enhancing QuTiP documentation.

The first idea would be an overhaul of the docs and updating to the latest tools such that things run smoothly. This would entail some knowledge of how documentation is built and rendered on websites. A possibility is automating the process with read the docs and redirecting the qutip docs page such that with every new version the documentation is automatically rebuilt and rendered.

The other idea would be to design new tutorials which teach quantum physics with QuTiP and showcase all its hidden functionalities. A number of tutorials are already present currently which needs to be organised systematically such that they give a self-contained. An example would be to make a basic set of lectures explaining quantum physics from the "simulation" point-of-view and then more advanced lectures for open quantum systems, ultrastrong coupling, control etc. This would require some knowledge of quantum mechanics but could also be done by re-organizing what is already present and filling in the gaps after discussions with users.

Another way to interpret this second idea would be to make a qutip/papers section which reproduces interesting results from research papers using QuTiP. There are some examples such as the qutip.piqs notebooks, optics or even a completely independent set of docs, e.g., matsubara(). A set of instructions on how to "Make your code count" should complement this so that researchers can easily add their code examples as a supplement to their research papers which use QuTiP.

1 - Re-rendering docs

Skills

The ideal candidate is a technical writer already familiar with open-source tools relevant to build a documentation.

Tasks

  • The single major task would be fixing current Sphinx incompatibilities, which currently require a tailored setting of dependencies every time the documentation is built. Note that the documentation is built from the qutip/qutip-doc and not from the qutip/qutip one. See PR 70, which began addressing a complete re-rendering of the basic documentation from scratch.

  • Add an automated running of the scripts which generate the different plots without using the Ipython directives as sometimes they break the whole documentation building process. One alternative would be to use sphinx doctests to run code snippets.

  • Better organization and linking of docs with a nice visual landing page: In order to better showcase the many high-level tutorials present in QuTiP, the docs could be organized similar to scikit-learn (see https://scikit-learn.org/stable/documentation.html and https://scikit-learn.org/).

  • Implementation of inter-documentation links using intersphinx, in order to activate hyperlinks from QuTiP to its dependencies, e.g., clickable Numpy's function in the User Guide.

  • Tutorials re-organization on the website. We have recently fixed the My Binder settings with modern conda requirements (see the relative PR) and would like to emphasize the interactive opportunities even more in the documentation and on the tutorials webpage.

  • A rationalization of the documentation graph would increase the readability.

  • Avoid search engines finding old versions of documentation by using the cannonical_url and other options of sphinx_rtd_theme.

Most of the tasks described above have associated qutip-doc issues with further details. Issues Link

All of the tasks listed above will not require previous knowledge of QuTiP for their successful completion. We have experience in mentoring students and researchers from the undergraduate level to the postdoc level, and as previous GSoC students and current GSoC mentors we have clarity on the important tasks that maximize a projects fruitful progression: communication, guidance, availability, and clear deliverables.

2 - Quantum mechanics course with QuTiP

Skills

The ideal candidate is a technical writer familiar with quantum optics and quantum information (graduate level course). The candidate is also familiar with Jupyter Notebooks and possibly with My Binder. Bonus points for familiarity with Bokeh or other interactive tools.

Tasks

This project idea stems from the opportunity of extending the way QuTiP is used to teach quantum optics and quantum information science. A series of lectures could be tailored on the following main points:

  • Quantum states and their representation: Qubit states - vector and Bloch sphere (using the Bloch class). Fock, coherent states (using the fock and coherent functions). Mixed states, density matrices. Hilbert spaces, compound systems (using the tensor function)

  • Quantum operators: Unitary transformations. Measurement operators.

  • Unitary evolution: The Hamiltonian. Schrödinger equation (using mesolve). State evolution. Schrödinger operator equation. Unitary operator evolution. Time-dependent Hamiltonians.

  • Open quantum systems: System environment interactions. Lindblad model (using mesolve). Bloch-Redfield model (using the bloch_redfield_solve ). Hierarchy Equations of Motion (using the HEOMSolver)

  • Stochastic solvers: Stochastic Schrödinger equation (ssesolve); Stochastic master equations (smesolve). Monte-Carlo quantum trajectories (mcsolve).

  • Quantum Optics: Jaynes Cummings model; Rotating-wave approximation (RWA) and the ultrastrong-coupling regime; Opto-mechanics systems.

  • Quantum Information Processing (using the qip module): Gates informations. Circuits. Algorithms. Error protection / correction.

  • Quantum Control Control theory

    • controls and targets, Lie rank criterion

Optimisation algorithms (using the pulseoptim module) - GRAPE, CRAB, Krotov.

  • Many-body systems: Permutational invariant quantum solver (using the piqs module); lattice models (developed in GSOC 2019).

About QuTiP Development

General information about Contributing to QuTiP development can be found here.

How QuTiP's documentation is built:

Our documentation is built with Sphinx with a theme from Read the Docs. We make sure that new .py files in the qutip/qutip folder have high-quality docstrings written by the contributors, and that these render well in the Sphinx-generated API documentation in qutip/qutip-doc, generated using readthedocs and hosted on qutip.org. Every time we build a new major release (every few months), we build a new documentation (version currently at 4.3). This is updated with a graph tree of existing code, updated list of contributors, and users guide examples. Alex Pitchford, lead developer, is in charge of the documentation in QuTiP.

Current documentation:

Contact

QuTiP GSoD coordinator (Alex Pitchford, alex.pitchford@gmail.com). Additional mentors will be the project's core contributors Nathan Shammah (nathan.shammah@gmail.com), Shahnawaz Ahmed (shahnawaz.ahmed95@gmail.com) and Eric Giguere (eric.giguere@usherbrooke.ca).

References

[1] J. R. Johansson, P. D. Nation, and F. Nori: “QuTiP: An open-source Python framework for the dynamics of open quantum systems.”, Comp. Phys. Comm. 183, 1760–1772 (2012)

[2] J. Robert Johansson, Paul D. Nation, and Franco Nori: “QuTiP 2: A Python framework for the dynamics of open quantum systems.”, Comp. Phys. Comm. 184, 1234 (2013)

[3] J. Preskill, "Quantum Computing in the NISQ era and beyond." Quantum 2, 79 (2018)

[4] Mark Fingerhuth, Tomáš Babej, and Peter Wittek, Open source software in quantum computing, PLoS ONE 13 (12): e0208561 (2018).

[5] N. Shammah, S. Ahmed, N. Lambert, S. De Liberato, and F. Nori, "Open quantum systems with local and collective incoherent processes: Efficient numerical simulation using permutational invariance " Phys. Rev. A 98, 063815 (2018). Code at http://piqs.readthedocs.io

[6] N. Lambert, S. Ahmed, M. Cirio, and F. Nori, "Virtual excitations in the ultra-strongly-coupled spin-boson model: physical results from unphysical modes", arXiv preprint arXiv:1903.05892. Also http://matsubara.readthedocs.io

Other relevant material:

  • Slides on QuTiP and the quantum-tech open source ecosystem (Nathan Shammah @ Berkeley Lab, 2019). PDF

  • "The rise of open source in quantum physics research", Nathan Shammah and Shahnawaz Ahmed, Nature's physics blog, January 9, 2019.

  • "Bit to QuBit: Data in the age of quantum computers", Shahnawaz Ahmed, PyData 2018, Warsaw, Poland, 2019. YouTube video.