pauliarray.binary package#
Submodules#
pauliarray.binary.bit_operations module#
- pauliarray.binary.bit_operations.add(bit_matrix_1: np.ndarray[np.bool], bit_matrix_2: np.ndarray[np.bool]) np.ndarray[np.bool][source]#
- Performs element-wise XOR operation between two binary matrices. - Parameters:
- bit_matrix_1 ("np.ndarray[np.bool]") – First binary matrix. 
- bit_matrix_2 ("np.ndarray[np.bool]") – Second binary matrix. 
 
- Returns:
- Element-wise XOR result of the two input matrices. 
- Return type:
- “np.ndarray[np.bool]” 
 
- pauliarray.binary.bit_operations.bit_sum(bit_strings: np.ndarray[np.bool]) int[source]#
- Calculates the sum of booleans along the last axis of the input array. - Parameters:
- bit_strings ("np.ndarray[np.bool]") – Array of booleans. 
- Returns:
- Sum of bits along the last axis. 
- Return type:
- int 
 
- pauliarray.binary.bit_operations.dot(bit_strings_1: np.ndarray[np.bool], bit_strings_2: np.ndarray[np.bool]) np.ndarray[np.int][source]#
- Computes the dot product between two arrays of boolean values. - Parameters:
- bit_strings_1 ("np.ndarray[np.bool]") – First array of boolean values. 
- bit_strings_2 ("np.ndarray[np.bool]") – Second array of boolean values. 
 
- Returns:
- Dot product of the two input arrays. 
- Return type:
- “np.ndarray[np.int]” 
 
- pauliarray.binary.bit_operations.intersection(bit_strings_1: np.ndarray[np.bool], bit_strings_2: np.ndarray[np.bool]) np.ndarray[np.bool][source]#
- Computes the intersection of two sets of bit strings. - Args
- bit_strings_1 (“np.ndarray[np.bool]”): First array of boolean values. bit_strings_2 (“np.ndarray[np.bool]”): Second array of boolean values. 
- Returns
- “np.ndarray[np.bool]”: Intersection of the input bit strings. 
 
- pauliarray.binary.bit_operations.intersection_row_space(bit_matrix_1: np.ndarray[np.bool], bit_matrix_2: np.ndarray[np.bool]) np.ndarray[np.bool][source]#
- Given two matrices which rows are spanning two subspace, this fonction returns rows spanning the intersection subspace. - Parameters:
- bit_matrix_1 ("np.ndarray[np.bool]") – First binary matrix. 
- bit_matrix_2 ("np.ndarray[np.bool]") – Second binary matrix. 
 
- Returns:
- Rows spanning the intersection subspace. 
- Return type:
- “np.ndarray[np.bool]” 
 
- pauliarray.binary.bit_operations.inv(bit_matrix: np.ndarray[np.bool]) np.ndarray[np.bool][source]#
- Computes the inverse of a binary matrix. - Parameters:
- bit_matrix ("np.ndarray[np.bool]") – Input binary matrix. 
- Returns:
- Inverse of the input binary matrix. 
- Return type:
- “np.ndarray[np.bool]” 
 
- pauliarray.binary.bit_operations.is_orthogonal(bit_strings_1: np.ndarray[np.bool], bit_strings_2: np.ndarray[np.bool]) np.ndarray[np.bool][source]#
- Checks if two sets of bit strings are orthogonal. - Parameters:
- bit_strings_1 ("np.ndarray[np.bool]") – First array of boolean values. 
- bit_strings_2 ("np.ndarray[np.bool]") – Second array of boolean values. 
 
 - Returns
- “np.ndarray[np.bool]”: True if the input bit strings are orthogonal, False otherwise. 
 
