Ejemplo n.º 1
0
def test_luna3d():
    image_dir = utils.get_dir_path('analysis', pathfinder.METADATA_PATH)
    image_dir = image_dir + '/test_luna/'
    utils.auto_make_dir(image_dir)

    id2zyxd = utils_lung.read_luna_annotations(pathfinder.LUNA_LABELS_PATH)

    luna_data_paths = utils_lung.get_patient_data_paths(pathfinder.LUNA_DATA_PATH)
    luna_data_paths = [p for p in luna_data_paths if '.mhd' in p]

    # luna_data_paths = [
    #     pathfinder.LUNA_DATA_PATH + '/1.3.6.1.4.1.14519.5.2.1.6279.6001.287966244644280690737019247886.mhd']

    luna_data_paths = [
        '/mnt/sda3/data/kaggle-lung/luna_test_patient/1.3.6.1.4.1.14519.5.2.1.6279.6001.943403138251347598519939390311.mhd']
    for k, p in enumerate(luna_data_paths):
        img, origin, pixel_spacing = utils_lung.read_mhd(p)
        id = os.path.basename(p).replace('.mhd', '')
        print(id)

        annotations = id2zyxd[id]

        img_out, mask, annotations_out = config().data_prep_function(img,
                                                                     pixel_spacing=pixel_spacing,
                                                                     luna_annotations=annotations,
                                                                     luna_origin=origin)

        mask[mask == 0.] = 0.1
        print(annotations_out)
        for zyxd in annotations_out:
            plot_slice_3d_2(img_out, mask, 0, id, idx=zyxd)
            plot_slice_3d_2(img_out, mask, 1, id, idx=zyxd)
            plot_slice_3d_2(img_out, mask, 2, id, idx=zyxd)
Ejemplo n.º 2
0
def test_luna_patches_3d():
    image_dir = utils.get_dir_path('analysis', pathfinder.METADATA_PATH)
    image_dir = image_dir + '/test_luna/'
    utils.auto_make_dir(image_dir)

    id2zyxd = utils_lung.read_luna_annotations(pathfinder.LUNA_LABELS_PATH)

    luna_data_paths = utils_lung.get_patient_data_paths(pathfinder.LUNA_DATA_PATH)
    luna_data_paths = [p for p in luna_data_paths if '.mhd' in p]

    # pid = '1.3.6.1.4.1.14519.5.2.1.6279.6001.138080888843357047811238713686'
    # luna_data_paths = [pathfinder.LUNA_DATA_PATH + '/%s.mhd' % pid]
    for k, p in enumerate(luna_data_paths):
        img, origin, pixel_spacing = utils_lung.read_mhd(p)
        # img = data_transforms.hu2normHU(img)
        id = os.path.basename(p).replace('.mhd', '')
        print id

        annotations = id2zyxd[id]
        print annotations
        for zyxd in annotations:
            img_out, mask = config().data_prep_function_train(img,
                                                              pixel_spacing=pixel_spacing,
                                                              p_transform=config().p_transform,
                                                              p_transform_augment=config().p_transform_augment,
                                                              patch_center=zyxd,
                                                              luna_annotations=annotations,
                                                              luna_origin=origin)
            try:
                plot_slice_3d_2(img_out, mask, 0, id)
                plot_slice_3d_2(img_out, mask, 1, id)
                plot_slice_3d_2(img_out, mask, 2, id)
            except:
                pass
        print '------------------------------------------'
Ejemplo n.º 3
0
def test_luna3d():
    image_dir = utils.get_dir_path('analysis', pathfinder.METADATA_PATH)
    image_dir = image_dir + '/test_luna/'
    utils.auto_make_dir(image_dir)

    id2zyxd = utils_lung.read_luna_annotations(pathfinder.LUNA_LABELS_PATH)

    luna_data_paths = utils_lung.get_patient_data_paths(pathfinder.LUNA_DATA_PATH)
    luna_data_paths = [p for p in luna_data_paths if '.mhd' in p]

    # luna_data_paths = [
    #     pathfinder.LUNA_DATA_PATH + '/1.3.6.1.4.1.14519.5.2.1.6279.6001.287966244644280690737019247886.mhd']

    luna_data_paths = [
        '/mnt/sda3/data/kaggle-lung/luna_test_patient/1.3.6.1.4.1.14519.5.2.1.6279.6001.943403138251347598519939390311.mhd']
    for k, p in enumerate(luna_data_paths):
        img, origin, pixel_spacing = utils_lung.read_mhd(p)
        id = os.path.basename(p).replace('.mhd', '')
        print id

        annotations = id2zyxd[id]

        img_out, mask, annotations_out = config().data_prep_function(img,
                                                                     pixel_spacing=pixel_spacing,
                                                                     luna_annotations=annotations,
                                                                     luna_origin=origin)

        mask[mask == 0.] = 0.1
        print annotations_out
        for zyxd in annotations_out:
            plot_slice_3d_2(img_out, mask, 0, id, idx=zyxd)
            plot_slice_3d_2(img_out, mask, 1, id, idx=zyxd)
            plot_slice_3d_2(img_out, mask, 2, id, idx=zyxd)
Ejemplo n.º 4
0
def test_luna3d_2():
    image_dir = utils.get_dir_path('analysis', pathfinder.METADATA_PATH)
    image_dir = image_dir + '/test_luna/'
    utils.auto_make_dir(image_dir)

    id2zyxd = utils_lung.read_luna_annotations(pathfinder.LUNA_LABELS_PATH)

    luna_data_paths = [
        '/mnt/sda3/data/kaggle-lung/luna_test_patient/1.3.6.1.4.1.14519.5.2.1.6279.6001.943403138251347598519939390311.mhd']

    for k, p in enumerate(luna_data_paths):
        id = os.path.basename(p).replace('.mhd', '')
        print id
        img, origin, pixel_spacing = utils_lung.read_mhd(p)
        lung_mask = lung_segmentation.segment_HU_scan(img)
        annotations = id2zyxd[id]
        x, annotations_tf, tf_matrix, lung_mask_out = data_transforms.transform_scan3d(data=img,
                                                                                       pixel_spacing=pixel_spacing,
                                                                                       p_transform=p_transform,
                                                                                       luna_annotations=annotations,
                                                                                       p_transform_augment=None,
                                                                                       luna_origin=origin,
                                                                                       lung_mask=lung_mask,
                                                                                       world_coord_system=True)

        y = data_transforms.make_3d_mask_from_annotations(img_shape=x.shape, annotations=annotations_tf, shape='sphere')

        for zyxd in annotations_tf:
            plot_slice_3d_3(x, lung_mask_out, y, 0, id, idx=zyxd)
            plot_slice_3d_3(x, lung_mask_out, y, 1, id, idx=zyxd)
            plot_slice_3d_3(x, lung_mask_out, y, 2, id, idx=zyxd)
