# Changelog

Stay up to date with the latest Boulder Opal release notes

## Boulder Opal 19.0.0

August 3, 2022

### Breaking changes

- We have removed the following deprecated graph operations and parameters:
- The graph operations
`graph.pwc_operator_hermitian_part`

and`graph.stf_operator_hermitian_part`

have been deprecated in favor of the unified operation graph.hermitian_part. - The parameter
`cut_off_frequency`

of the operation graph.sinc_convolution_kernel has been deprecated in favor of`cutoff_frequency`

.

- The graph operations

What's new

- We have added two non-graph pulses to the pulse library:
- Hann series: qctrl.pulses.hann_series
- Sinusoid: qctrl.pulses.sinusoid

- The message alerting you when there's a new version of the Q-CTRL Python package available now also contains a URL to this Changelog page.

## Boulder Opal 18.9.0

July 27, 2022

### What's new

- We've added new STF pulses in the pulse library.
- Sech pulse: graph.pulses.sech_pulse_stf
- Sinusoid pulse: graph.pulses.sinusoid_stf
- Linear ramp: graph.pulses.linear_ramp_stf

- We've added non-graph pulses to the pulse library. You can use the Pulse class methods to sample and export them to your hardware.
- Cosine pulse: qctrl.pulses.cosine_pulse
- Square pulse: qctrl.pulses.square_pulse

- We've added an
`initial_values`

parameter to graph.utils.real_optimizable_pwc_signal and graph.utils.complex_optimizable_pwc_signal nodes to initialize optimization searches with your desired values.

Bug fixes

- We've fixed an authentication issue when using
`qctrl`

commands in the terminal.

## Boulder Opal 18.8.0

July 25, 2022

### What's new

- We've added new toolkit functions for creating the following STF pulses:
- Gaussian pulses: graph.pulse.gaussian_pulse_stf.
- Hann series: graph.pulse.hann_series_stf.
- Hyperbolic tangent ramp: graph.pulse.tanh_ramp_stf.

## Boulder Opal 18.7.0

July 11, 2022

### What's new

- The graph operation density_matrix_evolution_pwc, which you can use to simulate the evolution of open systems, now can also accept Tensors for Lindblad operators. This means that now you can pass the output of other graph operations as the Lindblad terms that describe the evolution of the open system.

## Boulder Opal 18.6.0

June 22, 2022

### What's new

We've created the Boulder Opal Toolkits (beta), built on top of the existing Boulder Opal functions and graph operations, to provide convenience functions, nodes, and classes that enable you to develop and implement workflows faster and with less code. You can access these toolkit operations from the corresponding namespaces in the Qctrl or Graph object (for example, `qctrl.utils.confidence_ellipse_matrix`

or `graph.pulses.gaussian_pulse_pwc`

). You can find more information about these in the toolkit topic and their reference documentation.

Please note that the toolkits are currently in beta phase of development. Breaking changes may be introduced.

The main toolkit capabilities include:

- Superconducting toolkit
- We have created a toolkit to easily set up simulation and optimization of superconducting systems composed of transmons and cavities. Find more information in the superconducting namespace reference and an example in the superconducting toolkit tutorial.

- Convenience graph operations
- We have introduced nodes to easily create and filter optimizable signals. Find out more in the utils namespace reference, and an example in the optimization tutorial.
- We have created a library of common control signals, such as a Gaussian pulse or a hyperbolic tangent ramp. Find more information in the pulses namespace reference and an example in this user guide.

- System identification
- You can now calculate confidence ellipses for estimated parameters in system identification workflows. Find out more information in the function's reference and an example in the system identification tutorial. You can also easily visualize these confidence ellipses using the plot_confidence_ellipses function from the Q-CTRL Visualizer.

- Format conversion
- We have created functions to convert between two formats representing a piecewise-constant function: a list of value/duration dictionaries (as in the outputs of Boulder Opal functions or the inputs for the plot_controls function from the Q-CTRL Visualizer) and two NumPy arrays with its durations and values. Find out more information in the utils namespace reference and examples in the simulation tutorial and the optimization tutorial.

## Boulder Opal 18.4.0

June 14, 2022

### What's new

- We have added two new graph operations for calculating the minimum and the maximum values of a tensor.

## Boulder Opal 18.3.0

May 30, 2022

### What's new

- We have added two new graph operations for creating operators in composite Hilbert spaces:
- The operation embed_operators creates operators in a composite Hilbert space by calculating the tensor product of operators in subsystems with the appropriate identity operators.
- The operation kronecker_product_list performs the sequential tensor product of a list of operators.

## Boulder Opal 18.2.0

May 16, 2022

### What’s new

- We've added simpler ways to create common operations of quantum mechanics:
- The new operation number_operator creates the number operator in the Fock space.
- The operation pauli_matrix now can also create the raising and lowering matrices.

- We've added the operation ms_phases_multitone to calculate the phases produced by a Mølmer–Sørensen gate created with a multitone global beam.
- We've added the unified graph operation hermitian_part for taking the Hermitian part of any of the data types used in our graphs (Tensors, PWCs, or STFs).
- You can now pass any kind of SciPy sparse matrix format to graph operations that use sparse matrices, such as density_matrix_evolution_pwc.

## Boulder Opal 18.1.0

April 26, 2022

### What’s new

- We've added new graph operations to create Pauli operators.
- pauli_matrix creates Pauli matrices.
- pauli_kronecker_product creates products of Pauli matrices in composite systems.

## Boulder Opal 18.0.0

April 14, 2022

### Breaking changes

- We’ve removed support for Python 3.6.

### What’s new

- We’ve added support for Python 3.10.
- We’ve added new graph operations to work with quantum harmonic oscillator-like systems. You can use them to easily create states and operators in Fock spaces.
- creation_operator generate creation operators for truncated Fock spaces.
- annihilation_operator generate annihilation operators for truncated Fock spaces.
- fock_state generates a basis state in a Fock basis.
- coherent_state generates a coherent state.

- The
`cut_off_frequency`

parameter in the sinc_convolution_kernel node is now deprecated and will be removed in the future. Please use`cutoff_frequency`

instead.