- pauliarray.binary.bit_operations.kernel(bit_matrix: np.ndarray[np.bool]) np.ndarray[np.bool][source]#
- Computes the Kernel of a two dimensions “np.ndarray[np.bool]”. The Kernel of a matrix A is a matrix which the columns are formed by the vectors x such that \[A x = 0.\]- Parameters:
- bit_matrix ("np.ndarray[np.bool]") – Input binary matrix. 
- Returns:
- Kernel of the input binary matrix. 
- Return type:
- “np.ndarray[np.bool]” 
 
- pauliarray.binary.bit_operations.matmul(bit_matrix_1: np.ndarray[np.bool], bit_matrix_2: np.ndarray[np.bool]) np.ndarray[np.bool][source]#
- Performs matrix multiplication over binary matrices. - Parameters:
- bit_matrix_1 ("np.ndarray[np.bool]") – First binary matrix. 
- bit_matrix_2 ("np.ndarray[np.bool]") – Second binary matrix. 
 
- Returns:
- Resultant binary matrix after multiplication. 
- Return type:
- “np.ndarray[np.bool]” 
 
- pauliarray.binary.bit_operations.orthogonal_basis(bit_strings: np.ndarray[np.bool]) np.ndarray[np.bool][source]#
- Computes the orthogonal basis of the given set of bit strings. - Parameters:
- bit_strings ("np.ndarray[np.bool]") – Input array of bit strings. 
 - Returns
- “np.ndarray[np.bool]”: Orthogonal basis of the input bit strings. 
 
- pauliarray.binary.bit_operations.orthogonal_complement(bit_strings: np.ndarray[np.bool]) np.ndarray[np.bool][source]#
- Computes the orthogonal complement of the given set of bit strings. - Parameters:
- bit_strings ("np.ndarray[np.bool]") – Input array of bit strings. 
 - Returns
- “np.ndarray[np.bool]”: Orthogonal basis of the input bit strings. 
 
- pauliarray.binary.bit_operations.rank(bit_matrix: np.ndarray[np.bool]) int[source]#
- Computes the rank of a binary matrix. - Parameters:
- bit_matrix ("np.ndarray[np.bool]") – Input binary matrix. 
- Returns:
- Rank of the binary matrix. 
- Return type:
- int 
 
- pauliarray.binary.bit_operations.row_echelon(bit_matrix: np.ndarray[np.bool]) np.ndarray[np.bool][source]#
- Applies Gauss-Jordan elimination on a binary matrix to produce row echelon form. - Parameters:
- bit_matrix ("np.ndarray[np.bool]") – Input binary matrix. 
- Returns:
- Row echelon form of the provided matrix. 
- Return type:
- “np.ndarray[np.bool]” 
 
- pauliarray.binary.bit_operations.row_space(bits: np.ndarray[np.bool]) np.ndarray[np.bool][source]#
- Computes the row space of a binary matrix using Gauss-Jordan elimination and removing the zero lines. - Parameters:
- bits ("np.ndarray[np.bool]") – Input binary matrix. 
 - Returns
- “np.ndarray[np.bool]”: Row space of the current matrix 
 
- pauliarray.binary.bit_operations.strings_to_ints(bit_strings: np.ndarray[np.bool]) np.ndarray[np.int][source]#
- Converts binary strings to integers. - Parameters:
- bit_strings ("np.ndarray[np.bool]") – Input array of binary strings. 
- Returns:
- Integers obtained from input binary strings 
- Return type:
- “np.ndarray[np.int]” 
 
pauliarray.binary.symplectic module#
- pauliarray.binary.symplectic.coisotropic_subspace(orthogonal_zx_strings: np.ndarray[np.bool]) np.ndarray[np.bool][source]#
- Given a list of zx_strings which are mutually orthogonal in the smplectic sense, returns a list of zx_strings which are orthogonal to the provided zx_strings. For zx_strings of length 2*n, the number of returned zx_strings is 2*n - rank(zx_strings). The returned zx_strings might not be mutually orthogonal in the symplectic sense. - Parameters:
- orthogonal_zx_strings ("np.ndarray[np.bool]") – A list of zx_strings (2d-array of bools) which are mutually 
- strings. (orthogonal. Last dimension is along the length of the) 
 
