def testZeros(self): tensor = zeros((2, 3, 4)) self.assertEqual(len(list(tensor)), 2) tensor2 = zeros((2, 3, 4), chunk_size=1) # tensor's op key must be equal to tensor2 self.assertEqual(tensor.op.key, tensor2.op.key) self.assertNotEqual(tensor.key, tensor2.key) tensor3 = zeros((2, 3, 3)) self.assertNotEqual(tensor.op.key, tensor3.op.key) self.assertNotEqual(tensor.key, tensor3.key) # test create chunk op of zeros manually chunk_op1 = TensorZeros(dtype=tensor.dtype) chunk1 = chunk_op1.new_chunk(None, shape=(3, 3), index=(0, 0)) chunk_op2 = TensorZeros(dtype=tensor.dtype) chunk2 = chunk_op2.new_chunk(None, shape=(3, 4), index=(0, 1)) self.assertNotEqual(chunk1.op.key, chunk2.op.key) self.assertNotEqual(chunk1.key, chunk2.key) tensor = zeros((100, 100), chunk_size=50) tensor.tiles() self.assertEqual(len({c.op.key for c in tensor.chunks}), 1) self.assertEqual(len({c.key for c in tensor.chunks}), 1)
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 array_type = tiledb.DenseArray if not sparse else tiledb.SparseArray array_type.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)
def testOnes(self): tensor = ones((10, 10, 8), chunk_size=(3, 3, 5)) tensor = tensor.tiles() self.assertEqual(tensor.shape, (10, 10, 8)) self.assertEqual(len(tensor.chunks), 32) tensor = ones((10, 3), chunk_size=(4, 2)) tensor = tensor.tiles() self.assertEqual(tensor.shape, (10, 3)) chunk = tensor.cix[1, 1] self.assertEqual(tensor.get_chunk_slices(chunk.index), (slice(4, 8), slice(2, 3))) tensor = ones((10, 5), chunk_size=(2, 3), gpu=True) tensor = tensor.tiles() self.assertTrue(tensor.op.gpu) self.assertTrue(tensor.chunks[0].op.gpu) tensor1 = ones((10, 10, 8), chunk_size=(3, 3, 5)) tensor1 = tensor1.tiles() tensor2 = ones((10, 10, 8), chunk_size=(3, 3, 5)) tensor2 = tensor2.tiles() self.assertEqual(tensor1.chunks[0].op.key, tensor2.chunks[0].op.key) self.assertEqual(tensor1.chunks[0].key, tensor2.chunks[0].key) self.assertNotEqual(tensor1.chunks[0].op.key, tensor1.chunks[1].op.key) self.assertNotEqual(tensor1.chunks[0].key, tensor1.chunks[1].key) tensor = ones((2, 3, 4)) self.assertEqual(len(list(tensor)), 2) tensor2 = ones((2, 3, 4), chunk_size=1) # tensor's op key must be equal to tensor2 self.assertEqual(tensor.op.key, tensor2.op.key) self.assertNotEqual(tensor.key, tensor2.key) tensor3 = ones((2, 3, 3)) self.assertNotEqual(tensor.op.key, tensor3.op.key) self.assertNotEqual(tensor.key, tensor3.key) # test create chunk op of ones manually chunk_op1 = TensorOnes(dtype=tensor.dtype) chunk1 = chunk_op1.new_chunk(None, shape=(3, 3), index=(0, 0)) chunk_op2 = TensorOnes(dtype=tensor.dtype) chunk2 = chunk_op2.new_chunk(None, shape=(3, 4), index=(0, 1)) self.assertNotEqual(chunk1.op.key, chunk2.op.key) self.assertNotEqual(chunk1.key, chunk2.key) tensor = ones((100, 100), chunk_size=50) tensor = tensor.tiles() self.assertEqual(len({c.op.key for c in tensor.chunks}), 1) self.assertEqual(len({c.key for c in tensor.chunks}), 1)
def testOnes(self): tensor = ones((10, 10, 8), chunks=(3, 3, 5)) tensor.tiles() self.assertEqual(tensor.shape, (10, 10, 8)) self.assertEqual(len(tensor.chunks), 32) tensor = ones((10, 3), chunks=(4, 2)) tensor.tiles() self.assertEqual(tensor.shape, (10, 3)) chunk = tensor.cix[1, 1] self.assertEqual(tensor.get_chunk_slices(chunk.index), (slice(4, 8), slice(2, 3))) tensor = ones((10, 5), chunks=(2, 3), gpu=True) tensor.tiles() self.assertTrue(tensor.op.gpu) self.assertTrue(tensor.chunks[0].op.gpu) tensor1 = ones((10, 10, 8), chunks=(3, 3, 5)) tensor1.tiles() tensor2 = ones((10, 10, 8), chunks=(3, 3, 5)) tensor2.tiles() self.assertEqual(tensor1.chunks[0].op.key, tensor2.chunks[0].op.key) self.assertEqual(tensor1.chunks[0].key, tensor2.chunks[0].key) self.assertNotEqual(tensor1.chunks[0].op.key, tensor1.chunks[1].op.key) self.assertNotEqual(tensor1.chunks[0].key, tensor1.chunks[1].key) tensor = ones((2, 3, 4)) self.assertEqual(len(list(tensor)), 2)