IonQ Result#

IonQ result implementation that extends to allow for retrieval of probabilities.

class qiskit_ionq.ionq_result.IonQResult(backend_name, backend_version, qobj_id, job_id, success, results, date=None, status=None, header=None, **kwargs)[source]#

An IonQ-specific result object.

The primary reason this class extends the base Qiskit result object is to provide an API for retrieving result probabilities directly.

data(experiment=None)#

Get the raw data for an experiment.

Note this data will be a single classical and quantum register and in a format required by the results schema. We recommend that most users use the get_xxx method, and the data will be post-processed for the data type.

Parameters:

experiment (str or QuantumCircuit or Schedule or int or None) – the index of the experiment. Several types are accepted for convenience:: * str: the name of the experiment. * QuantumCircuit: the name of the circuit instance will be used. * Schedule: the name of the schedule instance will be used. * int: the position of the experiment. * None: if there is only one experiment, returns it.

Returns:

A dictionary of results data for an experiment. The data depends on the backend it ran on and the settings of meas_level, meas_return and memory.

OpenQASM backends return a dictionary of dictionary with the key ‘counts’ and with the counts, with the second dictionary keys containing a string in hex format (0x123) and values equal to the number of times this outcome was measured.

Statevector backends return a dictionary with key ‘statevector’ and values being a list[list[complex components]] list of 2^num_qubits complex amplitudes. Where each complex number is represented as a 2 entry list for each component. For example, a list of [0.5+1j, 0-1j] would be represented as [[0.5, 1], [0, -1]].

Unitary backends return a dictionary with key ‘unitary’ and values being a list[list[list[complex components]]] list of 2^num_qubits x 2^num_qubits complex amplitudes in a two entry list for each component. For example if the amplitude is [[0.5+0j, 0-1j], …] the value returned will be [[[0.5, 0], [0, -1]], …].

The simulator backends also have an optional key ‘snapshots’ which returns a dict of snapshots specified by the simulator backend. The value is of the form dict[slot: dict[str: array]] where the keys are the requested snapshot slots, and the values are a dictionary of the snapshots.

Return type:

dict

Raises:

QiskitError – if data for the experiment could not be retrieved.

classmethod from_dict(data)#

Create a new ExperimentResultData object from a dictionary.

Parameters:

data (dict) – A dictionary representing the Result to create. It will be in the same format as output by to_dict().

Returns:

The Result object from the input dictionary.

Return type:

Result

get_counts(experiment=None)#

Get the histogram data of an experiment.

Parameters:

experiment (str or QuantumCircuit or Schedule or int or None) – the index of the experiment, as specified by data([experiment]).

Returns:

a dictionary or a list of dictionaries. A dictionary has the counts for each qubit with the keys containing a string in binary format and separated according to the registers in circuit (e.g. 0100 1110). The string is little-endian (cr[0] on the right hand side).

Return type:

dict[str, int] or list[dict[str, int]]

Raises:

QiskitError – if there are no counts for the experiment.

get_memory(experiment=None)#

Get the sequence of memory states (readouts) for each shot The data from the experiment is a list of format [‘00000’, ‘01000’, ‘10100’, ‘10100’, ‘11101’, ‘11100’, ‘00101’, …, ‘01010’]

Parameters:

experiment (str or QuantumCircuit or Schedule or int or None) – the index of the experiment, as specified by data().

Returns:

Either the list of each outcome, formatted according to registers in circuit or a complex numpy np.ndarray with shape:

meas_level

meas_return

shape

0

single

np.ndarray[shots, memory_slots, memory_slot_size]

0

avg

np.ndarray[memory_slots, memory_slot_size]

1

single

np.ndarray[shots, memory_slots]

1

avg

np.ndarray[memory_slots]

2

memory=True

list

Return type:

List[str] or np.ndarray

Raises:

QiskitError – if there is no memory data for the circuit.

get_probabilities(experiment=None)[source]#

Get probabilities for the experiment.

If experiment is None, self.results will be used in its place.

Parameters:

experiment (Union[int, QuantumCircuit, Schedule, dict], optional) – If provided, this argument is used to get an experiment using Result’s _get_experiment method.

Raises:

IonQJobError – A given experiment in our results had no probabilities.

Returns:

Single count if the result list

was size one, else the entire list.

Return type:

Union[Counts, list(Counts)]

get_statevector(experiment=None, decimals=None)#

Get the final statevector of an experiment.

Parameters:
  • experiment (str or QuantumCircuit or Schedule or int or None) – the index of the experiment, as specified by data().

  • decimals (int) – the number of decimals in the statevector. If None, does not round.

Returns:

list of 2^num_qubits complex amplitudes.

Return type:

list[complex]

Raises:

QiskitError – if there is no statevector for the experiment.

get_unitary(experiment=None, decimals=None)#

Get the final unitary of an experiment.

Parameters:
  • experiment (str or QuantumCircuit or Schedule or int or None) – the index of the experiment, as specified by data().

  • decimals (int) – the number of decimals in the unitary. If None, does not round.

Returns:

list of 2^num_qubits x 2^num_qubits complex

amplitudes.

Return type:

list[list[complex]]

Raises:

QiskitError – if there is no unitary for the experiment.

to_dict()#

Return a dictionary format representation of the Result

Returns:

The dictionary form of the Result

Return type:

dict