- Returns:
- A list of zx_strings defining the coisotropic subspace. 
- Return type:
- “np.ndarray[np.bool]” 
 
- pauliarray.binary.symplectic.conjugate_subspace(isotropic_zx_strings: np.ndarray[np.bool]) np.ndarray[np.bool][source]#
- Conctruct a conjugate subspace to the provided isotropic subspace. Each zx_string the conjugate subspace is orthogonal ins the symplectic sense to all provided zx_strings of the isotropic subspace, except for one : its conjugate. - Parameters:
- isotropic_zx_strings ("np.ndarray[np.bool]") – Isotropic subspace. 
- Returns:
- Conjugate subspace to the input isotropic subspace. 
- Return type:
- “np.ndarray[np.bool]” 
 
- pauliarray.binary.symplectic.dot(zx_strings_1: np.ndarray[np.bool], zx_strings_2: np.ndarray[np.bool]) np.ndarray[np.int][source]#
- Computes the binary dot product between two zx boolean strings. - Parameters:
- zx_strings_1 ("np.ndarray[np.bool]") – First input zx string to compute the dot product with. 
- zx_strings_2 ("np.ndarray[np.bool]") – Second input zx string to compute the dot product with. 
 
- Returns:
- Dot product of the two input arrays. 
- Return type:
- “np.ndarray[np.int]” 
 
- pauliarray.binary.symplectic.flip_zx(zx_strings: np.ndarray[np.bool]) np.ndarray[np.bool][source]#
- Flips an input zx string into an xz string. - Parameters:
- zx_strings ("np.ndarray[np.bool]") – Input zx string to flip 
- Returns:
- Flipped zx string (xz string) 
- Return type:
- “np.ndarray[np.bool]” 
 
- pauliarray.binary.symplectic.gram_schmidt_orthogonalization(zx_strings: np.ndarray[np.bool]) np.ndarray[np.bool][source]#
- Performs a Gram Schmidt orthogonalization procedure in the symplectic space. - Parameters:
- zx_strings ("np.ndarray[np.bool]") – Input space. 
- Returns:
- Bit strings which are mutually symplectic orthogonal spawning the same space as the input. 
- Return type:
- “np.ndarray[np.bool]” 
 
- pauliarray.binary.symplectic.is_coisotropic(zx_strings: np.ndarray[np.bool]) bool[source]#
- Checks if a given list of zx_strings defines an coisotropic subspace. - Parameters:
- zx_strings ("np.ndarray[np.bool]") – A list of zx_strings (2d-array of bools) defining a subspace. 
- strings. (Last dimension is along the length of the) 
 
- Returns:
- Wether or not input is coisotropic 
- Return type:
- bool 
 
- pauliarray.binary.symplectic.is_isotropic(zx_strings: np.ndarray[np.bool]) bool[source]#
- Checks if a given list of zx_strings defines an isotropic subspace. - Parameters:
- zx_strings ("np.ndarray[np.bool]") – A list of zx_strings (2d-array of bools) defining a subspace. 
- strings. (Last dimension is along the length of the) 
 
- Returns:
- Wether or not input is isotropic 
- Return type:
- bool 
 
- pauliarray.binary.symplectic.is_lagrangian(zx_strings: np.ndarray[np.bool]) bool[source]#
- Checks if a given list of zx_strings defines a Lagrangian subspace. - Parameters:
- zx_strings ("np.ndarray[np.bool]") – A list of zx_strings (2d-array of bools) defining a subspace. 
- strings. (Last dimension is along the length of the) 
 
- Returns:
- Wether or not input is lagrangian 
- Return type:
- bool 
 
