Skip to content

Commit ed866e6

Browse files
committed
Initial commit
0 parents  commit ed866e6

File tree

3 files changed

+125
-0
lines changed

3 files changed

+125
-0
lines changed

.github/workflows/ExportPluto.yaml

+70
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
name: Export Pluto notebooks
2+
on:
3+
push:
4+
branches:
5+
- main
6+
- master
7+
workflow_dispatch:
8+
9+
# When two jobs run in parallel, cancel the older ones, to make sure that the website is generated from the most recent commit.
10+
concurrency:
11+
group: pluto-export
12+
cancel-in-progress: true
13+
14+
# This action needs permission to write the exported HTML file to the gh-pages branch.
15+
permissions:
16+
contents: write
17+
# (all other permission fields default to "none")
18+
19+
jobs:
20+
build-and-deploy:
21+
runs-on: ubuntu-latest
22+
steps:
23+
- name: Checkout this repository
24+
uses: actions/checkout@v4
25+
- name: Install Julia
26+
uses: julia-actions/setup-julia@v2
27+
with:
28+
version: "1" # This will automatically pick the latest Julia version
29+
- name: Cache Julia artifacts & such
30+
uses: julia-actions/cache@v2
31+
with:
32+
cache-registries: "true"
33+
# We set up a folder that Pluto can use to cache exported notebooks. If the notebook file did not change, then Pluto can take the exported file from cache instead of running the notebook.
34+
- name: Set up notebook state cache
35+
uses: actions/cache@v4
36+
with:
37+
path: pluto_state_cache
38+
key: ${{ runner.os }}-pluto_state_cache-v2-${{ hashFiles('**/Project.toml', '**/Manifest.toml', '.github/workflows/*' ) }}-${{ hashFiles('**/*jl') }}
39+
restore-keys: |
40+
${{ runner.os }}-pluto_state_cache-v2-${{ hashFiles('**/Project.toml', '**/Manifest.toml', '.github/workflows/*' ) }}
41+
- name: Run & export Pluto notebooks
42+
run: |
43+
julia -e 'using Pkg
44+
Pkg.activate(mktempdir())
45+
Pkg.add([
46+
Pkg.PackageSpec(name="PlutoSliderServer", version="0.3.2-0.3"),
47+
])
48+
49+
import PlutoSliderServer
50+
51+
PlutoSliderServer.github_action(".";
52+
Export_cache_dir="pluto_state_cache",
53+
Export_baked_notebookfile=false,
54+
Export_baked_state=false,
55+
# more parameters can go here
56+
)'
57+
- name: Inject top navigation bar
58+
run: |
59+
INSERT_CODE='<link href="https://juliaquantumcontrol.github.io/QuantumControl.jl/dev/assets/topbar/topbar.css" rel="stylesheet" type="text/css"/><script src="https://juliaquantumcontrol.github.io/QuantumControl.jl/dev/assets/topbar/topbar.js"></script>'
60+
for file in *.html; do
61+
# Use sed to insert the code before </head>
62+
sed -i "/<\/head>/i $INSERT_CODE" "$file"
63+
done
64+
- name: Deploy to gh-pages
65+
uses: JamesIves/github-pages-deploy-action@releases/v4
66+
with:
67+
token: ${{ secrets.GITHUB_TOKEN }}
68+
branch: gh-pages
69+
folder: .
70+
single-commit: true

