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