Ejemplo n.º 5
0
def intermediate_valid_predictions(xs, gts, preds, pid, it_valid, n_save=10):
    path = pathfinder.METADATA_PATH + '/checkpoints/' + pid
    utils.auto_make_dir(path)
    pred_id = 0
    for batch_x, batch_gt, batch_pred in zip(xs, gts, preds):
        for x, gt, pred in zip(batch_x, batch_gt, batch_pred):
            if pred_id >= n_save:
                break
            # save pred
            pred = 255 * pred
            pred = pred.astype(int)
            app.save_image(pred[0],
                           path + '/' + str(it_valid) + '_' + str(pred_id) +
                           '_pred.jpg',
                           mode='L')

            # save ground truth
            gt = 255 * gt
            gt = gt.astype(int)
            app.save_image(gt,
                           path + '/' + str(it_valid) + '_' + str(pred_id) +
                           '_real.jpg',
                           mode='L')

            # save input
            data_reverse_tf(x)
            app.save_image(x,
                           path + '/' + str(it_valid) + '_' + str(pred_id) +
                           '_input.jpg',
                           mode='RGB')

            pred_id += 1
def test1():
    image_dir = utils.get_dir_path('analysis', pathfinder.METADATA_PATH)
    image_dir = image_dir + '/test_1/'
    utils.auto_make_dir(image_dir)

    sys.stdout = logger.Logger(image_dir + '/%s.log' % 'test1_log')
    sys.stderr = sys.stdout

    patient_data_paths = utils_lung.get_patient_data_paths(
        pathfinder.DATA_PATH)
    print len(patient_data_paths)

    for k, p in enumerate(patient_data_paths):
        pid = utils_lung.extract_pid_dir(p)
        try:
            sid2data, sid2metadata = utils_lung.get_patient_data(p)
            sids_sorted = utils_lung.sort_sids_by_position(sid2metadata)
            sids_sorted_jonas = utils_lung.sort_slices_jonas(sid2metadata)
            sid2position = utils_lung.slice_location_finder(sid2metadata)

            try:
                slice_thickness_pos = np.abs(
                    sid2metadata[sids_sorted[0]]['ImagePositionPatient'][2] -
                    sid2metadata[sids_sorted[1]]['ImagePositionPatient'][2])
            except:
                print 'This patient has no ImagePosition!'
                slice_thickness_pos = 0.
            try:
                slice_thickness_loc = np.abs(
                    sid2metadata[sids_sorted[0]]['SliceLocation'] -
                    sid2metadata[sids_sorted[1]]['SliceLocation'])
            except:
                print 'This patient has no SliceLocation!'
                slice_thickness_loc = 0.

            jonas_slicethick = []
            for i in xrange(len(sids_sorted_jonas) - 1):
                s = np.abs(sid2position[sids_sorted_jonas[i + 1]] -
                           sid2position[sids_sorted_jonas[i]])
                jonas_slicethick.append(s)

            full_img = np.stack([
                data_transforms.ct2normHU(sid2data[sid], sid2metadata[sid])
                for sid in sids_sorted
            ])
            del sid2data, sid2metadata
            print np.min(full_img), np.max(full_img)
            # spacing = sid2metadata[sids_sorted[0]]['PixelSpacing']
            # spacing = [slice_thickness, spacing[0], spacing[1]]
            # resampled_image, _ = resample(full_img, spacing)
            plot_2d(full_img, axis=0, pid=pid + 'ax0', img_dir=image_dir)
            plot_2d(full_img, axis=1, pid=pid + 'ax1', img_dir=image_dir)
            plot_2d(full_img, axis=2, pid=pid + 'ax2', img_dir=image_dir)
            print k, pid, full_img.shape, slice_thickness_pos, slice_thickness_loc, set(
                jonas_slicethick)
            del full_img
        except:
            print 'exception!!!', pid
Ejemplo n.º 7
0
def test_luna3d():
    image_dir = utils.get_dir_path('analysis', pathfinder.METADATA_PATH)
    image_dir = image_dir + '/test_luna/'
    utils.auto_make_dir(image_dir)

    id2zyxd = utils_lung.read_luna_annotations(pathfinder.LUNA_LABELS_PATH)

    luna_data_paths = [
        '/mnt/sda3/data/kaggle-lung/luna_test_patient/1.3.6.1.4.1.14519.5.2.1.6279.6001.877026508860018521147620598474.mhd'
    ]

    candidates = utils.load_pkl(
        '/mnt/sda3/data/kaggle-lung/luna_test_patient/1.3.6.1.4.1.14519.5.2.1.6279.6001.877026508860018521147620598474.pkl'
    )

    candidates = candidates[:4]
    print(candidates)
    print('--------------')
    print(id2zyxd[
        '1.3.6.1.4.1.14519.5.2.1.6279.6001.877026508860018521147620598474'])

    for k, p in enumerate(luna_data_paths):
        id = os.path.basename(p).replace('.mhd', '')
        print(id)
        img, origin, pixel_spacing = utils_lung.read_mhd(p)
        lung_mask = lung_segmentation.segment_HU_scan_ira(img)
        print(np.min(lung_mask), np.max(lung_mask))
        x, annotations_tf, tf_matrix, lung_mask_out = data_transforms.transform_scan3d(
            data=img,
            pixel_spacing=pixel_spacing,
            p_transform=p_transform,
            luna_annotations=candidates,
            p_transform_augment=None,
            luna_origin=origin,
            lung_mask=lung_mask,
            world_coord_system=False)

        print(np.min(lung_mask_out), np.max(lung_mask_out))

        plot_slice_3d_2(x, lung_mask_out, 0, id)
        plot_slice_3d_2(x, lung_mask_out, 1, id)
        plot_slice_3d_2(x, lung_mask_out, 2, id)

        # for zyxd in annotations_tf:
        #     plot_slice_3d_2(x, lung_mask_out, 0, id, idx=zyxd)
        #     plot_slice_3d_2(x, lung_mask_out, 1, id, idx=zyxd)
        #     plot_slice_3d_2(x, lung_mask_out, 2, id, idx=zyxd)

        for i in range(136, x.shape[1]):
            plot_slice_3d_2(x,
                            lung_mask_out,
                            1,
                            str(id) + str(i),
                            idx=np.array([200, i, 200]))
