def convert_measurements(self, backend_result, target_qubits=None) -> QubitWaveFunction: """ map backend results to QubitWaveFunction Parameters ---------- backend_result: the result returned directly qiskit simulation. Returns ------- QubitWaveFunction: measurements converted into wave function form. """ qiskit_counts = backend_result.result().get_counts() result = QubitWaveFunction() # todo there are faster ways for k, v in qiskit_counts.items(): converted_key = BitString.from_bitstring( other=BitStringLSB.from_binary(binary=k)) result._state[converted_key] = v if target_qubits is not None: mapped_target = [self.qubit_map[q].number for q in target_qubits] mapped_full = [ self.qubit_map[q].number for q in self.abstract_qubits ] keymap = KeyMapRegisterToSubregister(subregister=mapped_target, register=mapped_full) result = result.apply_keymap(keymap=keymap) return result
def convert_measurements(self, backend_result, target_qubits=None) -> QubitWaveFunction: """ Transform backend evaluation results into QubitWaveFunction Parameters ---------- backend_result: the return value of backend simulation. Returns ------- QubitWaveFunction results transformed to tequila native QubitWaveFunction """ result = QubitWaveFunction() # todo there are faster ways for k, v in backend_result.frequencies(binary=True).items(): converted_key = BitString.from_bitstring( other=BitStringLSB.from_binary(binary=k)) result._state[converted_key] = v if target_qubits is not None: mapped_target = [self.qubit_map[q].number for q in target_qubits] mapped_full = [ self.qubit_map[q].number for q in self.abstract_qubits ] keymap = KeyMapRegisterToSubregister(subregister=mapped_target, register=mapped_full) result = result.apply_keymap(keymap=keymap) return result
def convert_measurements(self, backend_result) -> QubitWaveFunction: """ Transform backend evaluation results into QubitWaveFunction Parameters ---------- backend_result: the return value of backend simulation. Returns ------- QubitWaveFunction results transformed to tequila native QubitWaveFunction """ result = QubitWaveFunction() # todo there are faster ways for k in backend_result: converted_key = BitString.from_binary( BitStringLSB.from_int(integer=k, nbits=self.n_qubits).binary) if converted_key in result._state: result._state[converted_key] += 1 else: result._state[converted_key] = 1 if hasattr(self, "measurements"): mqubits = self.measurements keymap = KeyMapRegisterToSubregister( subregister=mqubits, register=[i for i in range(self.n_qubits)]) result = result.apply_keymap(keymap=keymap) return result
def convert_measurements(self, backend_result, target_qubits=None) -> QubitWaveFunction: """ Transform backend evaluation results into QubitWaveFunction Parameters ---------- backend_result: the return value of backend simulation. Returns ------- QubitWaveFunction results transformed to tequila native QubitWaveFunction """ result = QubitWaveFunction() # todo there are faster ways for k in backend_result: converted_key = BitString.from_binary( BitStringLSB.from_int(integer=k, nbits=self.n_qubits).binary) if converted_key in result._state: result._state[converted_key] += 1 else: result._state[converted_key] = 1 if target_qubits is not None: mapped_target = [self.qubit_map[q].number for q in target_qubits] mapped_full = [ self.qubit_map[q].number for q in self.abstract_qubits ] keymap = KeyMapRegisterToSubregister(subregister=mapped_target, register=mapped_full) result = result.apply_keymap(keymap=keymap) return result