PH.parent_hamiltonian
parent_hamiltonian
- Complete implementation of the Parent Hamiltonian following:
- Fumiyoshi Kobayashi and Kosuke Mitarai and Keisuke Fujii Parent Hamiltonian as a benchmark problem for variational quantum eigensolvers Physical Review A, 105, 5, 2002 https://doi.org/10.1103%2Fphysreva.105.052415 
Author: Gonzalo Ferro
- class tnbs.BTC_04_PH.PH.parent_hamiltonian.parent_hamiltonian.PH(amplitudes, t_invariant=False, **kwargs)
- Bases: - object- Class for doing Parent Hamiltonian Computations - Parameters:
- amplitudes (list) – list with the complete amplitudes of the state of the ansatz 
- kwars (dictionary) – - dictionary that allows the configuration of the CQPEAE algorithm:
- Implemented keys: 
 
 
 - get_density_matrix()
- Computes the density matrix asociated with the amplitudes 
 - get_pauli_pdf()
- Create pauli dataframe with all the info. Additionally pauli coefficients lower than float precision will be pruned 
 - local_ph()
- Computes the local parent hamiltonian 
 - naive_ph()
- Computes the parent hamiltonian of agiven ansatz for a full qubit interaction 
 - save()
- Saving Staff 
 
- tnbs.BTC_04_PH.PH.parent_hamiltonian.parent_hamiltonian.get_local_reduced_matrix(state, qb_pos)
- Given a MPS representation of a input state and position qubit (qb_pos) computes the minimum local reduced density matrix from qb_pos qubit such that its null space can be computable: i.e. rank(local_rho) < dim(local_rho) - Parameters:
- state (numpy array) – MPS representation of an state 
- qb_pos (int) – position of the qubit for computing the reduced density matrix 
 
- Returns:
- local_qubits (list) – list with the qubits affected by the reduced density matrix 
- local_rho (numpy array) – array with the reduced density matrix for the input qbit position 
 
 
- tnbs.BTC_04_PH.PH.parent_hamiltonian.parent_hamiltonian.get_null_projectors(array)
- Given an input matrix this function computes the matrix of projectors over the null space of the input matrix - Parameters:
- array (numpy array) – Input matrix for computing the projectors over the null space 
- Returns:
- h_null – Matrices with the projectors to the null space of the input array 
- Return type:
- numpy array 
 
- tnbs.BTC_04_PH.PH.parent_hamiltonian.parent_hamiltonian.run_parent_hamiltonian(**configuration)
launch_parent_hamiltonian
For launching a VQE quantum step execution Author: Gonzalo Ferro
- tnbs.BTC_04_PH.PH.parent_hamiltonian.launch_parent_hamiltonian.run_id(**configuration)
pauli
This module contains all functions needed for creating the Pauli decomposition of a Hamiltonian
Author: Gonzalo Ferro
- tnbs.BTC_04_PH.PH.parent_hamiltonian.pauli.pauli_decomposition(array, dimension, jobs=-1)
- Creates the Pauli Decomposition of an input matrix - Parameters:
- array (numpy array) – input array for doing the Pauli decomposition 
- dimension (int) – dimension for creating the corresponding basis of Kronecker products of Pauli basis 
- int (jobs =) – For speed up the coefficients computations. Number of parallel computations. 
 
- Returns:
- coefs (list) – Coefficients of the different Pauli matrices decomposition 
- strings_pauli (list) – list with the complete Pauli string decomposition 
 
 
- tnbs.BTC_04_PH.PH.parent_hamiltonian.pauli.pauli_inner_product(array, pauli_list, dimension)
- Given an input matrix and a Kronecker Pauli matrix product computes its inner product. Under the hood it computes the Frobenius norm of the complex conjugate of the matrix by the given Kronecker Pauli matrix product. - Parameters:
- array (numpy array) – Input array for getting the inner product 
- pauli_list (list) – list with the indices to compute the Kronecker product of the corresponding Pauli matrices.Each element of the list must be a number between 0 and 3 corresponding to the Pauli matrix following convention from pauli_operators function 
- dimension (int) – For doing the normalisation corresponding to the dimension of the matrices 
 
- Returns:
- inner_product – Resulting inner product 
- Return type:
- float 
 
