From 4ad367817369bf7fcc78af78aef5c289c6423780 Mon Sep 17 00:00:00 2001 From: Bradley Ellert Date: Wed, 28 Mar 2018 16:50:37 -0700 Subject: [PATCH 1/2] Move tests to proper location --- python/dwave_qbsolv/tests/__init__.py | 0 tests/__init__.py | 1 + {python/dwave_qbsolv/tests => tests}/test_dwave_qbsolv.py | 0 3 files changed, 1 insertion(+) delete mode 100644 python/dwave_qbsolv/tests/__init__.py rename {python/dwave_qbsolv/tests => tests}/test_dwave_qbsolv.py (100%) diff --git a/python/dwave_qbsolv/tests/__init__.py b/python/dwave_qbsolv/tests/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/tests/__init__.py b/tests/__init__.py index f789e617..b9dd3144 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -1,2 +1,3 @@ from __future__ import absolute_import from tests.test_can_call import * +from tests.test_dwave_qbsolv import * diff --git a/python/dwave_qbsolv/tests/test_dwave_qbsolv.py b/tests/test_dwave_qbsolv.py similarity index 100% rename from python/dwave_qbsolv/tests/test_dwave_qbsolv.py rename to tests/test_dwave_qbsolv.py From cbc6cead6371fc314b8a4bedfed869f8b373a0b3 Mon Sep 17 00:00:00 2001 From: Bradley Ellert Date: Wed, 28 Mar 2018 18:01:05 -0700 Subject: [PATCH 2/2] Add index label decorator Only available for bqm now, so override sample instead of sample_qubo --- python/dwave_qbsolv/dimod_wrapper.py | 9 ++++++--- tests/test_dwave_qbsolv.py | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/python/dwave_qbsolv/dimod_wrapper.py b/python/dwave_qbsolv/dimod_wrapper.py index 4fcb81f9..53d65f96 100644 --- a/python/dwave_qbsolv/dimod_wrapper.py +++ b/python/dwave_qbsolv/dimod_wrapper.py @@ -26,9 +26,10 @@ def __init__(self): 'verbosity': [], 'timeout': [], 'solver_limit': [], 'solver': [], 'target': [], 'find_max': [], 'sample_kwargs': []} - def sample_qubo(self, Q, num_repeats=50, seed=None, algorithm=None, - verbosity=-1, timeout=2592000, solver_limit=None, solver=None, - target=None, find_max=False, **sample_kwargs): + @dimod.decorators.bqm_index_labels + def sample(self, bqm, num_repeats=50, seed=None, algorithm=None, + verbosity=-1, timeout=2592000, solver_limit=None, solver=None, + target=None, find_max=False, **sample_kwargs): """Sample low-energy states defined by a QUBO using qbsolv. Note: @@ -84,11 +85,13 @@ def sample_qubo(self, Q, num_repeats=50, seed=None, algorithm=None, raise ValueError("num_repeats must be a positive integer") # pose the QUBO to qbsolv + Q, offset = bqm.to_qubo() samples, energies, counts = run_qbsolv(Q=Q, num_repeats=num_repeats, seed=seed, algorithm=algorithm, verbosity=verbosity, timeout=timeout, solver_limit=solver_limit, solver=solver, target=target, find_max=find_max, sample_kwargs=sample_kwargs) # load the response response = dimod.Response.from_dicts(samples, {'energy': energies, 'num_occurrences': counts}, dimod.BINARY) + response.change_vartype(bqm.vartype, {'energy': [offset] * len(energies)}) return response diff --git a/tests/test_dwave_qbsolv.py b/tests/test_dwave_qbsolv.py index e22bf214..b9bbfa67 100644 --- a/tests/test_dwave_qbsolv.py +++ b/tests/test_dwave_qbsolv.py @@ -68,4 +68,4 @@ def test_energy_calculation(self): response = qbs.QBSolv().sample_ising(h, J) for sample, energy in response.data(['sample', 'energy']): - self.assertLessEqual(abs(dimod.ising_energy(sample, h, J) - energy), 10**-5) + self.assertAlmostEqual(dimod.ising_energy(sample, h, J), energy)