Nodes

Optimization variables

When performing optimizations, you can use these operations to create the optimizable variables that can be tuned by the optimizer in order to minimize your cost function.

anchored_difference_bounded_variables

Create a sequence of optimizable variables with an anchored difference bound.

complex_optimizable_pwc_signal

Create a complex optimizable piecewise-constant signal.

optimizable_scalar

Create an optimizable scalar Tensor, which can be bounded, semi-bounded, or unbounded.

optimization_variable

Create a 1D Tensor of optimization variables, which can be bounded, semi-bounded, or unbounded.

real_fourier_pwc_signal

Create a piecewise-constant signal constructed from Fourier components.

real_fourier_stf_signal

Create a real sampleable signal constructed from Fourier components.

real_optimizable_pwc_signal

Create a real optimizable piecewise-constant signal.

Piecewise-constant tensor functions (PWCs)

You can use these operations to create piecewise-constant functions either to represent control signals or system Hamiltonians.

complex_pwc_signal

Create a complex piecewise-constant signal from moduli and phases.

constant_pwc

Create a piecewise-constant function of time that is constant over a specified duration.

constant_pwc_operator

Create a constant piecewise-constant operator over a specified duration.

pwc

Create a piecewise-constant function of time.

pwc_operator

Create a constant operator multiplied by a piecewise-constant signal.

pwc_signal

Create a piecewise-constant signal (scalar-valued function of time).

pwc_sum

Create the sum of multiple piecewise-constant terms.

real_fourier_pwc_signal

Create a piecewise-constant signal constructed from Fourier components.

sample_pwc

Sample a Pwc at the given times.

symmetrize_pwc

Create the symmetrization of a piecewise-constant function.

time_concatenate_pwc

Concatenate multiple piecewise-constant functions in the time dimension.

time_reverse_pwc

Reverse in time a piecewise-constant function.

Sampleable tensor functions (STFs)

You can use these functions to represent time-dependent functions in Boulder Opal.

constant_stf

Create a constant sampleable tensor-valued function of time.

constant_stf_operator

Create a constant operator.

identity_stf

Create an Stf representing the identity function, f(t) = t.

real_fourier_stf_signal

Create a real sampleable signal constructed from Fourier components.

sample_stf

Sample an Stf at the given times.

stf_operator

Create a constant operator multiplied by a sampleable signal.

stf_sum

Create the sum of multiple sampleable functions.

Filtering and discretizing

You can use these functions to filter or resample the control signals.

convolve_pwc

Create the convolution of a piecewise-constant function with a kernel.

discretize_stf

Create a piecewise-constant function by discretizing a sampleable function.

filter_and_resample_pwc

Filter a piecewise-constant function by convolving it with a kernel and resample it again.

gaussian_convolution_kernel

Create a convolution kernel representing a normalized Gaussian.

sinc_convolution_kernel

Create a convolution kernel representing the sinc function.

Predefined signals

You can use these operations to create common analytical signals.

For creating analytical signals not bound to a graph see the Signal library module.

signals.SegmentationType

An enumeration of segmentation types for piecewise-constant signals.

signals.cosine_pulse_pwc

Create a Pwc representing a cosine pulse.

signals.gaussian_pulse_pwc

Create a Pwc representing a Gaussian pulse.

signals.gaussian_pulse_stf

Create an Stf representing a Gaussian pulse.

signals.hann_series_pwc

Create a Pwc representing a sum of Hann window functions.

signals.hann_series_stf

Create an Stf representing a sum of Hann window functions.

signals.linear_ramp_pwc

Create a Pwc representing a linear ramp.

signals.linear_ramp_stf

Create an Stf representing a linear ramp.

signals.sech_pulse_pwc

Create a Pwc representing a hyperbolic secant pulse.

signals.sech_pulse_stf

Create an Stf representing a hyperbolic secant pulse.

signals.sinusoid_pwc

Create a Pwc representing a sinusoidal oscillation.

signals.sinusoid_stf

Create an Stf representing a sinusoidal oscillation.

signals.square_pulse_pwc

Create a Pwc representing a square pulse.

signals.tanh_ramp_pwc

Create a Pwc representing a hyperbolic tangent ramp.

signals.tanh_ramp_stf

Create an Stf representing a hyperbolic tangent ramp.

Quantum information

You can use these operations to calculate common operations and metrics from quantum information theory.

annihilation_operator

Create an annihilation operator in the truncated Fock space.

coherent_state

Create a coherent state (or a batch of them).

creation_operator

Create a creation operator in the truncated Fock space.

density_matrix_expectation_value

