def test(shape, blockshape): g = Graph() opLabel = OpSparseLabelArray(graph=g) opLabelBlocked = OpBlockedSparseLabelArray(graph=g) opLabel.inputs["shape"].setValue(shape[:-1] + (1,)) opLabelBlocked.inputs["shape"].setValue(shape[:-1] + (1,)) opLabelBlocked.inputs["blockShape"].setValue(blockshape) opLabel.inputs["eraser"].setValue(100) opLabelBlocked.inputs["eraser"].setValue(100) niter = 100 for i in range(niter): value = numpy.random.randint(1, 10) key = randomKey(shape[:-1]) #key = (slice(0, 1, None), slice(4, 39, None), 0) #key = (slice(25, 49, None), slice(19, 50, None), slice(37, 50, None), 0) start, stop = sliceToRoi(key, shape) diff = stop - start valueshape = diff[:-1] valuearray = numpy.zeros(tuple(valueshape), dtype = numpy.uint8) valuearray[:] = value print i, key, valuearray.shape #opLabel.setInSlot(opLabel.inputs["Input"], key, valuearray) opLabel.Input[key] = valuearray #opLabelBlocked.setInSlot(opLabelBlocked.inputs["Input"], key, valuearray) opLabelBlocked.Input[key] = valuearray out = opLabel.outputs["Output"][:].allocate().wait() #print "first done" outblocked = opLabelBlocked.outputs["Output"][:].allocate().wait() #print "second done" assert_array_equal(out, outblocked) #print out #print outblocked nz1 = opLabel.outputs["nonzeroValues"][0].allocate().wait() nz2 = opLabelBlocked.outputs["nonzeroValues"][0].allocate().wait() for nz in nz1[0]: assert nz in nz2[0], "%r value not in blocked set"%nz for nz in nz2[0]: assert nz in nz1[0], "%r value not in non-blocked array"%nz print "done!"
def setup(self): graph = Graph() op = OpSparseLabelArray(graph=graph) arrayshape = numpy.array([1, 10, 10, 10, 1]) op.inputs["shape"].setValue(tuple(arrayshape)) op.eraser.setValue(100) slicing = sl[0:1, 1:5, 2:6, 3:7, 0:1] inDataShape = slicing2shape(slicing) inputData = (3 * numpy.random.random(inDataShape)).astype(numpy.uint8) op.Input[slicing] = inputData data = numpy.zeros(arrayshape, dtype=numpy.uint8) data[slicing] = inputData self.op = op self.slicing = slicing self.inData = inputData self.data = data
def setup(self): graph = Graph() op = OpSparseLabelArray(graph=graph) arrayshape = numpy.array([1,10,10,10,1]) op.inputs["shape"].setValue( tuple(arrayshape) ) op.eraser.setValue(100) slicing = sl[0:1, 1:5, 2:6, 3:7, 0:1] inDataShape = slicing2shape(slicing) inputData = ( 3*numpy.random.random(inDataShape) ).astype(numpy.uint8) op.Input[slicing] = inputData data = numpy.zeros(arrayshape, dtype=numpy.uint8) data[slicing] = inputData self.op = op self.slicing = slicing self.inData = inputData self.data = data
def veryRandomTest(shape, blockshape): g = Graph() opLabel = OpSparseLabelArray(graph=g) opLabelBlocked = OpBlockedSparseLabelArray(graph=g) opLabel.inputs["shape"].setValue(shape[:-1] + (1,)) opLabelBlocked.inputs["shape"].setValue(shape[:-1] + (1,)) opLabelBlocked.inputs["blockShape"].setValue(blockshape) opLabel.inputs["eraser"].setValue(100) opLabelBlocked.inputs["eraser"].setValue(100) niter = 100 for i in range(niter): value = numpy.random.randint(1, 10) key = randomKey(shape) #key = (slice(1, 41, None), slice(27, 50, None), slice(12, 50, None), 0) #key = (slice(7, 20, None), slice(7, 50, None), slice(35, 50, None), 0) start, stop = sliceToRoi(key, shape) diff = stop - start valueshape = diff[:-1] valuearray = numpy.zeros(tuple(valueshape), dtype = numpy.uint8) valuearray[:] = value #opLabel.setInSlot(opLabel.inputs["Input"], key, valuearray) opLabel.Input[key] = valuearray #opLabelBlocked.setInSlot(opLabelBlocked.inputs["Input"], key, valuearray) opLabelBlocked.Input[key] = valuearray key2 = randomKey(shape) #key2 = (slice(37, 49, None), slice(38, 50, None), slice(28, 50, None), 0) #key2 = (slice(7, 21, None), slice(21, 50, None), slice(10, 50, None)) print i, key, key2 out = opLabel.outputs["Output"][key2].allocate().wait() #print "first done" outblocked = opLabelBlocked.outputs["Output"][key2].allocate().wait() #print "second done" assert_array_equal(out, outblocked)