Example #1
0
    def testDimStartFloat(self):
        ctx = tiledb.Ctx()

        dom = tiledb.Domain(
            tiledb.Dim(ctx=ctx,
                       name="i",
                       domain=(0.0, 6.0),
                       tile=6,
                       dtype=np.float64),
            ctx=ctx,
        )
        schema = tiledb.ArraySchema(
            ctx=ctx,
            domain=dom,
            sparse=True,
            attrs=[tiledb.Attr(ctx=ctx, name='a', dtype=np.float32)])

        tempdir = tempfile.mkdtemp()
        try:
            # create tiledb array
            tiledb.SparseArray.create(tempdir, schema)

            with self.assertRaises(ValueError):
                fromtiledb(tempdir, ctx=ctx)
        finally:
            shutil.rmtree(tempdir)
Example #2
0
    def testFromTileDB(self):
        ctx = tiledb.Ctx()

        for sparse in (True, False):
            dom = tiledb.Domain(
                tiledb.Dim(ctx=ctx,
                           name="i",
                           domain=(1, 30),
                           tile=7,
                           dtype=np.int32),
                tiledb.Dim(ctx=ctx,
                           name="j",
                           domain=(1, 20),
                           tile=3,
                           dtype=np.int32),
                tiledb.Dim(ctx=ctx,
                           name="k",
                           domain=(1, 10),
                           tile=4,
                           dtype=np.int32),
                ctx=ctx,
            )
            schema = tiledb.ArraySchema(
                ctx=ctx,
                domain=dom,
                sparse=sparse,
                attrs=[tiledb.Attr(ctx=ctx, name='a', dtype=np.float32)])

            tempdir = tempfile.mkdtemp()
            try:
                # create tiledb array
                tiledb.DenseArray.create(tempdir, schema)

                tensor = fromtiledb(tempdir)
                self.assertIsInstance(tensor.op, TensorTileDBDataSource)
                self.assertEqual(tensor.op.issparse(), sparse)
                self.assertEqual(tensor.shape, (30, 20, 10))
                self.assertEqual(tensor.extra_params.raw_chunk_size, (7, 3, 4))
                self.assertIsNone(tensor.op.tiledb_config)
                self.assertEqual(tensor.op.tiledb_uri, tempdir)
                self.assertIsNone(tensor.op.tiledb_key)
                self.assertIsNone(tensor.op.tiledb_timestamp)

                tensor.tiles()

                self.assertEqual(len(tensor.chunks), 105)
                self.assertIsInstance(tensor.chunks[0].op,
                                      TensorTileDBDataSource)
                self.assertEqual(tensor.chunks[0].op.issparse(), sparse)
                self.assertEqual(tensor.chunks[0].shape, (7, 3, 4))
                self.assertIsNone(tensor.chunks[0].op.tiledb_config)
                self.assertEqual(tensor.chunks[0].op.tiledb_uri, tempdir)
                self.assertIsNone(tensor.chunks[0].op.tiledb_key)
                self.assertIsNone(tensor.chunks[0].op.tiledb_timestamp)
                self.assertEqual(tensor.chunks[0].op.tiledb_dim_starts,
                                 (1, 1, 1))

                # test axis_offsets of chunk op
                self.assertEqual(tensor.chunks[0].op.axis_offsets, (0, 0, 0))
                self.assertEqual(tensor.chunks[1].op.axis_offsets, (0, 0, 4))
                self.assertEqual(tensor.cix[0, 2, 2].op.axis_offsets,
                                 (0, 6, 8))
                self.assertEqual(tensor.cix[0, 6, 2].op.axis_offsets,
                                 (0, 18, 8))
                self.assertEqual(tensor.cix[4, 6, 2].op.axis_offsets,
                                 (28, 18, 8))

                tensor2 = fromtiledb(tempdir, ctx=ctx)
                self.assertEqual(tensor2.op.tiledb_config, ctx.config().dict())

                tensor2.tiles()

                self.assertEqual(tensor2.chunks[0].op.tiledb_config,
                                 ctx.config().dict())
            finally:
                shutil.rmtree(tempdir)
Example #3
0
    def testReadTileDBExecution(self):
        ctx = tiledb.Ctx()

        tempdir = tempfile.mkdtemp()
        try:
            # create TileDB dense array
            dom = tiledb.Domain(ctx,
                                tiledb.Dim(ctx, domain=(1, 100), tile=30, dtype=np.int32),
                                tiledb.Dim(ctx, domain=(0, 90), tile=22, dtype=np.int32),
                                tiledb.Dim(ctx, domain=(0, 9), tile=8, dtype=np.int32),
            )
            schema = tiledb.ArraySchema(ctx, domain=dom, sparse=False,
                                        attrs=[tiledb.Attr(ctx, dtype=np.float64)])
            tiledb.DenseArray.create(tempdir, schema)

            expected = np.random.rand(100, 91, 10)
            with tiledb.DenseArray(ctx, tempdir, mode='w') as arr:
                arr.write_direct(expected)

            a = fromtiledb(tempdir, ctx=ctx)
            result = self.executor.execute_tensor(a, concat=True)[0]

            np.testing.assert_allclose(expected, result)
        finally:
            shutil.rmtree(tempdir)

        tempdir = tempfile.mkdtemp()
        try:
            # create 2-d TileDB sparse array
            dom = tiledb.Domain(ctx,
                                tiledb.Dim(ctx, domain=(0, 99), tile=30, dtype=np.int32),
                                tiledb.Dim(ctx, domain=(2, 11), tile=8, dtype=np.int32),
            )
            schema = tiledb.ArraySchema(ctx, domain=dom, sparse=True,
                                        attrs=[tiledb.Attr(ctx, dtype=np.float64)])
            tiledb.SparseArray.create(tempdir, schema)

            expected = sps.rand(100, 10, density=0.01)
            with tiledb.SparseArray(ctx, tempdir, mode='w') as arr:
                I, J = expected.row, expected.col + 2
                arr[I, J] = {arr.attr(0).name: expected.data}

            a = fromtiledb(tempdir, ctx=ctx)
            result = self.executor.execute_tensor(a, concat=True)[0]

            np.testing.assert_allclose(expected.toarray(), result.toarray())
        finally:
            shutil.rmtree(tempdir)

        tempdir = tempfile.mkdtemp()
        try:
            # create 1-d TileDB sparse array
            dom = tiledb.Domain(ctx,
                                tiledb.Dim(ctx, domain=(1, 100), tile=30, dtype=np.int32),
            )
            schema = tiledb.ArraySchema(ctx, domain=dom, sparse=True,
                                        attrs=[tiledb.Attr(ctx, dtype=np.float64)])
            tiledb.SparseArray.create(tempdir, schema)

            expected = sps.rand(1, 100, density=0.05)
            with tiledb.SparseArray(ctx, tempdir, mode='w') as arr:
                I= expected.col + 1
                arr[I] = expected.data

            a = fromtiledb(tempdir, ctx=ctx)
            result = self.executor.execute_tensor(a, concat=True)[0]

            np.testing.assert_allclose(expected.toarray()[0], result.toarray())
        finally:
            shutil.rmtree(tempdir)