Calculate the expectation value of an operator with respect to a density matrix.

density_matrix_infidelity

Calculate the infidelity between two states represented by density matrices.

displacement_operator

Create a displacement operator (or a batch of them).

embed_operators

Embed an operator or set of operators into a larger Hilbert space.

expectation_value

Calculate the expectation value of an operator with respect to a state.

fock_state

Create a Fock state (or a batch of them).

inner_product

Calculate the inner product of two vectors.

kronecker_product_list

Calculate the Kronecker product between a list of operators.

number_operator

Create a number operator in the truncated Fock space.

outer_product

Calculate the outer product of two vectors.

partial_trace

Calculate the partial trace of a density matrix.

pauli_kronecker_product

Place Pauli matrices into their two-dimensional subsystems of a system and returns the Kronecker product.

pauli_matrix

Create a Pauli matrix from a label.

squeeze_operator

Create a squeeze operator (or a batch of them).

state_infidelity

Calculate the infidelity of two pure states.

unitary_infidelity

Calculate the infidelity between a target operation and the actual implemented unitary.

wigner_transform

Transform a density matrix into a Wigner function (or a batch of them).

Time evolution

You can use these operations to calculate the time evolution of your open or closed quantum system, either for simulations or optimizations.

density_matrix_evolution_pwc

Calculate the state evolution of an open system described by the GKS–Lindblad master equation.

estimated_krylov_subspace_dimension_lanczos

Calculate an appropriate Krylov subspace dimension (\(k\)) to use in the Lanczos integrator while keeping the total error in the evolution below a given error tolerance.

filter_function

Evaluate the filter function for a control Hamiltonian and a noise operator at the given frequency elements.

frequency_domain_noise_operator

Create a control-frame noise operator in the frequency domain for a control Hamiltonian and a noise operator at the given frequencies.

jump_trajectory_evolution_pwc

Calculate the state evolution of an open system described by the GKS–Lindblad master equation using a jump-based trajectory method.

spectral_range

Obtain the range of the eigenvalues of a Hermitian operator.

state_evolution_pwc

Calculate the time evolution of a state generated by a piecewise-constant Hamiltonian by using the Lanczos method.

steady_state

Find the steady state of a time-independent open quantum system.

time_evolution_operators_pwc

Calculate the unitary time-evolution operators for a system defined by a piecewise-constant Hamiltonian.

time_evolution_operators_stf

Calculate the time-evolution operators for a system defined by an STF Hamiltonian by using a 4th order Runge–Kutta method.

Optimal and robust control

You can use these operations, together with the operations for creating optimization variables to define convenient cost functions for optimal and robust control.

infidelity_pwc

Create the total infidelity of the given piecewise-constant system.

infidelity_stf

Create the total infidelity of a given system with a sampleable Hamiltonian.

target

Create information about the target for system time evolution.

Large systems

You can use these operations to build graphs that efficiently handle large quantum systems.

constant_sparse_pwc_operator

Create a constant sparse piecewise-constant operator over a specified duration.

density_matrix_evolution_pwc

Calculate the state evolution of an open system described by the GKS–Lindblad master equation.

estimated_krylov_subspace_dimension_lanczos

Calculate an appropriate Krylov subspace dimension (\(k\)) to use in the Lanczos integrator while keeping the total error in the evolution below a given error tolerance.

jump_trajectory_evolution_pwc

Calculate the state evolution of an open system described by the GKS–Lindblad master equation using a jump-based trajectory method.

sparse_pwc_hermitian_part

Create the Hermitian part of a piecewise-constant operator.

sparse_pwc_operator

Create a sparse piecewise-constant operator (sparse-matrix-valued function of time).

sparse_pwc_sum

Create the sum of multiple sparse-matrix-valued piecewise-constant functions.

spectral_range

Obtain the range of the eigenvalues of a Hermitian operator.

state_evolution_pwc

Calculate the time evolution of a state generated by a piecewise-constant Hamiltonian by using the Lanczos method.

steady_state

Find the steady state of a time-independent open quantum system.

Mølmer–Sørensen gates

You can use these operations to efficiently model systems described by Mølmer–Sørensen interactions.

ions.ms_dephasing_robust_cost

Calculate the cost for robust optimization of a Mølmer–Sørensen gate.

ions.ms_displacements

Calculate the displacements for each mode and ion combination where ions are described by a Mølmer–Sørensen-type interaction.

ions.ms_infidelity

Calculate the final operational infidelity of the Mølmer–Sørensen gate.

ions.ms_phases