Ejemplo n.º 8
0
def test1():
    image_dir = utils.get_dir_path('analysis', pathfinder.METADATA_PATH)
    image_dir = image_dir + '/test_1/'
    utils.auto_make_dir(image_dir)

    sys.stdout = logger.Logger(image_dir + '/%s.log' % 'test1_log')
    sys.stderr = sys.stdout

    patient_data_paths = utils_lung.get_patient_data_paths(pathfinder.DATA_PATH)
    print len(patient_data_paths)

    for k, p in enumerate(patient_data_paths):
        pid = utils_lung.extract_pid_dir(p)
        try:
            sid2data, sid2metadata = utils_lung.get_patient_data(p)
            sids_sorted = utils_lung.sort_sids_by_position(sid2metadata)
            sids_sorted_jonas = utils_lung.sort_slices_jonas(sid2metadata)
            sid2position = utils_lung.slice_location_finder(sid2metadata)

            try:
                slice_thickness_pos = np.abs(sid2metadata[sids_sorted[0]]['ImagePositionPatient'][2] -
                                             sid2metadata[sids_sorted[1]]['ImagePositionPatient'][2])
            except:
                print 'This patient has no ImagePosition!'
                slice_thickness_pos = 0.
            try:
                slice_thickness_loc = np.abs(
                    sid2metadata[sids_sorted[0]]['SliceLocation'] - sid2metadata[sids_sorted[1]]['SliceLocation'])
            except:
                print 'This patient has no SliceLocation!'
                slice_thickness_loc = 0.

            jonas_slicethick = []
            for i in xrange(len(sids_sorted_jonas) - 1):
                s = np.abs(sid2position[sids_sorted_jonas[i + 1]] - sid2position[sids_sorted_jonas[i]])
                jonas_slicethick.append(s)

            full_img = np.stack([data_transforms.ct2normHU(sid2data[sid], sid2metadata[sid]) for sid in sids_sorted])
            del sid2data, sid2metadata
            print np.min(full_img), np.max(full_img)
            # spacing = sid2metadata[sids_sorted[0]]['PixelSpacing']
            # spacing = [slice_thickness, spacing[0], spacing[1]]
            # resampled_image, _ = resample(full_img, spacing)
            plot_2d(full_img, axis=0, pid=pid + 'ax0', img_dir=image_dir)
            plot_2d(full_img, axis=1, pid=pid + 'ax1', img_dir=image_dir)
            plot_2d(full_img, axis=2, pid=pid + 'ax2', img_dir=image_dir)
            print k, pid, full_img.shape, slice_thickness_pos, slice_thickness_loc, set(jonas_slicethick)
            del full_img
        except:
            print 'exception!!!', pid
Ejemplo n.º 9
0
def test_luna3d():
    image_dir = utils.get_dir_path('analysis', pathfinder.METADATA_PATH)
    image_dir = image_dir + '/test_luna/'
    utils.auto_make_dir(image_dir)

    id2zyxd = utils_lung.read_luna_annotations(pathfinder.LUNA_LABELS_PATH)

    luna_data_paths = [
        '/mnt/sda3/data/kaggle-lung/luna_test_patient/1.3.6.1.4.1.14519.5.2.1.6279.6001.877026508860018521147620598474.mhd']

    candidates = utils.load_pkl(
        '/mnt/sda3/data/kaggle-lung/luna_test_patient/1.3.6.1.4.1.14519.5.2.1.6279.6001.877026508860018521147620598474.pkl')

    candidates = candidates[:4]
    print candidates
    print '--------------'
    print id2zyxd['1.3.6.1.4.1.14519.5.2.1.6279.6001.877026508860018521147620598474']

    for k, p in enumerate(luna_data_paths):
        id = os.path.basename(p).replace('.mhd', '')
        print id
        img, origin, pixel_spacing = utils_lung.read_mhd(p)
        lung_mask = lung_segmentation.segment_HU_scan_ira(img)
        print np.min(lung_mask), np.max(lung_mask)
        x, annotations_tf, tf_matrix, lung_mask_out = data_transforms.transform_scan3d(data=img,
                                                                                       pixel_spacing=pixel_spacing,
                                                                                       p_transform=p_transform,
                                                                                       luna_annotations=candidates,
                                                                                       p_transform_augment=None,
                                                                                       luna_origin=origin,
                                                                                       lung_mask=lung_mask,
                                                                                       world_coord_system=False)

        print np.min(lung_mask_out), np.max(lung_mask_out)

        plot_slice_3d_2(x, lung_mask_out, 0, id)
        plot_slice_3d_2(x, lung_mask_out, 1, id)
        plot_slice_3d_2(x, lung_mask_out, 2, id)

        # for zyxd in annotations_tf:
        #     plot_slice_3d_2(x, lung_mask_out, 0, id, idx=zyxd)
        #     plot_slice_3d_2(x, lung_mask_out, 1, id, idx=zyxd)
        #     plot_slice_3d_2(x, lung_mask_out, 2, id, idx=zyxd)

        for i in xrange(136, x.shape[1]):
            plot_slice_3d_2(x, lung_mask_out, 1, str(id) + str(i), idx=np.array([200, i, 200]))
