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
Repository
A tiny quantum optimal control library.
Basic Info
Statistics
- Stars: 15
- Watchers: 1
- Forks: 0
- Open Issues: 0
- Releases: 1
Topics
Metadata Files
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:

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)$.
Plot of $\ket{\psi(t)}$ on the Bloch sphere:

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:

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$.

How to cite
@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
- Website: https://volya.xyz
- Repositories: 3
- Profile: https://github.com/RustyBamboo
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