qsearch.comparison

This module contains functions for comparing matrices, vectors, and other numerical objects. These functions do not all follow a standardized form, but many of these have a standardized version found in evaluation.py.

Module Contents

Functions

matrix_distance_squared(A, B)

This is a distance function used to compare two matrices. It is phase agnostic and fast to calculate.

matrix_distance(A, B)

The square root of matrix_distance_squared is more analgous to "distance", although for most purposes, working with a distance squared is fine, since inequalities hold.

matrix_distance_squared_jac(U, M, J)

The jacobian version of matrix_distance_squared.

matrix_residuals(A, B, I)

matrix_residuals_jac(U, M, J)

matrix_residuals_v2(A, B, I)

matrix_residuals_v2_jac(U, M, J)

matrix_residuals_slice(slices, A, B, I)

matrix_residuals_slice_jac(slices, A, B, J)

matrix_residuals_blacklist(badrows, badcols, A, B, I)

matrix_residuals_blacklist_jac(badrows, badcols, A, B, J)

distance_with_initial_state(stateA, stateB, A, B)

distance_with_initial_state_jac(stateA, stateB, A, B, J)

residuals_with_initial_state(stateA, stateB, A, B, I)

residuals_with_initial_state_jac(stateA, stateB, U, M, J)

eval_func_from_residuals(f, A, B)

qsearch.comparison.matrix_distance_squared(A, B)

This is a distance function used to compare two matrices. It is phase agnostic and fast to calculate.

Parameters:
  • A – A unitary matrix in the form of a numpy ndarray.

  • B – Another unitary matrix of the same size as A, as a numpy ndarray.

Returns:

A single value between 0 and 1, representing how closely A and B match. A value near 0 indicates that A and B are the same unitary, up to an overall phase difference.

Return type:

Float

qsearch.comparison.matrix_distance(A, B)

The square root of matrix_distance_squared is more analgous to “distance”, although for most purposes, working with a distance squared is fine, since inequalities hold.

Parameters:
  • A – A unitary matrix in the form of a numpy ndarray.

  • B – Another unitary matrix of the same size as A, as a numpy ndarray.

Returns:

A single value between 0 and 1, representing how closely A and B match. A value near 0 indicates that A and B are the same unitary, up to an overall phase difference.

Return type:

Float

qsearch.comparison.matrix_distance_squared_jac(U, M, J)

The jacobian version of matrix_distance_squared.

Parameters:
  • U – A constant unitary matrix in the form of a numpy ndarray.

  • M – A variable unitary matrix of the same size as A, as a numpy ndarray.

  • J – A list of nump ndarrays representing the jacobians of M with respect to the parameters of interest.

Returns:

The matrix distance squared as a float (the same value that would be returned from matrix_distance_squared) jacs : A list of the derivative of dsq with resepect to each of the parameters.

Return type:

dsq

qsearch.comparison.matrix_residuals(A, B, I)
qsearch.comparison.matrix_residuals_jac(U, M, J)
qsearch.comparison.matrix_residuals_v2(A, B, I)
qsearch.comparison.matrix_residuals_v2_jac(U, M, J)
qsearch.comparison.matrix_residuals_slice(slices, A, B, I)
qsearch.comparison.matrix_residuals_slice_jac(slices, A, B, J)
qsearch.comparison.matrix_residuals_blacklist(badrows, badcols, A, B, I)
qsearch.comparison.matrix_residuals_blacklist_jac(badrows, badcols, A, B, J)
qsearch.comparison.distance_with_initial_state(stateA, stateB, A, B)
qsearch.comparison.distance_with_initial_state_jac(stateA, stateB, A, B, J)
qsearch.comparison.residuals_with_initial_state(stateA, stateB, A, B, I)
qsearch.comparison.residuals_with_initial_state_jac(stateA, stateB, U, M, J)
qsearch.comparison.eval_func_from_residuals(f, A, B)