pulses.jl

A tiny quantum optimal control library.

https://github.com/rustybamboo/pulses.jl

Science Score: 67.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 3 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (9.0%) to scientific vocabulary

Keywords

optimal-control quantum quantum-computing
Last synced: 6 months ago · JSON representation ·

Repository

A tiny quantum optimal control library.

Basic Info
  • Host: GitHub
  • Owner: RustyBamboo
  • License: mit
  • Language: Julia
  • Default Branch: main
  • Homepage:
  • Size: 5.71 MB
Statistics
  • Stars: 15
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 1
Topics
optimal-control quantum quantum-computing
Created about 3 years ago · Last pushed about 3 years ago
Metadata Files
Readme License Citation

README.md

Pulses.jl

Quantum optimal control made easy.

What is Quantum Optimal Control?

We go through life interacting with mechanisms that are controlled. For example, cruise control in a car will maintain a specific speed by appropriately applying fuel into the engine (or breaking). Of course, for the car to understand when it should apply fuel, it must have some feedback (closed-loop control)-- such as the speedometer. There are systems that do not need feedback (open-loop control), such as an electric clothes dryer that will continue operating for some time, regardless of clothes dryness.

Quantum systems, such as quantum computers, have parameters that we can control -- similar to the injection of fuel to a car engine, or the amount of heat to generate for an electric clothes dryer. The goal of quantum optimal control is to produce a desired operation (e.g. a quantum gate, or a quantum state) by computing pulses.

Why Pulses.jl?

There are already many quantum optimal control software packages out in the universe. Pulses.jl attempts to be tiny (under 100 lines of code!), while also being quite powerful. We achieve this by utilizing Julia and the Julia ecosystem, such as:

Usage

julia-repl ] activate . target = [...;...] system = System(H_d, [H_c, ...]) initial_pulse = [...] sol = Pulses.find_pulse(target, system, Δt, inital_pulse)

You may find more examples in examples.

Examples

Here are some examples and visualizations that were generated with Pulses.jl. The system Hamiltonians are taken to be superconducting Transmons.

Namely, the problem is the find pulses $\alpha(t)$ given a model of quantum device, whose Hamiltonian has the general form:

$$H(t) = Hd + \sumi \alphai(t) H{ci}$$ where $Hd$ is the _drift Hamiltonian, and $H_c$ are Hamiltonians that interact with the system with come coupling $\alpha(t)$. The quantum gates are then solutions to the Schrödinger equation:

$$U(tf, ti) = \mathcal{T} \exp\left(-i \int{ti}^{t_f} H(t) dt\right).$$

The goal is to find $\alpha(t)$ such that $U$ is equal to our desired quantum gate.

Hadamard Gate (H)

We want the Hadamard gate, which in matrix form is:

math H = \frac{1}{\sqrt{2}} \begin{bmatrix} 1 & 1 \\ 1 & -1 \end{bmatrix}

Pulses.jl finds the minimum of this loss landscape:

Loss landscape

We then plot the found pulses, and also evolve a qubit in time using the pulses. Namely, starting in the state $\ket{0}$, we look at $\ket{\psi(t)} = U(t)\ket{0}$, where at final $t=T$, $\ket{\psi(T)} = H\ket{0} = \frac{1}{\sqrt{2}}\left(\ket{0} + \ket{1}\right)$.

Pulses for Hadamard gate

Plot of $\ket{\psi(t)}$ on the Bloch sphere:

Pulses for Hadamard gate

Controlled-NOT (CNOT)

We want the CNOT gate, which in matrix form is:

math CNOT = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \end{bmatrix}

Pulses.jl finds the minimum of this loss landscape:

CNOT

We then plot the evolution of the gate $U(t)$ given the found pulses. At final moment in time $t=T$, the gate is indeed $U(T) = CNOT$.

CNOT

How to cite

DOI

@software{Volya_Pulses_jl_A_tiny_2022, author = {Volya, Daniel}, title = {{Pulses.jl: A tiny quantum optimal control library.}}, month = {12}, year = {2022}, publisher = {Zenodo}, url = {https://github.com/RustyBamboo/Pulses.jl}, }

License

Distributed under the MIT License. See LICENSE for more information.

Owner

  • Name: Daniel
  • Login: RustyBamboo
  • Kind: user
  • Location: Florida

A computer science, mathematics, and quantum computing enthusiast.

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "Volya"
  given-names: "Daniel"
  orcid: "https://orcid.org/0000-0001-5026-5646"
title: "Pulses.jl: A tiny quantum optimal control library."
date-released: 2022-12-15
url: "https://github.com/RustyBamboo/Pulses.jl"

GitHub Events

Total
  • Watch event: 2
Last Year
  • Watch event: 2