Ejemplo n.º 10
0
def test_dsb():
    image_dir = utils.get_dir_path('analysis', pathfinder.METADATA_PATH)
    image_dir = image_dir + '/test_1/'
    utils.auto_make_dir(image_dir)

    patient_data_paths = utils_lung.get_patient_data_paths(pathfinder.DATA_PATH)
    print len(patient_data_paths)
    patient_data_paths = [pathfinder.DATA_PATH + '/01de8323fa065a8963533c4a86f2f6c1']

    for k, p in enumerate(patient_data_paths):
        pid = utils_lung.extract_pid_dir(p)
        # sid2data, sid2metadata = utils_lung.get_patient_data(p)
        # sids_sorted = utils_lung.sort_sids_by_position(sid2metadata)
        # sids_sorted_jonas = utils_lung.sort_slices_jonas(sid2metadata)
        # sid2position = utils_lung.slice_location_finder(sid2metadata)
        #
        # jonas_slicethick = []
        # for i in xrange(len(sids_sorted_jonas) - 1):
        #     s = np.abs(sid2position[sids_sorted_jonas[i + 1]] - sid2position[sids_sorted_jonas[i]])
        #     jonas_slicethick.append(s)
        #
        # img = np.stack([data_transforms.ct2HU(sid2data[sid], sid2metadata[sid]) for sid in sids_sorted])
        # xx = (jonas_slicethick[0],
        #       sid2metadata[sids_sorted[0]]['PixelSpacing'][0],
        #       sid2metadata[sids_sorted[0]]['PixelSpacing'][1])
        # pixel_spacing = np.asarray(xx)

        img, pixel_spacing = utils_lung.read_dicom_scan(p)
        mask = lung_segmentation.segment_HU_scan_ira(img)
        print pid
        print pixel_spacing
        print '===================================='

        img_out, transform_matrix, mask_out = data_transforms.transform_scan3d(img,
                                                                               pixel_spacing=pixel_spacing,
                                                                               p_transform=config().p_transform,
                                                                               p_transform_augment=None,
                                                                               lung_mask=mask)

        for i in xrange(100, img_out.shape[0], 5):
            plot_slice_3d_2(img_out, mask_out, 0, str(pid) + str(i), idx=np.array([i, 200, 200]))

        plot_slice_3d_2(img_out, mask_out, 0, pid, idx=np.array(img_out.shape) / 2)
        plot_slice_3d_2(mask_out, img_out, 0, pid, idx=np.array(img_out.shape) / 4)
        plot_slice_3d_2(mask_out, img_out, 0, pid, idx=np.array(img_out.shape) / 8)
Ejemplo n.º 11
0
def test_dsb():
    image_dir = utils.get_dir_path('analysis', pathfinder.METADATA_PATH)
    image_dir = image_dir + '/test_1/'
    utils.auto_make_dir(image_dir)

    patient_data_paths = utils_lung.get_patient_data_paths(pathfinder.DATA_PATH)
    print(len(patient_data_paths))
    patient_data_paths = [pathfinder.DATA_PATH + '/01de8323fa065a8963533c4a86f2f6c1']

    for k, p in enumerate(patient_data_paths):
        pid = utils_lung.extract_pid_dir(p)
        # sid2data, sid2metadata = utils_lung.get_patient_data(p)
        # sids_sorted = utils_lung.sort_sids_by_position(sid2metadata)
        # sids_sorted_jonas = utils_lung.sort_slices_jonas(sid2metadata)
        # sid2position = utils_lung.slice_location_finder(sid2metadata)
        #
        # jonas_slicethick = []
        # for i in range(len(sids_sorted_jonas) - 1):
        #     s = np.abs(sid2position[sids_sorted_jonas[i + 1]] - sid2position[sids_sorted_jonas[i]])
        #     jonas_slicethick.append(s)
        #
        # img = np.stack([data_transforms.ct2HU(sid2data[sid], sid2metadata[sid]) for sid in sids_sorted])
        # xx = (jonas_slicethick[0],
        #       sid2metadata[sids_sorted[0]]['PixelSpacing'][0],
        #       sid2metadata[sids_sorted[0]]['PixelSpacing'][1])
        # pixel_spacing = np.asarray(xx)

        img, pixel_spacing = utils_lung.read_dicom_scan(p)
        mask = lung_segmentation.segment_HU_scan_ira(img)
        print(pid)
        print(pixel_spacing)
        print('====================================')

        img_out, transform_matrix, mask_out = data_transforms.transform_scan3d(img,
                                                                               pixel_spacing=pixel_spacing,
                                                                               p_transform=config().p_transform,
                                                                               p_transform_augment=None,
                                                                               lung_mask=mask)

        for i in range(100, img_out.shape[0], 5):
            plot_slice_3d_2(img_out, mask_out, 0, str(pid) + str(i), idx=np.array([i, 200, 200]))

        plot_slice_3d_2(img_out, mask_out, 0, pid, idx=np.array(img_out.shape) / 2)
        plot_slice_3d_2(mask_out, img_out, 0, pid, idx=np.array(img_out.shape) / 4)
        plot_slice_3d_2(mask_out, img_out, 0, pid, idx=np.array(img_out.shape) / 8)
