Utilities

In utils.py you will find functions that are shared among one or more modules.

Common Functions

is_pos_pow_two(x) Simple check that an integer is a positive power of two.
bit_array_to_int(bit_array) Converts a bit array into an integer where the right-most bit is least significant.
int_to_bit_array(num, n_bits) Converts a number into an array of bits where the right-most bit is least significant.
pack_shot_data(shot_data)
bloch_vector_to_standard_basis(theta, phi) Converts the Bloch vector representation of a 1q state given in spherical coordinates to the standard representation of that state in the computational basis.
standard_basis_to_bloch_vector(qubit_state) Converts a standard representation of a single qubit state in the computational basis to the spherical coordinates theta, phi of its representation on the Bloch sphere.
prepare_state_on_bloch_sphere(qubit, theta, phi) Returns a program which prepares the given qubit in the state (theta, phi) on the bloch sphere, assuming the initial state |0> where (theta=0, phi=0).
transform_pauli_moments_to_bit(mean_p, var_p) Changes the first of a Pauli operator to the moments of a bit (a Bernoulli process).
transform_bit_moments_to_pauli(mean_c, var_c) Changes the first two moments of a bit (a Bernoulli process) to Pauli operator moments.
parameterized_bitstring_prep(qubits, …) Produces a parameterized program for the given group of qubits, where each qubit is prepared in the 0 or 1 state depending on the parameterization specified at run-time.
bitstring_prep(qubits, bitstring, …) Produces a program that prepares the given bitstring on the given qubits.
metadata_save(qc, repo_path, filename) This helper function saves metadata related to your run on a Quantum computer.

Pauli Functions

str_to_pauli_term(pauli_str[, qubit_labels]) Convert a string into a PauliTerm.
all_traceless_pauli_terms(qubits) Generate list of all Pauli terms (with weight > 0) on N qubits.
all_traceless_pauli_choice_terms(qubits, …) Generate list of all Pauli terms (with weight > 0) on N qubits with choice pauli.
all_traceless_pauli_z_terms(qubits) Generate list of all Pauli Z terms (with weight > 0) on N qubits
local_pauli_eig_prep(op, qubit) Generate gate sequence to prepare a the +1 eigenstate of a Pauli operator, assuming we are starting from the ground state ( the +1 eigenstate of \(Z^{\otimes n}\))
local_pauli_eigs_prep(op, qubit) Generate all gate sequences to prepare all eigenstates of a (local) Pauli operator, assuming we are starting from the ground state.
random_local_pauli_eig_prep(prog, op, qubit) Generate gate sequence to prepare a random local eigenstate of a Pauli operator, assuming we are starting from the ground state.
local_pauli_eig_meas(op, qubit) Generate gate sequence to measure in the eigenbasis of a Pauli operator, assuming we are only able to measure in the Z eigenbasis.
prepare_prod_pauli_eigenstate(pauli_term) Returns a circuit to prepare a +1 eigenstate of the Pauli operator described in PauliTerm.
measure_prod_pauli_eigenstate(pauli_term)
prepare_random_prod_pauli_eigenstate(pauli_term)
prepare_all_prod_pauli_eigenstates(pauli_term)

Operator Basis

OperatorBasis(labels_ops) Encapsulate a complete set of basis operators.
n_qubit_pauli_basis(n) Construct the tensor product operator basis of n PAULI_BASIS’s.
n_qubit_computational_basis(n) Construct the tensor product operator basis of n COMPUTATIONAL_BASIS’s.