dCRAB-Optimized NMR Control Pulses (Master’s Thesis Dataset)
The repository contains NMR control pulses generated during a Master’s thesis project using the dCRAB (dressed Chopped RAndom Basis) quantum optimal control algorithm, originally developed within the CRAB/dCRAB family of randomized-basis optimal control methods. The pulses were produced for a theoretical study of dCRAB performance across different optimization scenarios. Each pulse represents a time-dependent control waveform intended for use in NMR experiments/simulations and was obtained by running dCRAB under specified constraints, objective functions, and initialization settings. The dataset is provided for reproducibility and comparative analysis of optimization behavior under varying scenario definitions. Pulse generation and subsequent use/analysis are supported through the JuMPO library.
This repository contains NMR control pulses generated during the Master’s thesis:
“Gradient-Free Quantum Control Optimization of Magnetic Resonance Pulses for Electrochemical Setups: Methods, Comparisons, and Applications” (RWTH Aachen, Federico Bianchi, 2025).
The pulses were produced with the dCRAB (dressed Chopped RAndom Basis) quantum optimal control framework and are grouped by experiment, following the tables in Chapter 5 of the thesis. All pulses described in that chapter are stored as full pulse + configuration files, labeled by a pulse_ID in the filename, matching the table IDs.
Research Purpose
A central goal of this work is to improve the generation of high-quality dCRAB initial guesses, so that subsequent dCRAB optimizations can reach target performance with fewer objective-function evaluations. Reducing the evaluation budget is particularly relevant for prospective quantum–classical hybrid control loops, where each evaluation may require time- and resource-intensive experimental measurements on quantum hardware.
What is a “pulse” in this dataset?
A “pulse” is a time-dependent RF control waveform, typically a pulse pair ((u_x(t), u_y(t))), applied to a spin-1/2 NMR model (homogeneous or inhomogeneous ensemble). In the thesis’ numerical setup, the pulse duration is (T = 2 ms) with time step (Delta t = 0.5 us) (so (N_t = 4000) samples).
Parameter normalization
The optimized parameter vector is normalized to ([10^{-3}, 1]), and JuMPO internally maps this normalized vector into parameter-specific physical ranges.
Basis functions used in dCRAB parameterizations
Across the repository you will see the same basis names as in the thesis/JuMPO environment: Fourier, sigmoid, Chebyshev, chirp, WURST, plus none for “no dressing basis”.
Repository structure
/
├─ README
└─ pulse_data/
├─ 01_single_spin/ (Table 5.1)
├─ 02_grape_fit_curvefit/ (Table 5.2)
├─ 03_grape_fit_nelder_mead/ (Table 5.3)
├─ 04_grape_fit_bayesian/ (Table 5.4)
├─ 05_horizontal_band_unweighted/ (Table 5.5)
├─ 06_horizontal_band_weighted/ (Table 5.6)
├─ 07_vertical_band_weighted/ (Table 5.7)
├─ 08_artificial_target_nelder_mead/ (Table 5.8)
├─ 09_artificial_target_bo_hyperparams/ (Table 5.9)
├─ 10_artificial_target_bo_parameter_scan/ (Table 5.10)
├─ 11_horizontal_band_bo_nodecay/ (Table 5.11)
└─ 12_horizontal_band_bo_decay/ (Table 5.12)
File formats
.npz NumPy compressed archive containing the waveform data (and any arrays needed to reconstruct it).
.json Human-readable record containing the waveform plus metadata, typically including the experiment context (basis choices, N_dress, optimization backend/hyperparameters, objective value such as QF_max, grid definition if applicable).
Objective metrics used across experiments
QF (quality factor): Dimensionless figure of merit used for control performance; higher is better (thesis uses (QF in [-1, 1])).
MSE (mean squared error): Used only in the “fit a GRAPE waveform” experiments; measures waveform mismatch in control space, not task performance.
Subfolder-by-subfolder documentation
Each section below explains: what the experiment is, then lists the pulses (by pulse_ID) and what each represents.
01_single_spin/ — Homogeneous single-spin benchmark (Table 5.1)
Purpose: Baseline test: dCRAB on a single on-resonance spin-1/2 (homogeneous case). In this setting, dCRAB reaches essentially perfect performance (QF ≈ 1).
Pulses (representative best configurations):
pulse_ID init_basis dress Ndress QFmax 1 sigmoid WURST 1 1.0000 2 Fourier Chebyshev 1 1.0000 3 chirp Chebyshev 1 1.0000 4 WURST WURST 1 1.0000
02_grape_fit_curvefit/ — Fit a GRAPE waveform with SciPy curve_fit (Table 5.2)
Purpose: Attempt to approximate a GRAPE-optimized waveform using a low-dimensional dCRAB parameterization by directly minimizing waveform MSE (not QF).
Important: In the subsequent propagation tests, the thesis replaces only the x-channel with the fitted (u_x^{fit}), while retaining the original GRAPE (u_y).
Pulses (representative best fits):
pulse_ID init_basis dress Ndress MSEmin (×10⁶) 5 Fourier chirp 2 2.689 6 chirp WURST 1 2.797 7 WURST sigmoid 4 2.980 8 sigmoid WURST 3 3.016
03_grape_fit_nelder_mead/ — Fit a GRAPE waveform with Nelder–Mead (Table 5.3)
Purpose: Same waveform-fitting task as above, but using Nelder–Mead simplex to minimize MSE.
Pulses (representative best fits):
pulse_ID init_basis dress Ndress MSEmin (×10⁶) 9 WURST sigmoid 4 2.836 10 WURST none 0 2.848 11 chirp WURST 2 3.140 12 sigmoid WURST 3 3.445
04_grape_fit_bayesian/ — Fit a GRAPE waveform with Bayesian optimization (Table 5.4)
Purpose: Same waveform-fitting task, using Bayesian optimization to maximize (-MSE).
Pulses (representative best fits):
pulse_ID init_basis dress Ndress MSEmin (×10⁶) 13 sigmoid chirp 2 3.020 14 Fourier chirp 3 4.124 15 WURST chirp 1 4.160 16 chirp WURST 2 4.290
05_horizontal_band_unweighted/ — Inhomogeneous horizontal-band target (unweighted) (Table 5.5)
Purpose: Optimize performance on an inhomogeneous ensemble over (alpha,Delta nu) using a horizontal-band target pattern:
- ( rho_{tar} = I_x ) if (0.9 < alpha < 1.1)
- ( rho_{tar} = I_z ) otherwise
Grid resolution: results are reported for coarse ((n_alpha,n_nu)=(50,100)) and fine ((100,200)).
dCRAB configuration note: This unweighted test uses a single superiteration (N_dress = 0).
Pulses (best QF per basis + grid):
pulse_ID initial basis grid QFmax 17 Fourier coarse 0.6163 18 Fourier fine 0.8069 19 chirp coarse 0.8011 20 chirp fine 0.8012 21 Chebyshev coarse 0.5662 22 Chebyshev fine 0.8014 23 WURST coarse 0.8002 24 WURST fine 0.8002 25 sigmoid coarse 0.8212 26 sigmoid fine 0.0971
06_horizontal_band_weighted/ — Weighted horizontal-band target (Table 5.6)
Purpose: Same horizontal-band target, but using weighting, with weights to emphasize the excitation band.
Pulses (best QF per basis + grid):
pulse_ID initial basis grid QFmax 27 Fourier coarse 0.6741 28 Fourier fine 0.7103 29 chirp coarse 0.1869 30 chirp fine 0.5045 31 Chebyshev coarse 0.4429 32 Chebyshev fine 0.4995 33 WURST coarse 0.5007 34 WURST fine 0.5450 35 sigmoid coarse 0.3382 36 sigmoid fine 0.0602
07_vertical_band_weighted/ — Weighted vertical-band target (Table 5.7)
Purpose: Optimize a vertical-band excitation pattern:
- ( rho_{tar} = I_x ) if (|Delta nu| < 500 Hz)
- ( rho_{tar} = I_z ) otherwise
This experiment again uses a single superiteration (N_dress = 0).
Pulses (best QF per basis + grid):
pulse_ID initial basis grid QFmax 37 Fourier coarse 0.6638 38 Fourier fine 0.6976 39 chirp coarse 0.3535 40 chirp fine 0.5581 41 Chebyshev coarse 0.6618 42 Chebyshev fine 0.6635 43 WURST coarse 0.5445 44 WURST fine 0.4308 45 sigmoid coarse 0.0738 46 sigmoid fine 0.4147
08_artificial_target_nelder_mead/ — Recover the artificial target with Nelder–Mead (Table 5.8)
Purpose: Forget the artificial generating pulse and attempt to recover the same final-state pattern with a scan over dCRAB parameterizations, using Nelder–Mead to maximize mean QF on the grid.
Pulses (representative best configurations):
pulse_ID initial basis dress basis Ndress QFmax 47 Chebyshev Fourier 2 0.942 48 Fourier WURST 1 0.922 49 Fourier Chebyshev 2 0.886 50 Chebyshev WURST 1 0.865 51 Fourier chirp 2 0.794
09_artificial_target_bo_hyperparams/ — Bayesian optimization hyperparameter scan (Table 5.9)
Purpose: With the artificial target, keep the dCRAB structure fixed (Fourier initial + two chirp dressings on both channels) and tune Bayesian optimization hyperparameters:
init_points (random initial evaluations)
n_iter (subsequent BO iterations)
The thesis selects n_iter = 200, init_points = 40 as a performance–cost compromise for later BO runs.
Pulses (representative scan outcomes):
pulse_ID n_iter init_points QFmax 52 100 5 0.973 53 200 40 0.968 54 300 80 0.962 55 200 10 0.960
10_artificial_target_bo_parameter_scan/ — Bayesian optimization over dCRAB parameterizations (Table 5.10)
Purpose: With BO hyperparameters fixed (notably n_iter=200, init_points=40), scan dCRAB parameterizations (initial basis, dressing basis, N_dress) and record best QF.
Pulses (representative best configurations):
pulse_ID initial basis dress basis Ndress QFmax 56 chirp Fourier 1 0.982 57 chirp chirp 2 0.980 58 Chebyshev chirp 2 0.977 59 WURST Chebyshev 1 0.971 60 Fourier chirp 2 0.937
11_horizontal_band_bo_nodecay/ — Weighted horizontal-band with Bayesian optimization (no exploration decay) (Table 5.11)
Purpose: Bayesian optimization applied to the weighted horizontal-band problem (as defined earlier), without exploration decay.
Pulses (best per initial basis):
pulse_ID initial basis QFmax 61 Fourier 0.5930 62 sigmoid 0.6861 63 Chebyshev 0.5256 64 chirp 0.5236 65 WURST 0.6151
12_horizontal_band_bo_decay/ — Weighted horizontal-band with Bayesian optimization (with exploration decay) (Table 5.12)
Purpose: Same as above, but with Bayesian exploration decay exploration_decay = 0.90.
Pulses (best per initial basis):
pulse_ID initial basis QFmax 66 Fourier 0.6518 67 sigmoid 0.6861 68 Chebyshev 0.5300 69 chirp 0.6670 70 WURST 0.6634
File format choice notes
.json was preferred for reproducibility, because it carries scenario metadata (basis names, N_dress, backend settings, objective values, grid labels).
.npz was preferred for just having the waveform arrays, because it is more lightweighted.