README.md

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Tutorials for the JuliaQuantumControl Organization
2+
3+
This is a repository containing [Pluto](https://github.com/fonsp/Pluto.jl) notebook that is **automatically converted to HTML** by a GitHub action, and published to GitHub pages!

index.jl

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
### A Pluto.jl notebook ###
2+
# v0.20.5
3+
4+
using Markdown
5+
using InteractiveUtils
6+
7+
# ╔═╡ 4e470eb8-6a34-4ba4-8037-ed11cbf9e4e3
8+
md"""
9+
# Tutorials
10+
11+
The following tutorials are intended to _teach_ concepts from the packages in the [JuliaQuantumControl organization](https://github.com/JuliaQuantumControl):
12+
13+
* State-to-state transfer in a two-level-system
14+
* Optimization for an entangling two-qubit gate
15+
* Maximizing gate concurrence
16+
* An exploration of GRAPE optimizers
17+
* …
18+
19+
## Other Tutorials
20+
21+
### Tutorial for the Workshop "Quantum Optimal Control"
22+
23+
For the [2024 Workshop "Quantum Optimal Control" in Berlin, Germany](https://mathplus.de/topic-development-lab/tes-summer-2024/qoc-workshop/) a [set of notebooks using was developed](https://gitlabph.physik.fu-berlin.de/ag-koch/resources/tutorial-oct-workshop-2024) to demonstrate concepts of quantum control. These use the [Python Krotov package](https://github.com/qucontrol/krotov) and [`QuantumControl.jl`](https://github.com/JuliaQuantumControl) equivalently.
24+
25+
Please see the [README](https://gitlabph.physik.fu-berlin.de/ag-koch/resources/tutorial-oct-workshop-2024/-/blob/master/README.md?ref_type=heads) and [FAQ](https://gitlabph.physik.fu-berlin.de/ag-koch/resources/tutorial-oct-workshop-2024/-/blob/master/FAQ.md?ref_type=heads) for instructions, or [run the notebooks on Binder](https://mybinder.org/v2/gh/goerz-testing/tutorial-oct-workshop-2024/HEAD)
26+
27+
* [I.1 Population Inversion in a Two-Level-System](https://nbviewer.org/urls/gitlabph.physik.fu-berlin.de/ag-koch/resources/tutorial-oct-workshop-2024/-/raw/master/Julia/jl_exercise_1_1_TLS.ipynb)
28+
* [I.2 Population Transfer in a Three-Level-System with STIRAP](https://nbviewer.org/urls/gitlabph.physik.fu-berlin.de/ag-koch/resources/tutorial-oct-workshop-2024/-/raw/master/Julia/jl_exercise_1_2_lambda.ipynb)
29+
* [I.3 Interaction of a Two-Level-System with a Chirped Laser Pulse](https://nbviewer.org/urls/gitlabph.physik.fu-berlin.de/ag-koch/resources/tutorial-oct-workshop-2024/-/raw/master/Julia/jl_exercise_1_3_chirp.ipynb)
30+
* [II.1 Population Inversion in a Two-Level-System using Parameter Optimization](https://nbviewer.org/urls/gitlabph.physik.fu-berlin.de/ag-koch/resources/tutorial-oct-workshop-2024/-/raw/master/Julia/jl_exercise_2_1_TLS.ipynb)
31+
* [II.2 Parameter Optimization for STIRAP](https://nbviewer.org/urls/gitlabph.physik.fu-berlin.de/ag-koch/resources/tutorial-oct-workshop-2024/-/raw/master/Julia/jl_exercise_2_2_lambda.ipynb)
32+
* [II.3 Parameter Optimization of Three-Wave Mixing in a Three-Level System](https://nbviewer.org/urls/gitlabph.physik.fu-berlin.de/ag-koch/resources/tutorial-oct-workshop-2024/-/raw/master/Julia/jl_exercise_2_3_chiral.ipynb)
33+
* [III.1 Population Inversion in a Two-Level-System using Krotov's Method and GRAPE](https://nbviewer.org/urls/gitlabph.physik.fu-berlin.de/ag-koch/resources/tutorial-oct-workshop-2024/-/raw/master/Julia/jl_exercise_3_1_TLS.ipynb)
34+
* [III.2 Optimal Control for STIRAP](https://nbviewer.org/urls/gitlabph.physik.fu-berlin.de/ag-koch/resources/tutorial-oct-workshop-2024/-/raw/master/Julia/jl_exercise_3_2_lambda.ipynb)
35+
* [III.3 Using Krotov's method to separate chiral molecules](https://nbviewer.org/urls/gitlabph.physik.fu-berlin.de/ag-koch/resources/tutorial-oct-workshop-2024/-/raw/master/Julia/jl_exercise_3_3_chiral.ipynb)
36+
* [III.4 Entangling Quantum Gates for Coupled Transmon Qubits](https://nbviewer.org/urls/gitlabph.physik.fu-berlin.de/ag-koch/resources/tutorial-oct-workshop-2024/-/raw/master/Julia/jl_exercise_3_4_gate.ipynb)
37+
38+
## Other Examples
39+
40+
The following are some examples for the use of `QuantumPropagators` and `QuantumControl`. These are not necessarily written for didactic purposes.
41+
42+
* [Rotating TAI code](https://github.com/ARLQCI/2022-11_rotating_tai) – Notebooks for [B. Dash *et al.* "Rotation Sensing using Tractor Atom Interferometry". AVS Quantum Science 6, 014407 (2024)](https://dx.doi.org/10.1116/5.0175802)
43+
44+
"""
45+
46+
47+
# ╔═╡ cfcf868a-7254-4fb5-a096-89780f275322
48+
49+
50+
# ╔═╡ Cell order:
51+
# ╟─4e470eb8-6a34-4ba4-8037-ed11cbf9e4e3
52+
# ╟─cfcf868a-7254-4fb5-a096-89780f275322

0 commit comments

Comments
 (0)