Example #1
0
    def testAddEdges(self):
        IV = vigraph.INVALID
        elist = [[1, 3], [1, 5], [5, 7], [3, 4]]

        edges = np.array(elist, dtype=np.uint32)
        nodeIds = np.unique(edges.reshape(-1))

        g = vigraph.listGraph()

        edgeIds = g.addEdges(edges)

        assert g.edgeNum == len(elist)
        assert g.edgeNum == len(edgeIds)
        assert g.nodeNum == len(nodeIds)
        assert g.maxNodeId == nodeIds.max()

        for ui, vi in elist:
            assert g.findEdge(ui, vi) != IV
            assert g.findEdge(g.nodeFromId(ui), g.nodeFromId(vi)) != IV

        for nId in nodeIds:
            nId = int(nId)
            assert g.nodeFromId(nId) != IV

        for eId in edgeIds:
            eId = int(eId)
            assert g.edgeFromId(eId) != IV

        findEdges = g.findEdges(edges)

        assert np.array_equal(findEdges, edgeIds)
Example #2
0
def testGridGraphWatersheds():

    data = numpy.random.random([10, 10, 10]).astype(numpy.float32)
    edata = numpy.random.random([10 * 2 - 1, 10 * 2 - 1,
                                 10 * 2 - 1]).astype(numpy.float32)
    g0 = graphs.gridGraph(data.shape)

    ew = graphs.edgeFeaturesFromInterpolatedImage(graph=g0, image=edata)

    # generate seeds
    seeds = graphs.nodeWeightedWatershedsSeeds(graph=g0, nodeWeights=data)
    # node weighted watershed seeds
    labelsNodeWeightedA = graphs.nodeWeightedWatersheds(graph=g0,
                                                        nodeWeights=data,
                                                        seeds=seeds)
    # node weighted watershed seeds
    labelsNodeWeightedB = graphs.nodeWeightedWatersheds(graph=g0,
                                                        nodeWeights=data)
    # edge weighted watershed seeds
    seeds = graphs.nodeWeightedWatershedsSeeds(graph=g0, nodeWeights=data)
    labelsEdgeWeighted = graphs.edgeWeightedWatersheds(graph=g0,
                                                       edgeWeights=ew,
                                                       seeds=seeds)

    assert numpy.array_equal(labelsNodeWeightedA, labelsNodeWeightedB)

    data = numpy.random.random([10, 10]).astype(numpy.float32)
    edata = numpy.random.random([10 * 2 - 1, 10 * 2 - 1]).astype(numpy.float32)
    g0 = graphs.gridGraph(data.shape)

    ew = graphs.edgeFeaturesFromInterpolatedImage(graph=g0, image=edata)

    # generate seeds
    seeds = graphs.nodeWeightedWatershedsSeeds(graph=g0, nodeWeights=data)
    # node weighted watershed seeds
    labelsNodeWeightedA = graphs.nodeWeightedWatersheds(graph=g0,
                                                        nodeWeights=data,
                                                        seeds=seeds)
    # node weighted watershed seeds
    labelsNodeWeightedB = graphs.nodeWeightedWatersheds(graph=g0,
                                                        nodeWeights=data)
    # edge weighted watershed seeds
    labelsEdgeWeighted = graphs.edgeWeightedWatersheds(graph=g0,
                                                       edgeWeights=ew,
                                                       seeds=seeds)

    assert numpy.array_equal(labelsNodeWeightedA, labelsNodeWeightedB)
Example #3
0
def testGridGraphWatersheds():

    data  = numpy.random.random([10,10,10]).astype(numpy.float32)
    edata = numpy.random.random([10*2-1,10*2-1,10*2-1]).astype(numpy.float32)
    g0 = graphs.gridGraph(data.shape)


    ew = graphs.edgeFeaturesFromInterpolatedImage(graph=g0,image=edata)

    # generate seeds
    seeds = graphs.nodeWeightedWatershedsSeeds(graph=g0,nodeWeights=data)
    # node weighted watershed seeds
    labelsNodeWeightedA  = graphs.nodeWeightedWatersheds(graph=g0,nodeWeights=data,seeds=seeds)
    # node weighted watershed seeds
    labelsNodeWeightedB  = graphs.nodeWeightedWatersheds(graph=g0,nodeWeights=data)
    # edge weighted watershed seeds
    seeds = graphs.nodeWeightedWatershedsSeeds(graph=g0,nodeWeights=data)
    labelsEdgeWeighted  = graphs.edgeWeightedWatersheds(graph=g0,edgeWeights=ew,seeds=seeds)

    assert numpy.array_equal(labelsNodeWeightedA,labelsNodeWeightedB)

    data  = numpy.random.random([10,10]).astype(numpy.float32)
    edata = numpy.random.random([10*2-1,10*2-1]).astype(numpy.float32)
    g0 = graphs.gridGraph(data.shape)


    ew = graphs.edgeFeaturesFromInterpolatedImage(graph=g0,image=edata)

    # generate seeds
    seeds = graphs.nodeWeightedWatershedsSeeds(graph=g0,nodeWeights=data)
    # node weighted watershed seeds
    labelsNodeWeightedA  = graphs.nodeWeightedWatersheds(graph=g0,nodeWeights=data,seeds=seeds)
    # node weighted watershed seeds
    labelsNodeWeightedB  = graphs.nodeWeightedWatersheds(graph=g0,nodeWeights=data)
    # edge weighted watershed seeds
    labelsEdgeWeighted  = graphs.edgeWeightedWatersheds(graph=g0,edgeWeights=ew,seeds=seeds)

    assert numpy.array_equal(labelsNodeWeightedA,labelsNodeWeightedB)
Example #4
0
    def testAddEdges(self):
        IV = vigraph.INVALID
        elist = [
            [1,3],
            [1,5],
            [5,7],
            [3,4]
        ] 

        edges = np.array(elist,dtype=np.uint32)
        nodeIds = np.unique(edges.reshape(-1))


        g = vigraph.listGraph()

        edgeIds = g.addEdges(edges)

        assert g.edgeNum == len(elist)
        assert g.edgeNum == len(edgeIds)
        assert g.nodeNum == len(nodeIds)
        assert g.maxNodeId == nodeIds.max()

        for ui,vi in elist :
            assert g.findEdge(ui,vi)!=IV
            assert g.findEdge(g.nodeFromId(ui),g.nodeFromId(vi))!=IV

        for nId in nodeIds :
            nId = int(nId)
            assert g.nodeFromId(nId)!=IV

        for eId in edgeIds :
            eId = int(eId)
            assert g.edgeFromId(eId)!=IV

        findEdges = g.findEdges(edges)

        assert np.array_equal(findEdges,edgeIds)