def test1():
    image_dir = utils.get_dir_path('analysis', pathfinder.METADATA_PATH)
    image_dir = image_dir + '/test_luna/'
    utils.auto_make_dir(image_dir)

    id2zyxd = utils_lung.read_luna_annotations(pathfinder.LUNA_LABELS_PATH)

    luna_data_paths = utils_lung.get_patient_data_paths(
        pathfinder.LUNA_DATA_PATH)
    luna_data_paths = [p for p in luna_data_paths if '.mhd' in p]
    print len(luna_data_paths)
    print id2zyxd.keys()

    for k, p in enumerate(luna_data_paths):
        img, origin, pixel_spacing = utils_lung.read_mhd(p)
        img = data_transforms.hu2normHU(img)
        id = os.path.basename(p).replace('.mhd', '')

        for nodule_zyxd in id2zyxd.itervalues():
            zyx = np.array(nodule_zyxd[:3])
            voxel_coords = utils_lung.world2voxel(zyx, origin, pixel_spacing)
            diameter_mm = nodule_zyxd[-1]
            radius_px = diameter_mm / pixel_spacing[1] / 2.
            roi_radius = (radius_px, radius_px)
            slice = img[voxel_coords[0], :, :]
            slice_prev = img[voxel_coords[0] - 1, :, :]
            slice_next = img[voxel_coords[0] + 1, :, :]
            roi_center_yx = (voxel_coords[1], voxel_coords[2])
            mask = data_transforms.make_2d_mask(slice.shape,
                                                roi_center_yx,
                                                roi_radius,
                                                masked_value=0.1)
            plot_2d(slice, mask, id, image_dir)

            plot_2d_4(slice, slice_prev, slice_next, mask, id, image_dir)

            a = [{'center': roi_center_yx, 'diameter_mm': diameter_mm}]
            p_transform = {
                'patch_size': (256, 256),
                'mm_patch_size': (360, 360)
            }
            slice_patch, mask_patch = data_transforms.luna_transform_slice(
                slice, a, pixel_spacing[1:], p_transform, None)
            plot_2d(slice_patch, mask_patch, id, image_dir)
def test1():
    image_dir = utils.get_dir_path('analysis', pathfinder.METADATA_PATH)
    image_dir = image_dir + '/test_luna/'
    utils.auto_make_dir(image_dir)

    # sys.stdout = logger.Logger(image_dir + '/test_luna.log')
    # sys.stderr = sys.stdout

    id2zyxd = utils_lung.read_luna_annotations(pathfinder.LUNA_LABELS_PATH)

    luna_data_paths = utils_lung.get_patient_data_paths(
        pathfinder.LUNA_DATA_PATH)
    luna_data_paths = [p for p in luna_data_paths if '.mhd' in p]
    print len(luna_data_paths)
    print id2zyxd.keys()

    for k, p in enumerate(luna_data_paths):
        img, origin, spacing = utils_lung.read_mhd(p)
        img = data_transforms.hu2normHU(img)
        id = os.path.basename(p).replace('.mhd', '')
        for roi in id2zyxd[id]:
            zyx = np.array(roi[:3])
            voxel_coords = utils_lung.world2voxel(zyx, origin, spacing)
            print spacing
            radius_mm = roi[-1] / 2.
            radius_px = radius_mm / spacing[1]
            print 'r in pixels =', radius_px
            # roi_radius = (32.5, 32.5)
            roi_radius = (radius_px, radius_px)
            slice = img[voxel_coords[0], :, :]
            roi_center_yx = (voxel_coords[1], voxel_coords[2])
            # print slice.shape, slice_resample.shape
            mask = make_circular_mask(slice.shape, roi_center_yx, roi_radius)
            plot_2d(slice, mask, id, image_dir)

            slice_mm, _ = resample(slice, spacing[1:])
            roi_center_mm = tuple(
                int(r * ps) for r, ps in zip(roi_center_yx, spacing[1:]))
            mask_mm = make_circular_mask(slice_mm.shape, roi_center_mm,
                                         (radius_mm, radius_mm))
            plot_2d(slice_mm, mask_mm, id, image_dir)
def test_luna3d():
    image_dir = utils.get_dir_path('analysis', pathfinder.METADATA_PATH)
    image_dir = image_dir + '/test_luna/'
    utils.auto_make_dir(image_dir)

    id2zyxd = utils_lung.read_luna_annotations(pathfinder.LUNA_LABELS_PATH)

    luna_data_paths = [
        'problem_patients/1.3.6.1.4.1.14519.5.2.1.6279.6001.877026508860018521147620598474.mhd'
    ]

    candidates = utils.load_pkl(
        'problem_patients/1.3.6.1.4.1.14519.5.2.1.6279.6001.877026508860018521147620598474.pkl'
    )

    candidates = candidates[:4]
    print candidates
    print '--------------'
    print id2zyxd[
        '1.3.6.1.4.1.14519.5.2.1.6279.6001.877026508860018521147620598474']

    for k, p in enumerate(luna_data_paths):
        id = os.path.basename(p).replace('.mhd', '')
        print id
        img, origin, pixel_spacing = utils_lung.read_mhd(p)
        lung_mask = lung_segmentation.segment_HU_scan_elias(img)
        x, annotations_tf, tf_matrix, lung_mask_out = data_transforms.transform_scan3d(
            data=img,
            pixel_spacing=pixel_spacing,
            p_transform=p_transform,
            luna_annotations=candidates,
            p_transform_augment=None,
            luna_origin=origin,
            lung_mask=lung_mask,
            world_coord_system=False)

        for zyxd in annotations_tf:
            plot_slice_3d_2(x, lung_mask_out, 0, id, img_dir='./', idx=zyxd)
            plot_slice_3d_2(x, lung_mask_out, 1, id, img_dir='./', idx=zyxd)
            plot_slice_3d_2(x, lung_mask_out, 2, id, img_dir='./', idx=zyxd)
Ejemplo n.º 15
0
def test1():
    image_dir = utils.get_dir_path('analysis', pathfinder.METADATA_PATH)
    image_dir = image_dir + '/test_luna/'
    utils.auto_make_dir(image_dir)

    # sys.stdout = logger.Logger(image_dir + '/test_luna.log')
    # sys.stderr = sys.stdout

    id2zyxd = utils_lung.read_luna_annotations(pathfinder.LUNA_LABELS_PATH)

    luna_data_paths = utils_lung.get_patient_data_paths(pathfinder.LUNA_DATA_PATH)
    luna_data_paths = [p for p in luna_data_paths if '.mhd' in p]
    print len(luna_data_paths)
    print id2zyxd.keys()

    for k, p in enumerate(luna_data_paths):
        img, origin, spacing = utils_lung.read_mhd(p)
        img = data_transforms.hu2normHU(img)
        id = os.path.basename(p).replace('.mhd', '')
        for roi in id2zyxd[id]:
            zyx = np.array(roi[:3])
            voxel_coords = utils_lung.world2voxel(zyx, origin, spacing)
            print spacing
            radius_mm = roi[-1] / 2.
            radius_px = radius_mm / spacing[1]
            print 'r in pixels =', radius_px
            # roi_radius = (32.5, 32.5)
            roi_radius = (radius_px, radius_px)
            slice = img[voxel_coords[0], :, :]
            roi_center_yx = (voxel_coords[1], voxel_coords[2])
            # print slice.shape, slice_resample.shape
            mask = make_circular_mask(slice.shape, roi_center_yx, roi_radius)
            plot_2d(slice, mask, id, image_dir)

            slice_mm, _ = resample(slice, spacing[1:])
            roi_center_mm = tuple(int(r * ps) for r, ps in zip(roi_center_yx, spacing[1:]))
            mask_mm = make_circular_mask(slice_mm.shape, roi_center_mm, (radius_mm, radius_mm))
            plot_2d(slice_mm, mask_mm, id, image_dir)
