lifted_mc.py 文件源码

python
阅读 21 收藏 0 点赞 0 评论 0

项目:nature_methods_multicut_pipeline 作者: ilastik 项目源码 文件源码
def compute_and_save_long_range_nh(uvIds, min_range, max_sample_size=0):
    import random
    import itertools

    originalGraph = agraph.Graph(uvIds.max()+1)
    originalGraph.insertEdges(uvIds)

    uv_long_range = numpy.array(list(itertools.combinations(numpy.arange(originalGraph.numberOfVertices), 2)), dtype=numpy.uint64)

    lm_short = agraph.liftedMcModel(originalGraph)
    agraph.addLongRangeNH(lm_short, min_range)
    uvs_short = lm_short.liftedGraph().uvIds()

    # Remove uvs_short from uv_long_range
    # -----------------------------------

    # Concatenate both lists
    concatenated = numpy.concatenate((uvs_short, uv_long_range), axis=0)

    # Find unique rows according to
    # http://stackoverflow.com/questions/16970982/find-unique-rows-in-numpy-array
    b = numpy.ascontiguousarray(concatenated).view(numpy.dtype((numpy.void, concatenated.dtype.itemsize * concatenated.shape[1])))
    uniques, idx, counts = numpy.unique(b, return_index=True, return_counts=True)

    # Extract those that have count == 1
    # TODO this is not tested
    long_range_idx = idx[counts == 1]
    uv_long_range = concatenated[long_range_idx]

    # Extract random sample
    if max_sample_size:
        sample_size = min(max_sample_size, uv_long_range.shape[0])
        uv_long_range = numpy.array(random.sample(uv_long_range, sample_size))

    return uv_long_range
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号