# User guides

Step-by-step how-to guides for the features in Boulder Opal

## Set up basics

### How to monitor activity and retrieve results

Monitor job status and retrieve results from previously run calculations in Boulder Opal

### How to mute status messages during calculations

Change the verbosity of the messaging

### How to cite Boulder Opal

Cite relevant Boulder Opal articles and specific documentation pages

## Calculate with graphs

### How to calculate and optimize with graphs

Create graphs for computations with Boulder Opal

### How to represent quantum systems using graphs

Represent quantum systems for optimization, simulation, and other tasks using graphs

### How to create analytical signals for simulation and optimization

Use predefined signals from the Boulder Opal toolkit

### How to define continuous analytical Hamiltonians

Use analytical expressions to construct your Hamiltonian

### How to perform optimization and simulation in the same calculation

Perform calculations using optimization results in a single graph

### How to reuse graph definitions in different calculations

Reapply graph nodes for multiple applications

### How to optimize controls using gradient-free optimization

Perform graph-based optimizations when gradients are costly

## Design error-robust controls

### How to optimize controls in arbitrary quantum systems using graphs

Highly-configurable non-linear optimization framework for quantum control

### How to optimize controls with nonlinear dependences

Incorporate nonlinear Hamiltonian dependences on control signals

### How to optimize controls on large sparse Hamiltonians

Efficiently perform control optimization on sparse Hamiltonians

### How to create dephasing and amplitude robust single-qubit gates

Incorporate robustness into the design of optimal pulses

### How to create leakage-robust single-qubit gates

Design pulses that minimize leakage to unwanted states

### How to optimize error-robust Mølmer–Sørensen gates for trapped ions

Efficient state preparation using Mølmer–Sørensen-type interactions with in-built convenience functions

### How to optimize Mølmer–Sørensen gates for a multitone global beam

Creating efficient gates for trapped ions without individually addressing the ions

### How to optimize controls robust to strong noise sources

Design controls that are robust against strong time-dependent noise sources with stochastic optimization

## Tune optimization hyperparameters

### How to tune the parameters of an optimization

Defining parameters of the optimization using the cost history and early halt conditions

### How to tune the learning rate of a stochastic optimization

Configuring the stochastic optimizer by requesting the cost history from the optimization results

## Optimize controls under constraints

### How to add smoothing and band-limits to optimized controls

Incorporate smoothing of optimized waveforms

### How to optimize controls with time symmetrization

Incorporate time symmetry into optimized waveforms

### How to find time-optimal controls

Optimizing over the duration of your controls

### How to optimize controls using a Fourier basis

Create optimized pulses using CRAB techniques

### How to optimize controls using a Hann series basis

Create optimized controls using Hann series basis functions

### How to optimize controls using user-defined basis functions

Create optimized controls using arbitrary basis functions

## Characterize hardware

### How to perform noise spectroscopy on arbitrary noise channels

Reconstructing noise spectra using shaped control pulses

### How to perform parameter estimation with a small amount of data

Estimate Hamiltonian model parameters using measured data and the graph-based optimization engine

### How to perform parameter estimation with a large amount of data

Estimate Hamiltonian model parameters using measured data and the graph-based stochastic optimization engine

### How to characterize a transmission line using a qubit as a probe

Characterize transmission-line bandwidth via probe measurements and the graph-based optimization engine

## Automate hardware with AI

### How to automate calibration of control hardware

Calibrate RF control channels for maximum pulse performance

### How to automate closed-loop hardware optimization

Closed-loop optimization without complete system models

### How to automate complex calibration tasks with Boulder Opal

Automate your calibration workflows with the Q-CTRL Experiment Scheduler

### How to optimize controls starting from an incomplete system model

Design waveforms using a model-independent reinforcement learning framework

## Simulate quantum dynamics

### How to simulate quantum dynamics for noiseless systems using graphs

Simulate the dynamics of closed quantum systems

### How to simulate quantum dynamics subject to noise with graphs

Simulate the dynamics of closed quantum systems in the presence of Non-Markovian noise

### How to simulate multi-qubit circuits in quantum computing

Evaluate the performance of multi-qubit circuits with and without noise

### How to simulate open system dynamics

Calculating the dynamics of a quantum system described by a GKS–Lindblad master equation

### How to simulate large open system dynamics

Calculate the dynamics of a high-dimensional quantum system described by a GKS–Lindblad master equation

### How to calculate the steady state of an open quantum system

Compute the long time limit density matrix of Lindblad dynamics from a time-independent generator

### How to calculate system dynamics for arbitrary Mølmer–Sørensen gates

Calculate the Mølmer–Sørensen gate evolution characteristics for trapped ions

## Verify performance

### How to evaluate control susceptibility to quasi-static noise

Characterize the robustness of a control pulse to quasi-static noise

### How to calculate and use filter functions for arbitrary controls

Calculate the frequency-domain noise sensitivity of driven controls

## Integrate with other tools

### How to format and export control solutions for hardware implementation

Prepare optimized controls for hardware implementation

### How to import and use pulses from the Q-CTRL Open Controls library

Use pulses from an open-source library in Boulder Opal calculations

### How to use QuTiP operators in graphs

Incorporate QuTiP objects and programming syntax directly into graphs

### How to integrate Boulder Opal with QUA from Quantum Machines

Integrate Boulder Opal pulses directly into Quantum Machines hardware using the Q-CTRL QUA Python package

### How to manage automated closed-loop hardware optimization with M-LOOP

Use external data management package for simple closed-loop optimizations