Ejemplo n.º 16
0
def test1():
    image_dir = utils.get_dir_path('analysis', pathfinder.METADATA_PATH)
    image_dir = image_dir + '/test_luna/'
    utils.auto_make_dir(image_dir)

    id2zyxd = utils_lung.read_luna_annotations(pathfinder.LUNA_LABELS_PATH)

    luna_data_paths = utils_lung.get_patient_data_paths(pathfinder.LUNA_DATA_PATH)
    luna_data_paths = [p for p in luna_data_paths if '.mhd' in p]
    print len(luna_data_paths)
    print id2zyxd.keys()

    for k, p in enumerate(luna_data_paths):
        img, origin, pixel_spacing = utils_lung.read_mhd(p)
        img = data_transforms.hu2normHU(img)
        id = os.path.basename(p).replace('.mhd', '')

        for nodule_zyxd in id2zyxd.itervalues():
            zyx = np.array(nodule_zyxd[:3])
            voxel_coords = utils_lung.world2voxel(zyx, origin, pixel_spacing)
            diameter_mm = nodule_zyxd[-1]
            radius_px = diameter_mm / pixel_spacing[1] / 2.
            roi_radius = (radius_px, radius_px)
            slice = img[voxel_coords[0], :, :]
            slice_prev = img[voxel_coords[0] - 1, :, :]
            slice_next = img[voxel_coords[0] + 1, :, :]
            roi_center_yx = (voxel_coords[1], voxel_coords[2])
            mask = data_transforms.make_2d_mask(slice.shape, roi_center_yx, roi_radius, masked_value=0.1)
            plot_2d(slice, mask, id, image_dir)

            plot_2d_4(slice, slice_prev, slice_next, mask, id, image_dir)

            a = [{'center': roi_center_yx, 'diameter_mm': diameter_mm}]
            p_transform = {'patch_size': (256, 256),
                           'mm_patch_size': (360, 360)}
            slice_patch, mask_patch = data_transforms.luna_transform_slice(slice, a, pixel_spacing[1:],
                                                                           p_transform, None)
            plot_2d(slice_patch, mask_patch, id, image_dir)
Ejemplo n.º 17
0
def test_luna_patches_3d():
    image_dir = utils.get_dir_path('analysis', pathfinder.METADATA_PATH)
    image_dir = image_dir + '/test_luna/'
    utils.auto_make_dir(image_dir)

    id2zyxd = utils_lung.read_luna_annotations(pathfinder.LUNA_LABELS_PATH)

    luna_data_paths = utils_lung.get_patient_data_paths(
        pathfinder.LUNA_DATA_PATH)
    luna_data_paths = [p for p in luna_data_paths if '.mhd' in p]

    # pid = '1.3.6.1.4.1.14519.5.2.1.6279.6001.138080888843357047811238713686'
    # luna_data_paths = [pathfinder.LUNA_DATA_PATH + '/%s.mhd' % pid]
    for k, p in enumerate(luna_data_paths):
        img, origin, pixel_spacing = utils_lung.read_mhd(p)
        # img = data_transforms.hu2normHU(img)
        id = os.path.basename(p).replace('.mhd', '')
        print(id)

        annotations = id2zyxd[id]
        print(annotations)
        for zyxd in annotations:
            img_out, mask = config().data_prep_function_train(
                img,
                pixel_spacing=pixel_spacing,
                p_transform=config().p_transform,
                p_transform_augment=config().p_transform_augment,
                patch_center=zyxd,
                luna_annotations=annotations,
                luna_origin=origin)
            try:
                plot_slice_3d_2(img_out, mask, 0, id)
                plot_slice_3d_2(img_out, mask, 1, id)
                plot_slice_3d_2(img_out, mask, 2, id)
            except:
                pass
        print('------------------------------------------')
Ejemplo n.º 18
0
def test_luna3d():
    image_dir = utils.get_dir_path('analysis', pathfinder.METADATA_PATH)
    image_dir = image_dir + '/test_luna/'
    utils.auto_make_dir(image_dir)

    id2zyxd = utils_lung.read_luna_annotations(pathfinder.LUNA_LABELS_PATH)

    luna_data_paths = [
        'problem_patients/1.3.6.1.4.1.14519.5.2.1.6279.6001.877026508860018521147620598474.mhd']

    candidates = utils.load_pkl(
        'problem_patients/1.3.6.1.4.1.14519.5.2.1.6279.6001.877026508860018521147620598474.pkl')

    candidates = candidates[:4]
    print candidates
    print '--------------'
    print id2zyxd['1.3.6.1.4.1.14519.5.2.1.6279.6001.877026508860018521147620598474']

    for k, p in enumerate(luna_data_paths):
        id = os.path.basename(p).replace('.mhd', '')
        print id
        img, origin, pixel_spacing = utils_lung.read_mhd(p)
        lung_mask = lung_segmentation.segment_HU_scan_elias(img)
        x, annotations_tf, tf_matrix, lung_mask_out = data_transforms.transform_scan3d(data=img,
                                                                                       pixel_spacing=pixel_spacing,
                                                                                       p_transform=p_transform,
                                                                                       luna_annotations=candidates,
                                                                                       p_transform_augment=None,
                                                                                       luna_origin=origin,
                                                                                       lung_mask=lung_mask,
                                                                                       world_coord_system=False)

        for zyxd in annotations_tf:
            plot_slice_3d_2(x, lung_mask_out, 0, id, img_dir='./', idx=zyxd)
            plot_slice_3d_2(x, lung_mask_out, 1, id, img_dir='./', idx=zyxd)
            plot_slice_3d_2(x, lung_mask_out, 2, id, img_dir='./', idx=zyxd)