Calculate the relative phases for all pairs of ions described by a Mølmer–Sørensen-type interaction when single-tone individually-addressed laser beams are used.

ions.ms_phases_multitone

Calculate the relative phases for all pairs of ions described by a Mølmer–Sørensen-type interaction where the ions are being addressed by a multitone global beam.

Random operations

You can use these operations to create random quantities, which take different values each time they are evaluated. These operations are most useful in simulations and stochastic optimizations.

random.choices

Create random samples from the data that you provide.

random.colored_noise_stf_signal

Sample the one-sided power spectral density (PSD) of a random noise process in the time domain and returns the resultant noise trajectories as an Stf.

random.normal

Create a sample of normally distributed random numbers.

random.uniform

Create a sample of uniformly distributed random numbers.

Manipulating tensors

You can use these operations to manipulate the structures of tensors.

concatenate

Concatenate a list of tensors along a specified dimension.

cumulative_sum

Calculate the cumulative sum of a tensor along a specified dimension.

einsum

Perform tensor contraction via Einstein summation convention.

max

Find the maximum value in a tensor along one or multiple of its axes.

min

Find the minimum value in a tensor along one or multiple of its axes.

repeat

Repeat elements of a tensor.

reshape

Reshape a tensor into a new shape, keeping the order of its elements.

reverse

Reverse a tensor along some specified dimensions.

sum

Sum the elements in a tensor (or a list of tensors with the same shape) along one or multiple of its axes.

tensor

Create a real or complex Tensor with the data provided.

transpose

Reorder the dimensions of a tensor.

Linear algebra

adjoint

Calculate the element-wise adjoint of the last two dimensions of an object.

density_matrix_expectation_value

Calculate the expectation value of an operator with respect to a density matrix.

einsum

Perform tensor contraction via Einstein summation convention.

embed_operators

Embed an operator or set of operators into a larger Hilbert space.

expectation_value

Calculate the expectation value of an operator with respect to a state.

hermitian_part

Calculate the Hermitian part of an object.

hessian

Calculate a single Hessian matrix for all the variables.

inner_product

Calculate the inner product of two vectors.

kron

Calculate the Kronecker product between np.ndarrays, Tensors, Pwcs, or Stfs.

kronecker_product_list

Calculate the Kronecker product between a list of operators.

matmul

Calculate the matrix multiplication between np.ndarrays, Tensors, Pwcs, or Stfs.

outer_product

Calculate the outer product of two vectors.

partial_trace

Calculate the partial trace of a density matrix.

trace

Calculate the trace of an object.

transpose

Reorder the dimensions of a tensor.

Basic mathematical functions

abs

Calculate the element-wise absolute value of an object.

add

Calculate the element-wise sum between numbers, np.ndarrays, Tensors, Pwcs, or Stfs.

angle

Calculate the element-wise argument of an object.

arccos

Calculate the element-wise arccosine of an object.

arcsin

Calculate the element-wise arcsine of an object.

arctan

Calculate the element-wise arctangent of an object.

complex_value

Create element-wise complex values from real numbers, np.ndarrays, Tensors, Pwcs, or Stfs, that is, the real and imaginary parts.

conjugate

Calculate the element-wise complex conjugate of an object.

cos

Calculate the element-wise cosine of an object.

cosh

Calculate the element-wise hyperbolic cosine of an object.

cumulative_sum

Calculate the cumulative sum of a tensor along a specified dimension.

exp

Calculate the element-wise exponential of an object.

floordiv

Calculate the element-wise rounded-down division between real numbers, np.ndarrays, Tensors, Pwcs, or Stfs.

imag

Calculate the element-wise imaginary part of an object.

log

Calculate the element-wise natural logarithm of an object.

multiply

Calculate the element-wise product between numbers, np.ndarrays, Tensors, Pwcs, or Stfs.

negative

Calculate the element-wise numerical negative value of an object.

pow

Calculate the element-wise power between numbers, np.ndarrays, Tensors, Pwcs, or Stfs.

real

Calculate the element-wise real part of an object.

sin

Calculate the element-wise sine of an object.

sinh

Calculate the element-wise hyperbolic sine of an object.

sqrt

Calculate the element-wise square root of an object.

subtract

Calculate the element-wise difference between numbers, np.ndarrays, Tensors, Pwcs, or Stfs.

sum

Sum the elements in a tensor (or a list of tensors with the same shape) along one or multiple of its axes.

tan

Calculate the element-wise tangent of an object.

tanh

Calculate the element-wise hyperbolic tangent of an object.

truediv

Calculate the element-wise division between numbers, np.ndarrays, Tensors, Pwcs, or Stfs.