コード例 #1
0
def concentrated_labels(ilp_path, labels):
    labels = float(labels)
    #create copy project
    ilp_copy_path = create_copy(ilp_path)

    #work on copy file
    manipulate_me = ILP(ilp_copy_path, "/home/stamylew/delme")
    print
    print "amount of label blocks:", manipulate_me._label_block_count(0)
    blocks, block_slices = manipulate_me.get_labels(0) # 0 selects the first data set imported in the ilp
    random_block_no = np.random.randint(0, len(blocks))
    print
    print "random_block_no", random_block_no
    random_block = blocks[random_block_no]
    print
    print "random block shape", random_block.shape
    random_slice_no = np.random.randint(0,random_block.shape[2])
    smaller_slice_no = random_slice_no
    bigger_slice_no = random_slice_no+1
    print
    print "random_slice_no", random_slice_no
    random_slice = random_block[:,:,random_slice_no]
    label_number = float(get_number_of_labels(random_slice))

    while label_number < labels:

        if bigger_slice_no < random_block.shape[0]-1:
            bigger_slice_no = bigger_slice_no +1
        else:
            smaller_slice_no = smaller_slice_no-2

        random_slice = random_block[:,:,smaller_slice_no:bigger_slice_no]
        print "random slice", random_slice.shape
        label_number = get_number_of_labels(random_slice)
        print "label number", label_number
        if label_number > labels:
            break
    concentrated_data = limit_label(random_slice, labels, label_number)
    new_label_number = get_number_of_labels(concentrated_data)
    print "new_label number", new_label_number

    #create new blocks
    new_blocks = []
    for block in blocks:
        new_block = np.zeros(block.shape, dtype=np.uint)
        new_blocks.append(new_block)

    # replace random block with labeled data
    new_labeled_block = new_blocks[random_block_no]
    new_labeled_block[:,:,smaller_slice_no:bigger_slice_no] = concentrated_data
    assert get_number_of_labels(new_labeled_block) == labels

    # replace old blocks with new blocks
    manipulate_me.replace_labels(0, new_blocks, block_slices, delete_old_blocks=True)
    print
    print "new_label_number", get_number_of_labels(new_block)
    return manipulate_me.project_filename
コード例 #2
0
def reduce_labels_in_ilp(ilpfile, labels):
    """ Reduces amount of labeled pixels to given value for labels
    :param: ilpfile: path to ilastik project
    :param: labels : amount labeled pixels
    """

    #create copy project
    ilp_copy = create_copy(ilpfile)

    #work on copy file
    manipulate_me = ILP(ilp_copy, "/home/stamylew/delme")
    print
    print "amount of label blocks:", manipulate_me._label_block_count(0)
    blocks, block_slices = manipulate_me.get_labels(0) # 0 selects the first data set imported in the ilp
    #save_h5(blocks, "/home/stamylew/delme/blocks.h5", "data", None)

    #gather amount of labeled pixels
    nolb = []
    all_blocks = []
    for block in blocks:
        all_blocks.append(block)
        nolib = get_number_of_labels(block)
        nolb.append(nolib)
    noal = float(np.sum(nolb))

    print
    print "amount of all labels:", noal
    labels = float(labels)

    #limit amount of labeled pixels
    assert labels < noal
    percentage = labels/noal
    print
    print "percentage of labels:", percentage
    new_blocks = []
    for block in blocks:
        new_block = filter_all_labels(block, percentage)
        new_blocks.append(new_block)
    #save_h5(new_blocks, "/home/stamylew/delme/new_blocks.h5", "data", None)

    #check new blocks
    nolnb = []
    for block in new_blocks:
        nolinb = get_number_of_labels(block)
        nolnb.append(nolinb)
    # print "unique elements of new blocks:", np.unique(new_blocks)

    nonl = float(np.sum(nolnb))
    print
    print "reduced amount of labels:", nonl
    # assert labels == nonl

    manipulate_me.replace_labels(0, new_blocks, block_slices, delete_old_blocks=True)

    return manipulate_me.project_filename
コード例 #3
0
def check_ilp_labels(ilp_path):
    ilp = ILP(ilp_path, "/home/stamylew/delme")
    blocks, blockslices = ilp.get_labels(0)
    list = []
    for block in blocks:
        noilb = get_number_of_labels(block)
        list.append(noilb)
    al = list[0]
    for i in range(1, len(list)):
        al += list[i]
    print "reduced amount of labels", al