From caa6461b947f1cd0c9c837dfc310376bf101e046 Mon Sep 17 00:00:00 2001 From: Michael Goerz Date: Wed, 29 Apr 2026 13:36:46 -0400 Subject: [PATCH] Add stub extension for Piccolo --- CLAUDE.md | 9 +++++++++ Project.toml | 3 +++ ext/QuantumControlPiccoloExt.jl | 26 ++++++++++++++++++++++++++ test/Project.toml | 1 + 4 files changed, 39 insertions(+) create mode 100644 ext/QuantumControlPiccoloExt.jl diff --git a/CLAUDE.md b/CLAUDE.md index 0d1dceae..d33e9d4d 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -59,3 +59,12 @@ QuantumControl.jl is a high-level interface package that provides a coherent API - Tests for interfaces, propagation, optimization, parameterization, and workflows - Coverage reporting and CI integration - Downstream testing of Krotov and GRAPE packages + + +## Docstrings + +The docstring for some function or type can be obtained from the fully qualified name, e.g. `QuantumControl.ControlProblem`: + +```bash +julia --project=. -e 'using REPL; using QuantumControl; print(Base.doc(QuantumControl.ControlProblem))' +``` diff --git a/Project.toml b/Project.toml index 3e6245fc..ffae551b 100644 --- a/Project.toml +++ b/Project.toml @@ -17,12 +17,14 @@ UUIDs = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" [weakdeps] ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" FiniteDifferences = "26cc04aa-876d-5657-8c51-4c34ba976000" +Piccolo = "c4671d76-df94-11ed-2057-43d4fd632fad" Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" [extensions] QuantumControlChainRulesCoreExt = "ChainRulesCore" QuantumControlFiniteDifferencesExt = "FiniteDifferences" QuantumControlZygoteExt = "Zygote" +QuantumControlPiccoloExt = "Piccolo" [compat] FileIO = "1" @@ -31,6 +33,7 @@ IOCapture = "0.2.4, 1" JLD2 = "0.4, 0.5, 0.6" LinearAlgebra = "1" Logging = "1" +Piccolo = "1.8.0" Printf = "1" QuantumPropagators = ">=0.8.2" Zygote = "0.6, 0.7" diff --git a/ext/QuantumControlPiccoloExt.jl b/ext/QuantumControlPiccoloExt.jl new file mode 100644 index 00000000..06315074 --- /dev/null +++ b/ext/QuantumControlPiccoloExt.jl @@ -0,0 +1,26 @@ +module QuantumControlPiccoloExt + +import QuantumControl + +using Piccolo: QuantumSystem + +function QuantumControl.optimize(problem, method::Val{:Piccolo}) + return piccolo_optimize(problem.trajectories, problem.tlist; problem.kwargs...) +end + + +function piccolo_optimize(trajectories, tlist; kwargs...) + + if length(trajectories) == 1 + return piccolo_optimize1(trajectories[1], tlist; kwargs...) + else + error("Multiple trajectories are currently not implemented for Piccolo") + end + +end + +function piccolo_optimize1(trajectory, tlist; kwargs...) + sys = QuantumSystem(H_drift, H_drives, drive_bounds) +end + +end diff --git a/test/Project.toml b/test/Project.toml index f25c5a04..18e9f20f 100644 --- a/test/Project.toml +++ b/test/Project.toml @@ -27,6 +27,7 @@ LocalCoverage = "5f6e1e16-694c-5876-87ef-16b5274f298e" Logging = "56ddb016-857b-54e1-b83d-db4d58db5568" Optim = "429524aa-4258-5aef-a3af-852621145aeb" OrdinaryDiffEq = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed" +Piccolo = "c4671d76-df94-11ed-2057-43d4fd632fad" Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" Printf = "de0858da-6303-5e67-8744-51eddeeeb8d7"