Пример #1
0
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
Пример #3
0
    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
Пример #4
0
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)