QDT_pyquill

This code is used for Quantum Detector Tomography (QDOT) and not Quantum/Diagonal Detector Overlapping Tomography (QDOT/DDOT). It is not used in the current workflow (2023.01.12). Analogous code for qiskit is used in Tutorials in directory OldStuff

Module Contents

Functions

get_list_of_lists_indices_qdt(qubits_indices, ...)

Description:

detector_tomography_circuits(qubit_indices, probe_kets)

From list of probe kets and qubit data return quantum circuits which will be implemented to perform

detector_tomography_circuits_rigetti(qubit_indices, ...)

From list of probe kets and qubit data return quantum circuits which will be implemented to perform

gtc_tensor_calculating_function(arguments)

detector_tomography_circuits_pymali(qubit_indices, ...)

Analogical method_name of the circuits preparing method_name utilizing pymali general tensor calculator.

QDT_pyquill.get_list_of_lists_indices_qdt(qubits_indices, unitaries_amount)

Description: From list of qubit indices and number of unitaries, prepare set of names for circuits for tomography of detectors.

# FBM: Maybe GeneralTensor could be used for it? # TR: It now is – check it out ;)

Parameters:
  • qubits_indices – (list of ints) labels of qubits for QDT

  • unitaries_amount – (int) number of unitaries you want to implement.

Returns:

(list of lists of pairs of number [qubit_label, unitary_label]) of length

unitaries_amount**len(qubits_indices)

For example, let’s assume we have three qubits [0,2,4] and we have 4 unitaries. For concreteness, if those unitaries are [id, X, H, SH] for creation of [|0>, |1>, |+x>, |+y>] states, the circuits will be:

id x id x id,

id x id x X,

id x id x H,

id x id x SH,

id x X x id

id x X x X

id x X x H

id x X x SH

etc….

SH x SH x id

SH x SH x X

SH x SH x H

SH x SH x SH

If unitaries are ordered as [id, X, H, SH], the code will identify id: 0, X: 1, H: 2, SH:3, and it will return a list of lists. Each list correspond to single line in the above exemplary description of tensor product, e.g., second list corresponds to line id x id x X. Each of such lists consists of len(qubits_indices) pairs, saying which gate shall be applied to which qubit. In this example, first list will have following elements: (0, 0), (2, 0), (4, 1), i_index.e., apply unitary number 0 to qubits 0,2 and apply unitary number 1 to qubit 4.

QDT_pyquill.detector_tomography_circuits(qubit_indices, probe_kets, number_of_repetitions=1, qrs=None)

From list of probe kets and qubit data return quantum circuits which will be implemented to perform Quantum Detector Tomography (QDT).

Parameters:

probe_kets – (list of numpy arrays) the list of ket representations of qubit pure quantum states which are to

be used in QDT. For multi-qubit QDT, the combinations of tensor products of name_appendix will be taken. :param qubit_indices: (list of ints) labels of qubits for QDT :param number_of_repetitions: (int) parameter specifying how many copies of whole QDT experiment should be created (for larger statistics collection or comparision of results)

Returns:

(list of QuantumCircuit objects) of length len(probe_states)**(number_of_qubits)

QDT_pyquill.detector_tomography_circuits_rigetti(qubit_indices, probe_kets, number_of_repetitions=1, shots=8192, qrs=None)

From list of probe kets and qubit data return quantum circuits which will be implemented to perform Quantum Detector Tomography (QDT).

Parameters:

probe_kets – (list of numpy arrays) the list of ket representations of qubit pure quantum states which are to

be used in QDT. For multi-qubit QDT, the combinations of tensor products of name_appendix will be taken. :param qubit_indices: (list of ints) labels of qubits for QDT :param number_of_repetitions: (int) parameter specifying how many copies of whole QDT experiment should be created (for larger statistics collection or comparision of results)

Returns:

(list of QuantumCircuit objects) of length len(probe_states)**(number_of_qubits)

QDT_pyquill.gtc_tensor_calculating_function(arguments: list)
QDT_pyquill.detector_tomography_circuits_pymali(qubit_indices, probe_kets)

Analogical method_name of the circuits preparing method_name utilizing pymali general tensor calculator.