- pauliarray.binary.symplectic.is_orthogonal(zx_strings_1: np.ndarray[np.bool], zx_strings_2: np.ndarray[np.bool]) np.ndarray[np.bool][source]#
- Check if the zx_strings of one string array are orthogonal to the zx_strings of an other string array element wise and using the simplectic dot product. Two zx_strings are orthogonal if the symplectic dot product is 0. - Parameters:
- zx_strings_1 ("np.ndarray[np.bool]") – A list of zx_strings defining a subspace. 
- strings. (Last dimension is along the length of the) 
- zx_strings_2 ("np.ndarray[np.bool]") – A list of zx_strings defining a subspace. 
- strings. 
 
- Returns:
- Wether or not the two input string are orthogonal to each other. 
- Return type:
- “np.ndarray[np.bool]” 
 
- pauliarray.binary.symplectic.isotropic_subspace(orthogonal_zx_strings: np.ndarray[np.bool]) np.ndarray[np.bool][source]#
- Given a list of zx_strings which are mutually orthogonal in the smplectic sense, returns a list of zx_strings which are mutually orthogonal and linearly independent. - Parameters:
- orthogonal_zx_strings ("np.ndarray[np.bool]") – A list of zx_strings (2d-array of bools) which are mutually 
- strings. (orthogonal. Last dimension is along the length of the) 
 
- Returns:
- A list of zx_strings defining the isotropic subspace. 
- Return type:
- “np.ndarray[np.bool]” 
 
- pauliarray.binary.symplectic.lagrangian_subspace(orthogonal_zx_strings: np.ndarray[np.bool]) np.ndarray[np.bool][source]#
- Given a list of zx_strings of length 2*n which are mutually orthogonal in the smplectic sense, returns a list of n zx_strings which are mutually orthogonal and orthogonal to the provided zx_strings. - Parameters:
- orthogonal_zx_strings ("np.ndarray[np.bool]") – A list of zx_strings (2d-array of bools) which are mutually 
- strings. (orthogonal. Last dimension is along the length of the) 
 
- Returns:
- A list of zx_strings defining the Lagrangian subspace. 
- Return type:
- “np.ndarray[np.bool]” 
 
- pauliarray.binary.symplectic.merge_zx_strings(z_strings: np.ndarray[np.bool], x_strings: np.ndarray[np.bool]) np.ndarray[np.bool][source]#
- Merges z and x strings to create one zx string. - Parameters:
- z_strings ("np.ndarray[np.bool]") – First string to concatenate (z) 
- x_strings ("np.ndarray[np.bool]") – Second string to concatenate (x) 
 
- Returns:
- Concatenated zx string. 
- Return type:
- “np.ndarray[np.bool]” 
 
- pauliarray.binary.symplectic.orthogonal_complement(zx_strings: np.ndarray[np.bool]) np.ndarray[np.bool][source]#
- Finds a list of zx_strings which or orthogonal in the symplectic sense to the provided zx_strings. For zx_strings of length 2*n, the number of returned zx_strings is 2*n - rank(zx_strings). The returned zx_strings might not be mutually orthogonal in the symplectic sense. - Parameters:
- zx_strings ("np.ndarray[np.bool]") – A list of zx_strings (2d-array of bools) defining a subspace. 
- strings. (Last dimension is along the length of the) 
 
- Returns:
- A list of zx_strings defining the orthogonal completement. 
- Return type:
- “np.ndarray[np.bool]” 
 
- pauliarray.binary.symplectic.split_zx_strings(zx_strings: np.ndarray[np.bool]) tuple[np.ndarray[np.bool], np.ndarray[np.bool]][source]#
- Split one concatenated zx string into a z string and an x string. - Parameters:
- zx_strings ("np.ndarray[np.bool]") – Concatenated zx string 
- Returns:
- Split z string and x string. 
- Return type:
- tuple[“np.ndarray[np.bool]”, “np.ndarray[np.bool]”] 
 
Module contents#
Binary module. Implements operations on binary data structures.