qiskit.ignis.verification.QVFitter
class QVFitter(backend_result=None, statevector_result=None, qubit_lists=None)
Class for fitters for quantum volume.
Parameters
- backend_result (list) – list of results (qiskit.Result).
- statevector_result (list) – the ideal statevectors of each circuit
- qubit_lists (list) – list of qubit lists (what was passed to the circuit generation)
__init__
__init__(backend_result=None, statevector_result=None, qubit_lists=None)
Parameters
- backend_result (list) – list of results (qiskit.Result).
- statevector_result (list) – the ideal statevectors of each circuit
- qubit_lists (list) – list of qubit lists (what was passed to the circuit generation)
Methods
__init__ ([backend_result, …]) | param backend_resultlist of results (qiskit.Result). |
add_data (new_backend_result[, rerun_fit]) | Add a new result. |
add_statevectors (new_statevector_result) | Add the ideal results and convert to the heavy outputs. |
calc_confidence_level (z_value) | Calculate confidence level using z value. |
calc_data () | Make a count dictionary for each unique circuit from all the results. |
calc_statistics () | Convert the heavy outputs in the different trials into mean and error for plotting. |
calc_z_value (mean, sigma) | Calculate z value using mean and sigma. |
plot_hop_accumulative (depth[, ax, figsize]) | Plot individual and accumulative heavy output probability (HOP) as a function of number of trials. |
plot_qv_data ([ax, show_plt, figsize, …]) | Plot the qv data as a function of depth |
plot_qv_trial (depth, trial_index[, figsize, ax]) | Plot individual trial. |
quantum_volume () | Return the volume for each depth. |
qv_success () | Return whether each depth was successful (> 2/3 with confidence level > 0.977 corresponding to z_value = 2) and the confidence level. |
Attributes
depths | Return depth list. |
heavy_output_counts | Return the number of heavy output counts as measured. |
heavy_output_prob_ideal | Return the heavy output probability ideally. |
heavy_outputs | Return the ideal heavy outputs dictionary. |
qubit_lists | Return depth list. |
results | Return all the results. |
ydata | Return the average and std of the output probability. |
add_data
add_data(new_backend_result, rerun_fit=True)
Add a new result. Re calculate fit
Parameters
- new_backend_result (list) – list of qv results
- rerun_fit (bool) – re calculate the means and fit the result
Raises
QiskitError – If the ideal distribution isn’t loaded yet
Additional information:
Assumes that ‘result’ was executed is the output of circuits generated by qv_circuits,
add_statevectors
add_statevectors(new_statevector_result)
Add the ideal results and convert to the heavy outputs.
Assume the result is from ‘statevector_simulator’
Parameters
new_statevector_result (list) – ideal results
Raises
QiskitError – If the result has already been added for the circuit
calc_confidence_level
calc_confidence_level(z_value)
Calculate confidence level using z value.
Accumulative probability for standard normal distribution in [-z, +infinity] is 1/2 (1 + erf(z/sqrt(2))), where z = (X - mu)/sigma = (hmean - 2/3)/sigma
Parameters
z_value (float) – z value in in standard normal distibution.
Returns
confidence level in decimal (not percentage).
Return type
float
calc_data
calc_data()
Make a count dictionary for each unique circuit from all the results.
Calculate the heavy output probability.
Additional information:
Assumes that ‘result’ was executed is the output of circuits generated by qv_circuits,
calc_statistics
calc_statistics()
Convert the heavy outputs in the different trials into mean and error for plotting.
Here we assume the error is due to a binomial distribution. Error (standard deviation) for binomial distribution is sqrt(np(1-p)), where n is the number of trials (self._ntrials) and p is the success probability (self._ydata[0][depthidx]/self._ntrials).
calc_z_value
calc_z_value(mean, sigma)
Calculate z value using mean and sigma.
Parameters
- mean (float) – mean
- sigma (float) – standard deviation
Returns
z_value in standard normal distibution.
Return type
float
depths
Return depth list.
heavy_output_counts
Return the number of heavy output counts as measured.
heavy_output_prob_ideal
Return the heavy output probability ideally.
heavy_outputs
Return the ideal heavy outputs dictionary.
plot_hop_accumulative
plot_hop_accumulative(depth, ax=None, figsize=(7, 5))
Plot individual and accumulative heavy output probability (HOP) as a function of number of trials.
Parameters
- depth (int) – depth of QV circuits
- ax (Axes or None) – plot axis (if passed in).
- figsize (tuple) – figure size in inches.
Raises
ImportError – If matplotlib is not installed.
Returns
A figure of individual and accumulative HOP as a function of number of trials, with 2-sigma confidence interval and 2/3 threshold.
Return type
matplotlib.Figure
plot_qv_data
plot_qv_data(ax=None, show_plt=True, figsize=(7, 5), set_title=True, title=None)
Plot the qv data as a function of depth
Parameters
- ax (Axes or None) – plot axis (if passed in).
- show_plt (bool) – display the plot.
- figsize (tuple) – Figure size in inches.
- set_title (bool) – set figure title.
- title (String or None) – text for setting figure title
Raises
ImportError – If matplotlib is not installed.
Returns
A figure of Quantum Volume data (heavy output probability) with two-sigma error bar as a function of circuit depth.
Return type
matplotlib.Figure
plot_qv_trial
plot_qv_trial(depth, trial_index, figsize=(7, 5), ax=None)
Plot individual trial. :param depth: circuit depth :type depth: int :param trial_index: trial index :type trial_index: int :param figsize: Figure size in inches. :type figsize: tuple :param ax: plot axis (if passed in). :type ax: Axes or None
Returns
A figure for histogram of ideal and experiment probabilities.
Return type
matplotlib.Figure
quantum_volume
quantum_volume()
Return the volume for each depth.
Returns
List of quantum volumes
Return type
list
qubit_lists
Return depth list.
qv_success
qv_success()
Return whether each depth was successful (> 2/3 with confidence level > 0.977 corresponding to z_value = 2) and the confidence level.
Returns
List of list of 2 elements for each depth: - success True/False - confidence level
Return type
list
results
Return all the results.
ydata
Return the average and std of the output probability.