Changelog

Stay up to date with the latest Boulder Opal release notes

Boulder Opal 19.7.3

December 9, 2022

Bug fixes

• We've fixed some broken links in the reference documentation.

December 8, 2022

Boulder Opal 19.7.1

November 22, 2022

Bug fix

• We've updated the qctrl-toolkit version to fix an import error.

Boulder Opal 19.7.0

November 18, 2022

What's new

• We've built a new graph-based gradient-free optimization function . It provides an alternative to gradient-based optimization when the gradient is inaccessible or very costly to compute.
• We've added three new graph operations:
• The Q-CTRL Visualizer function plot_filter_functions now also accepts filter functions as exported from graph calculations.

Boulder Opal 19.6.2

October 27, 2022

What's new

• Upgraded gql package version to 3.4.0.

Boulder Opal 19.6.1

October 24, 2022

What's new

• Added organization property to Qctrl session.

Boulder Opal 19.6.0

October 20, 2022

Breaking changes

• We've improved the usability of the Q-CTRL Visualizer through a few changes:
• The figure parameter for all functions is now an optional keyword-only argument. This means you can omit it when calling, for instance, plot_controls, and just pass the dictionary with your controls: plot_controls(controls). You can still pass a figure for the function to place the plot in it, using its keyword: plot_controls(controls, figure=your_figure).
• The default value of y_axis_log in plot_cost_history has been changed from True to False.
• The parameter seq of plot_sequences has been renamed to sequences.

What's new

• We've added a new ions toolkit to streamline the workflow of performing calculations trapped ions systems in Boulder Opal. Find out more in the new tutorial and the reference documentation for the ions toolkit namespace.
• We've added new graph operations to create displacement operators and squeeze operators in Fock spaces.
• We've added a seed parameter to the calculate_optimization and calculate_stochastic_optimization functions. You can use it to obtain deterministic results from the initial values of optimizable graph nodes. Note that if your graph contains random operations , you need to set seeds for them as well for the optimization to be fully deterministic.
• We've added a cost_tolerance parameter to the calculate_optimization function. You can use it to set an early stop condition for the optimizer, halting the optimization when the relative cost improvement over an iteration is smaller than the tolerance. See the reference documentation for more information.
• We've added two parameters to the superconducting toolkit optimize function:
• max_iteration_count: You can use this to set an early stop condition for the optimizer, halting the optimization if these many iterations have been taken.
• cost_history: You can use this to retrieve the history of the cost function at each iteration during the optimization.
• We've improved the performance of the neural network closed-loop optimizer up to 3X speed-up, especially for large test points, by introducing early stopping threshold and parallelizing training.
• We've made changes to the layout of the documentation in order to improve accessibility and ease of navigation. You can see them in the Boulder Opal documentation .
• We've added a new user guide on obtaining optimized controls using a Hann basis .

Boulder Opal 19.5.0

September 19, 2022

Boulder Opal 19.4.0

September 2, 2022

Boulder Opal 19.3.0

August 18, 2022

What's new

• You can now mute and unmute status messages when running calculations. See an example in this user guide .
• We have added a function that makes it easier for you to cite Boulder Opal in papers and other works. See an example in this user guide .

Boulder Opal 19.2.0

August 9, 2022

What's new

• We've added the Q-CTRL Visualizer package as a dependency of the Q-CTRL Python package. Now you can keep up-to-date with the Visualizer’s latest features without having to install or upgrade it separately.

August 8, 2022

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.

What's new

• We have added two non-graph pulses to the pulse library:
• 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

Bug fixes

• We've fixed an authentication issue when using qctrl commands in the terminal.

July 25, 2022

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:

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 .

April 26, 2022

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