- tnbs.BTC_04_PH.PH.parent_hamiltonian.pauli.pauli_operators(pauli_index)
- Return the correspondent Pauli matrix. - Parameters:
- pauli_index (int) – Number for selecting the Pauli matrix: 0 -> identity, 1-> X, 2-> Y, 3 -> Z 
- Returns:
- 2x2 Pauli Matrix 
- Return type:
- pauli = np.array 
 
- tnbs.BTC_04_PH.PH.parent_hamiltonian.pauli.pauli_strings(pauli_list)
- Provides the Pauli strings of the input list. - Parameters:
- pauli_list (list) – list with the ints of the Pauli matrices. See pauli_operators for the mapping 
- Returns:
- string_pauli – correspondent Pauli strings of the input 
- Return type:
- str 
 
contractions
Implementation of reduced density matrix computations and tensor contractions
Author: Gonzalo Ferro
- tnbs.BTC_04_PH.PH.parent_hamiltonian.contractions.contract_indices(tensor1, tensor2, contraction1=[], contraction2=[])
- Compute the contraction of 2 input tensors for the input contraction indices.The computation is done by, transposing indices, reshapin and doing matrix multiplication. Tensor legs can be of different dimension. BE AWARE: Order in contraction indices it is very important: contraction1 = [1, 2, 5] contraction2 = [2, 0, 6] -> Contractions will be: [1-2, 2-0, 5-6] But if contraction2 = [0, 2, 6] then contraction will be: [1-0, 2-2,5-6] If both contraction indices are empty then the tensors will be glued - Parameters:
- tensor1 (numpy array) – first tensor 
- tensor2 (numpy array) – second tensor 
- contraction1 (list) – contraction indices for first tensor 
- contraction2 (list) – contraction indices for second tensor 
 
- Returns:
- rho – Desired reduced density operator in matrix form 
- Return type:
- numpy array 
 
- tnbs.BTC_04_PH.PH.parent_hamiltonian.contractions.contract_indices_old(tensor1, tensor2, contraction1, contraction2)
- Compute the contraction of 2 input tensors for the input contraction indices.The computation is done by, transposing indices, reshaping and doing matrix multiplication - Parameters:
- tensor1 (numpy array) – first tensor 
- tensor2 (numpy array) – second tensor 
- contraction1 (list) – contraction indices for first tensor 
- contraction2 (list) – contraction indices for second tensor 
 
- Returns:
- rho – Desired reduced density operator in matrix form 
- Return type:
- numpy array 
 
- tnbs.BTC_04_PH.PH.parent_hamiltonian.contractions.contract_indices_string(tensor1, tensor2, contraction_indices)
- Compute the contraction of 2 input tensors for the input contraction indices.The computation is done by, transposing indices, reshaping and doing matrix multiplication - Parameters:
- tensor1 (numpy array) – array in MPS format of the state for computing reduced density matrix 
- tensor2 (numpy array) – array in MPS format of the state for computing reduced density matrix 
- contraction_indices (list) – Indices of the MPS state that will be contracted to compute the correspondent reduced density matrix 
 
- Returns:
- rho – Desired reduced density operator in matrix form 
- Return type:
- numpy array 
 
- tnbs.BTC_04_PH.PH.parent_hamiltonian.contractions.reduced_matrix(state, free_indices, contraction_indices)
- Compute the reduced density matrix for the input contraction indices The computation is done by, transposing indices, reshaping and doing matrix multiplication - Parameters:
- state (numpy array) – array in MPS format of the state for computing reduced density matrix 
- free_indices (list) – Free indices of the MPS state (this is the qubit that will NOT be traced out) 
- contraction_indices (list) – Indices of the MPS state that will be contracted to compute the correspondent reduced density matrix 
 
- Returns:
- rho – Desired reduced density operator in matrix form 
- Return type:
- numpy array 
 
- tnbs.BTC_04_PH.PH.parent_hamiltonian.contractions.reduced_matrix_string(state, free_indices, contraction_indices)
- Compute the reduced density matrix for the input contraction indices The computation is done by using np.einsum. Limited to 52 indices. - Parameters:
- state (numpy array) – array in MPS format of the state for computing reduced density matrix 
- free_indices (list) – Free indices of the MPS state (this is the qubit that will NOT be traced out) 
- contraction_indices (list) – Indices of the MPS state that will be contracted to compute the correspondent reduced density matrix 
 
- Returns:
- matriz_rho – Desired reduced density operator in matrix form 
- Return type:
- numpy array