Ejemplo n.º 19
0
# metadata
metadata_dir = utils.get_dir_path('models', pathfinder.METADATA_PATH)
metadata_path = utils.find_model_metadata(metadata_dir, config_name)

metadata = utils.load_pkl(metadata_path)
expid = metadata['experiment_id']

# logs
logs_dir = utils.get_dir_path('logs', pathfinder.METADATA_PATH)
sys.stdout = logger.Logger(logs_dir + '/%s-test.log' % expid)
sys.stderr = sys.stdout

# predictions path
predictions_dir = utils.get_dir_path('model-predictions', pathfinder.METADATA_PATH)
outputs_path = predictions_dir + '/' + expid
utils.auto_make_dir(outputs_path)

print('Build model')
model = config().build_model()
all_layers = nn.layers.get_all_layers(model.l_out)
all_params = nn.layers.get_all_params(model.l_out)
num_params = nn.layers.count_params(model.l_out)
print('  number of parameters: %d' % num_params)
print(string.ljust('  layer output shapes:', 36),)
print(string.ljust('#params:', 10),)
print('output shape:')
for layer in all_layers:
    name = string.ljust(layer.__class__.__name__, 32)
    num_param = sum([np.prod(p.get_value().shape) for p in layer.get_params()])
    num_param = string.ljust(num_param.__str__(), 10)
    print('    %s %s %s' % (name, num_param, layer.output_shape))
Ejemplo n.º 20
0
    utils.save_pkl(blobs, outputs_path + '/%s.pkl' % pid)


jobs = []
theano.config.warn_float64 = 'raise'

if len(sys.argv) < 2:
    sys.exit("Usage: test_luna_scan.py <configuration_name>")

config_name = sys.argv[1]
set_configuration('configs_seg_scan', config_name)

# predictions path
predictions_dir = utils.get_dir_path('model-predictions', pathfinder.METADATA_PATH)
outputs_path = predictions_dir + '/%s' % config_name
utils.auto_make_dir(outputs_path)

# logs
logs_dir = utils.get_dir_path('logs', pathfinder.METADATA_PATH)
sys.stdout = logger.Logger(logs_dir + '/%s.log' % config_name)
sys.stderr = sys.stdout

# builds model and sets its parameters
model = config().build_model()

x_shared = nn.utils.shared_empty(dim=len(model.l_in.shape))
idx_z = T.lscalar('idx_z')
idx_y = T.lscalar('idx_y')
idx_x = T.lscalar('idx_x')

window_size = config().window_size
Ejemplo n.º 21
0
def test_dsb3d():
    image_dir = utils.get_dir_path('analysis', pathfinder.METADATA_PATH)
    image_dir = image_dir + '/test_luna/'
    utils.auto_make_dir(image_dir)

    #id2zyxd = utils_lung.read_luna_annotations(pathfinder.LUNA_LABELS_PATH)

    # dsb_data_paths = ['problem_patients/154a79706bcecd0402b913d4bee9eed7/', 
    #                     'problem_patients/122c5c959fd98036c9972eec2062dc59/', 
    #                     'problem_patients/0121c2845f2b7df060945b072b2515d7/',
    #                     'problem_patients/081f4a90f24ac33c14b61b97969b7f81/',
    #                     'problem_patients/0030a160d58723ff36d73f41b170ec21/',
    #                     'problem_patients/19f3b4dea7af5d6e13acb472d6af23d8/',
    #                     'problem_patients/17ffaa3e8b53cc48e97fc6b87114e6dd/',
    #                     'problem_patients/15aa585fb2d3018b295df8619f2d1cf7/',
    #                     'problem_patients/14c534e0b7c3176d9106c6215d0aa8c6/',
    #                     'problem_patients/09b1c678fc1009d84a038cd879be4198/',
    #                     'problem_patients/0f5ab1976a1b1ef1c2eb1d340b0ce9c4/',
    #                     'problem_patients/0c98fcb55e3f36d0c2b6507f62f4c5f1/',
    #                     'problem_patients/0c9d8314f9c69840e25febabb1229fa4/']


    # dsb_data_paths = [  'problem_patients/19f3b4dea7af5d6e13acb472d6af23d8/',
    #                     'problem_patients/081f4a90f24ac33c14b61b97969b7f81/',
    #                     'problem_patients/15aa585fb2d3018b295df8619f2d1cf7/',
    #                     'problem_patients/14c534e0b7c3176d9106c6215d0aa8c6/'
    #                     ]


    # new_dsb_data_paths = [  'problem_patients/00cba091fa4ad62cc3200a657aeb957e/',
    #                     'problem_patients/01de8323fa065a8963533c4a86f2f6c1/',
    #                     'problem_patients/02801e3bbcc6966cb115a962012c35df/',
    #                     'problem_patients/07abb7bec548d1c0ccef088ce934e517/',
    #                     'problem_patients/07bca4290a2530091ce1d5f200d9d526/',
    #                     'problem_patients/0ff552aa083ecfabaf1cfd65b0a8e674/',
    #                     'problem_patients/11616de262f844e6542d3c65d9238b6e/',
    #                     'problem_patients/11fe5426ef497bc490b9f1465f1fb25/',
    #                     'problem_patients/122c5c959fd98036c9972eec2062dc59/',
    #                     'problem_patients/14afefc82d992018c485949285d20c03/',
    #                     'problem_patients/14c534e0b7c3176d9106c6215d0aa8c6/',
    #                     'problem_patients/154a79706bcecd0402b913d4bee9eed7/',
    #                     'problem_patients/15aa585fb2d3018b295df8619f2d1cf7/',
    #                     'problem_patients/174a9fc87f54d6def3730954fbafc99d/',
    #                     'problem_patients/17f5ae9fa49c4e47624f344d29bd03eb/',
    #                     'problem_patients/17ffaa3e8b53cc48e97fc6b87114e6dd/',
    #                     'problem_patients/197e035d3aed52b5a2a0de3ee4d5fcea/',
    #                     'problem_patients/199ff05d08ade6e298d37cc542bc3565/',
    #                     'problem_patients/19f3b4dea7af5d6e13acb472d6af23d8/',
    #                     'problem_patients/1b7ca8dad5c36feb0a6abf8079173e22/',
    #                     'problem_patients/1edf5480bf676f8342a7d516bab58fa0/',
    #                     'problem_patients/20c73e37fc89e007ae5b242480830860/',
    #                     'problem_patients/21bdacdcdb87bf401f34d5d582247c77/',
    #                     ]

    dsb_data_paths = [  'problem_patients/51fbac477a3639f983904fc4d42b8c15/'
                        ]

    # candidates = utils.load_pkl(
    #     'problem_patients/11616de262f844e6542d3c65d9238b6e.pkl')

    # candidates = candidates[:4]
    # print(candidates)
    # print('--------------')

    for k, p in enumerate(dsb_data_paths):
        pid = p.split('/')[-2]
        print(pid)
        img, pixel_spacing = utils_lung.read_dicom_scan(p)
        lung_mask = lung_segmentation.segment_HU_scan_elias(img, pid=pid, plot=True)
