def get_memory(self, 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'] Args: experiment (str or QuantumCircuit or Schedule or int or None): the index of the experiment, as specified by ``data()``. Returns: List[str] or np.ndarray: 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 ============ ============= ===== Raises: QiskitError: if there is no memory data for the circuit. """ exp_result = self._get_experiment(experiment) try: try: # header is not available header = exp_result.header.to_dict() except (AttributeError, QiskitError): header = None meas_level = exp_result.meas_level memory = self.data(experiment)["memory"] if meas_level == MeasLevel.CLASSIFIED: return postprocess.format_level_2_memory(memory, header) elif meas_level == MeasLevel.KERNELED: return postprocess.format_level_1_memory(memory) elif meas_level == MeasLevel.RAW: return postprocess.format_level_0_memory(memory) else: raise QiskitError( f"Measurement level {meas_level} is not supported") except KeyError as ex: raise QiskitError( 'No memory for experiment "{}". ' "Please verify that you either ran a measurement level 2 job " 'with the memory flag set, eg., "memory=True", ' "or a measurement level 0/1 job.".format( repr(experiment))) from ex
def get_memory(self, 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'] Args: experiment (str or QuantumCircuit or Schedule or int or None): the index of the experiment, as specified by ``data()``. Returns: List[str] or np.ndarray: Either the list of each outcome, formatted according to registers in circuit or a complex numpy np.darray 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 ============ ============= ===== Raises: QiskitError: if there is no memory data for the circuit. """ try: exp_result = self._get_experiment(experiment) try: # header is not available header = exp_result.header.to_dict() except (AttributeError, QiskitError): header = None meas_level = exp_result.meas_level memory = self.data(experiment)['memory'] if meas_level == 2: return postprocess.format_level_2_memory(memory, header) elif meas_level == 1: return postprocess.format_level_1_memory(memory) elif meas_level == 0: return postprocess.format_level_0_memory(memory) else: raise QiskitError( 'Measurement level {0} is not supported'.format( meas_level)) except KeyError: raise QiskitError( 'No memory for experiment "{0}".'.format(experiment))