def test_qp_response_numpy_decoding(self): res = decode_qp_numpy(copy.deepcopy(self.res_msg), return_matrix=False) self.assertEqual(res.get('format'), 'qp') self.assertEqual(res.get('num_variables'), self.res_num_variables) self.assertEqual(res.get('active_variables'), list(self.res_active_variables)) self.assertEqual(res.get('solutions'), list(self.res_solutions)) self.assertEqual(res.get('energies'), list(self.res_energies)) self.assertEqual(res.get('num_occurrences'), list(self.res_num_occurrences))
def test_qp_response_numpy_decoding_numpy_array(self): res = decode_qp_numpy(copy.deepcopy(self.res_msg), return_matrix=True) self.assertEqual(res.get('format'), 'qp') self.assertEqual(res.get('num_variables'), self.res_num_variables) np.testing.assert_array_equal(res.get('active_variables'), np.array(self.res_active_variables)) np.testing.assert_array_equal(res.get('solutions'), np.array(self.res_solutions)) np.testing.assert_array_equal(res.get('energies'), np.array(self.res_energies)) np.testing.assert_array_equal(res.get('num_occurrences'), np.array(self.res_num_occurrences))
def _decode(self): """Choose the right decoding method based on format and environment.""" if self._message['type'] not in ['qubo', 'ising']: raise ValueError('Unknown problem format used.') # If format is set, it must be qp if self._message.get('answer', {}).get('format') != 'qp': raise ValueError('Data format returned by server not understood.') # prefer numpy decoding, but fallback to python # TODO: we should really be explicit about numpy usage start = time.time() if _numpy: self._result = decode_qp_numpy(self._message, return_matrix=self.return_matrix) else: self._result = decode_qp(self._message) self.parse_time = time.time() - start self._alias_result() return self._result
def _decode_qp(self, msg): if _numpy: return decode_qp_numpy(msg, return_matrix=self.return_matrix) else: return decode_qp(msg)