# User guides

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

## Basics

- How to monitor activity and retrieve results
- Monitor job status and retrieve results from previously run calculations in Boulder Opal
- How to represent quantum systems using graphs
- Represent quantum systems for optimization, simulation, and other tasks using graphs
- How to calculate and optimize with graphs
- Create graphs for computations with Boulder Opal
- How to mute status messages during calculations
- Change the verbosity of the messaging
- How to format and export control solutions for hardware implementation
- Prepare optimized controls for hardware implementation
- How to cite Boulder Opal
- Cite relevant Boulder Opal articles and specific documentation pages

## Control optimization

- How to optimize controls in arbitrary quantum systems using graphs
- Highly-configurable non-linear optimization framework for quantum control
- How to tune the parameters of an optimization
- Defining parameters of the optimization using the cost history and early halt conditions
- How to optimize controls with time symmetrization
- Incorporate time symmetry into optimized waveforms
- How to add smoothing and band-limits to optimized controls
- Incorporate smoothing of optimized waveforms
- How to optimize controls with nonlinear dependences
- Incorporate nonlinear Hamiltonian dependences on control signals
- How to find time-optimal controls
- Optimizing over the duration of your controls
- How to perform model-based optimization using a Fourier basis
- Create optimized pulses using CRAB techniques
- How to perform model-based optimization with user-defined basis functions
- Create optimized controls using arbitrary basis functions
- How to optimize controls on large sparse Hamiltonians
- Efficiently perform control optimization on sparse Hamiltonians
- How to optimize controls robust to strong noise sources
- Design controls that are robust against strong time-dependent noise sources with stochastic optimization
- How to tune the learning rate of a stochastic optimization
- Configuring the stochastic optimizer by requesting the cost history from the optimization results
- 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 create analytical pulses for simulation and optimization
- Use predefined pulses from the Boulder Opal toolkit
- How to define continuous analytical Hamiltonians
- Use analytical expressions to construct your Hamiltonian

## Error-robust quantum logic

- 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 calculate phase and motion dynamics for arbitrarily modulated Mølmer–Sørensen gates
- Calculate the Mølmer–Sørensen gate evolution characteristics for trapped ions

## Simulation

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

## Performance evaluation

- 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

## Hardware automation

- 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 optimize controls starting from an incomplete system model
- Design waveforms using a model-independent reinforcement learning framework

## Hardware characterization

- How to perform noise spectroscopy on arbitrary noise channels
- Reconstructing noise spectra using shaped control pulses
- How to perform Hamiltonian parameter estimation using a small amount of measured data
- Estimate Hamiltonian model parameters using measured data and the graph-based optimization engine
- How to perform Hamiltonian parameter estimation using a large amount of measured data
- Estimate Hamiltonian model parameters using measured data and the graph-based stochastic optimization engine
- How to characterize the bandwidth of a transmission line using a qubit as a probe
- Characterize transmission-line bandwidth via probe measurements and the graph-based optimization engine

## Integrations

- 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