Пример #1
0
def main(conn, argv):

    parser = argparse.ArgumentParser()
    parser.add_argument("image", help="Image ID")
    args = parser.parse_args(argv)

    image_id = args.image

    data = swc.read(
        "20200628-ftp/RL_35_guassian_4_4_80.tif_x94_y327_z241_app2_(GSBT).swc"
    ).data_block

    # img_name = 'FADU_tumour_Lectin_substack_deconvolved_RL_35iters_guassian_psf_4_4_80.tif'
    image = conn.getObject("Image", image_id)

    # delete existing ROIs
    roi_service = conn.getRoiService()
    result = roi_service.findByImage(image.id, None)
    roi_ids = [roi.id.val for roi in result.rois]
    if roi_ids:
        print("Deleting ROIs...")
        conn.deleteObjects("Roi", roi_ids, wait=True)

    size_y = image.getSizeY()
    paths = parse_swc(data, size_y)
    red_int = int.from_bytes([255, 0, 0, 255], byteorder="big", signed=True)

    for count, path in enumerate(paths):
        points = []
        for zyx in path:
            z, y, x = zyx
            point = PointI()
            point.x = rdouble(x)
            point.y = rdouble(y)
            point.theZ = rint(round(z))
            point.strokeColor = rint(red_int)
            points.append(point)
        print(f"{count}/{len(paths)} Creating ROI with {len(points)} points")
        create_roi(image, points)