Ejemplo n.º 22
0
def test_dsb3d():
    image_dir = utils.get_dir_path('analysis', pathfinder.METADATA_PATH)
    image_dir = image_dir + '/test_luna/'
    utils.auto_make_dir(image_dir)

    #id2zyxd = utils_lung.read_luna_annotations(pathfinder.LUNA_LABELS_PATH)

    # dsb_data_paths = ['problem_patients/154a79706bcecd0402b913d4bee9eed7/', 
    #                     'problem_patients/122c5c959fd98036c9972eec2062dc59/', 
    #                     'problem_patients/0121c2845f2b7df060945b072b2515d7/',
    #                     'problem_patients/081f4a90f24ac33c14b61b97969b7f81/',
    #                     'problem_patients/0030a160d58723ff36d73f41b170ec21/',
    #                     'problem_patients/19f3b4dea7af5d6e13acb472d6af23d8/',
    #                     'problem_patients/17ffaa3e8b53cc48e97fc6b87114e6dd/',
    #                     'problem_patients/15aa585fb2d3018b295df8619f2d1cf7/',
    #                     'problem_patients/14c534e0b7c3176d9106c6215d0aa8c6/',
    #                     'problem_patients/09b1c678fc1009d84a038cd879be4198/',
    #                     'problem_patients/0f5ab1976a1b1ef1c2eb1d340b0ce9c4/',
    #                     'problem_patients/0c98fcb55e3f36d0c2b6507f62f4c5f1/',
    #                     'problem_patients/0c9d8314f9c69840e25febabb1229fa4/']


    # dsb_data_paths = [  'problem_patients/19f3b4dea7af5d6e13acb472d6af23d8/',
    #                     'problem_patients/081f4a90f24ac33c14b61b97969b7f81/',
    #                     'problem_patients/15aa585fb2d3018b295df8619f2d1cf7/',
    #                     'problem_patients/14c534e0b7c3176d9106c6215d0aa8c6/'
    #                     ]


    # new_dsb_data_paths = [  'problem_patients/00cba091fa4ad62cc3200a657aeb957e/',
    #                     'problem_patients/01de8323fa065a8963533c4a86f2f6c1/',
    #                     'problem_patients/02801e3bbcc6966cb115a962012c35df/',
    #                     'problem_patients/07abb7bec548d1c0ccef088ce934e517/',
    #                     'problem_patients/07bca4290a2530091ce1d5f200d9d526/',
    #                     'problem_patients/0ff552aa083ecfabaf1cfd65b0a8e674/',
    #                     'problem_patients/11616de262f844e6542d3c65d9238b6e/',
    #                     'problem_patients/11fe5426ef497bc490b9f1465f1fb25/',
    #                     'problem_patients/122c5c959fd98036c9972eec2062dc59/',
    #                     'problem_patients/14afefc82d992018c485949285d20c03/',
    #                     'problem_patients/14c534e0b7c3176d9106c6215d0aa8c6/',
    #                     'problem_patients/154a79706bcecd0402b913d4bee9eed7/',
    #                     'problem_patients/15aa585fb2d3018b295df8619f2d1cf7/',
    #                     'problem_patients/174a9fc87f54d6def3730954fbafc99d/',
    #                     'problem_patients/17f5ae9fa49c4e47624f344d29bd03eb/',
    #                     'problem_patients/17ffaa3e8b53cc48e97fc6b87114e6dd/',
    #                     'problem_patients/197e035d3aed52b5a2a0de3ee4d5fcea/',
    #                     'problem_patients/199ff05d08ade6e298d37cc542bc3565/',
    #                     'problem_patients/19f3b4dea7af5d6e13acb472d6af23d8/',
    #                     'problem_patients/1b7ca8dad5c36feb0a6abf8079173e22/',
    #                     'problem_patients/1edf5480bf676f8342a7d516bab58fa0/',
    #                     'problem_patients/20c73e37fc89e007ae5b242480830860/',
    #                     'problem_patients/21bdacdcdb87bf401f34d5d582247c77/',
    #                     ]

    dsb_data_paths = [  'problem_patients/51fbac477a3639f983904fc4d42b8c15/'
                        ]

    # candidates = utils.load_pkl(
    #     'problem_patients/11616de262f844e6542d3c65d9238b6e.pkl')

    # candidates = candidates[:4]
    # print candidates
    # print '--------------'

    for k, p in enumerate(dsb_data_paths):
        pid = p.split('/')[-2]
        print pid
        img, pixel_spacing = utils_lung.read_dicom_scan(p)
        lung_mask = lung_segmentation.segment_HU_scan_elias(img, pid=pid, plot=True)