def test_readinto_partial_sliding17(self, name, BQM):

        bqm = BQM(np.tril(np.arange(25).reshape((5, 5))), 'BINARY')
        bqm.offset = -6

        fv = FileView(bqm)

        buff = fv.readall()

        for pos in range(fv.quadratic_end):
            self.assertEqual(pos, fv.seek(pos))
            subbuff = bytearray(17)
            num_read = fv.readinto(subbuff)
            self.assertGreater(num_read, 0)
            self.assertEqual(subbuff[:num_read], buff[pos:pos + num_read])
    def test_readinto_partial_front_to_back(self, name, BQM):

        bqm = BQM(np.triu(np.arange(9).reshape((3, 3))), 'BINARY')
        bqm.offset = 14

        fv = FileView(bqm)

        buff = fv.readall()

        for nb in range(fv.quadratic_end):
            self.assertEqual(fv.seek(0), 0)
            subbuff = bytearray(nb)
            num_read = fv.readinto(subbuff)
            self.assertEqual(num_read, nb)
            self.assertEqual(subbuff[:num_read], buff[:num_read])
    def test_readinto_partial_back_to_front(self, name, BQM):

        bqm = BQM(np.triu(np.arange(25).reshape((5, 5))), 'BINARY')
        bqm.offset = 14

        fv = FileView(bqm)

        buff = fv.readall()

        for pos in range(1, fv.quadratic_end):
            fv.seek(-pos, io.SEEK_END)

            subbuff = bytearray(pos)  # length pos

            self.assertEqual(fv.readinto(subbuff), len(subbuff))
            self.assertEqual(buff[-pos:], subbuff)
    def test_readinto_partial_sliding17(self, BQM):
        if issubclass(BQM, dimod.AdjDictBQM):
            # not (yet) implemented for non cybqms
            return

        bqm = BQM(np.tril(np.arange(25).reshape((5, 5))), 'BINARY')
        bqm.offset = -6

        fv = FileView(bqm)

        buff = fv.readall()

        for pos in range(fv.quadratic_end):
            self.assertEqual(pos, fv.seek(pos))
            subbuff = bytearray(17)
            num_read = fv.readinto(subbuff)
            self.assertGreater(num_read, 0)
            self.assertEqual(subbuff[:num_read], buff[pos:pos+num_read])
    def test_readinto_partial_front_to_back(self, BQM):
        if issubclass(BQM, dimod.AdjDictBQM):
            # not (yet) implemented for non cybqms
            return

        bqm = BQM(np.triu(np.arange(9).reshape((3, 3))), 'BINARY')
        bqm.offset = 14

        fv = FileView(bqm)

        buff = fv.readall()

        for nb in range(fv.quadratic_end):
            self.assertEqual(fv.seek(0), 0)
            subbuff = bytearray(nb)
            num_read = fv.readinto(subbuff)
            self.assertEqual(num_read, nb)
            self.assertEqual(subbuff[:num_read], buff[:num_read])
    def test_readall_dense(self, BQM):
        # construct the bytes by hand
        if issubclass(BQM, dimod.AdjDictBQM):
            # not (yet) implemented for non cybqms
            return

        arr = np.triu(np.arange(4).reshape((2, 2)))

        bqm = BQM(arr, 'BINARY')
        bqm.offset = 17

        fv = FileView(bqm)

        b = fv.readall()

        # offset
        offset_bytes = bqm.dtype.type(17).tobytes()

        self.assertEqual(b[fv.offset_start:fv.offset_end], offset_bytes)

        # linear
        ltype = np.dtype([('n', bqm.ntype), ('b', bqm.dtype)], align=False)
        ldata = np.empty(2, dtype=ltype)
        ldata['n'][0] = 0
        ldata['n'][1] = 1
        ldata['b'][0] = 0
        ldata['b'][1] = 3
        linear_bytes = ldata.tobytes()

        self.assertEqual(b[fv.linear_start:fv.linear_end], linear_bytes)

        # quadratic
        qtype = np.dtype([('v', bqm.itype), ('b', bqm.dtype)], align=False)
        qdata = np.empty(2, dtype=qtype)
        qdata['v'][0] = 1
        qdata['v'][1] = 0
        qdata['b'][0] = 1
        qdata['b'][1] = 1
        quadratic_bytes = qdata.tobytes()

        self.assertEqual(b[fv.quadratic_start:fv.quadratic_end], quadratic_bytes)

        # and finally check everything
        self.assertEqual(fv.header + offset_bytes + linear_bytes + quadratic_bytes, b)
    def test_readinto_partial_back_to_front(self, BQM):
        if issubclass(BQM, dimod.AdjDictBQM):
            # not (yet) implemented for non cybqms
            return

        bqm = BQM(np.triu(np.arange(25).reshape((5, 5))), 'BINARY')
        bqm.offset = 14

        fv = FileView(bqm)

        buff = fv.readall()

        for pos in range(1, fv.quadratic_end):
            fv.seek(-pos, io.SEEK_END)

            subbuff = bytearray(pos)  # length pos

            self.assertEqual(fv.readinto(subbuff), len(subbuff))
            self.assertEqual(buff[-pos:], subbuff)
Exemple #8
0
    def test_dense_v1(self, name, BQM):
        arr = np.triu(np.arange(4).reshape((2, 2)))

        bqm = BQM(arr, 'BINARY')
        bqm.offset = 17

        fv = FileView(bqm, version=1)

        b = fv.readall()

        # offset
        offset_bytes = bqm.dtype.type(17).tobytes()

        self.assertEqual(b[fv.offset_start:fv.offset_end], offset_bytes)

        # linear
        ltype = np.dtype([('n', bqm.ntype), ('b', bqm.dtype)], align=False)
        ldata = np.empty(2, dtype=ltype)
        ldata['n'][0] = 0
        ldata['n'][1] = 1
        ldata['b'][0] = 0
        ldata['b'][1] = 3
        linear_bytes = ldata.tobytes()

        self.assertEqual(b[fv.linear_start:fv.linear_end], linear_bytes)

        # quadratic
        qtype = np.dtype([('v', bqm.itype), ('b', bqm.dtype)], align=False)
        qdata = np.empty(2, dtype=qtype)
        qdata['v'][0] = 1
        qdata['v'][1] = 0
        qdata['b'][0] = 1
        qdata['b'][1] = 1
        quadratic_bytes = qdata.tobytes()

        self.assertEqual(b[fv.quadratic_start:fv.quadratic_end],
                         quadratic_bytes)

        # and finally check everything
        self.assertEqual(
            fv.header + offset_bytes + linear_bytes + quadratic_bytes, b)