Ejemplo n.º 1
0
def Run(case_folder, case_name):
    input_list = []
    t2, dwi, adc, prostate, pca = LoadData(case_folder)
    _, _, pca = KeepLargest(pca)
    slice = SelectMaxRoiSlice(pca)

    # slice_list_pca = GetROISlice(pca)
    # slice_list_pro = GetROISlice(prostate)
    # slice_list = [slice for slice in slice_list_pca if slice in slice_list_pro]
    # print(slice_list)
    # feature_clinical = r'/home/zhangyihong/Documents/ProstateECE/SUH_Dwi1500/FiveClinical.csv'
    # feature_clinical = r'/home/zhangyihong/Documents/ProstateECE/NPYNoDivide/FiveClinicalbGS.csv'
    # df = pd.read_csv(feature_clinical, index_col='case')
    # info = df.loc[case_name]
    # feature_list = [info['age'], info['psa'], info['bGs'], info['core'], info['b-NI']]
    # for slice in slice_list:
    data_slice_list = []
    # center = GetRoiCenterBefore(pca[slice, ...])
    center = GetRoiCenterBefore(pca[..., slice])
    data_slice_list.append(Process(t2, slice, center))
    data_slice_list.append(Process(adc, slice, center))
    data_slice_list.append(Process(dwi, slice, center))
    data_slice_list.append(Process(prostate, slice, center, is_roi=True))
    data_slice_list.append(Process(pca, slice, center, is_roi=True))
    # data_slice_list.append(np.array(feature_list))
    input_list.append(data_slice_list)
    return data_slice_list
Ejemplo n.º 2
0
def demo():
    pred_list, label_list = [], []
    for case in sorted(os.listdir(adc_folder)):
        # print(case)
        # get max pred slice
        case_path = os.path.join(H5_path, case[:case.index('_slice')] + '.h5')
        slice_preds, label = LoadH5(case_path,
                                    tag=['prediction', 'label'],
                                    data_type=[np.float32, np.uint8])
        slice_preds = [1 - pred for pred in slice_preds]
        index = slice_preds.index(max(slice_preds))

        # get data and slice
        t2, dwi, adc, prostate, pca = LoadData(
            os.path.join(data_root, case[:case.index('_slice')]))
        _, _, pca = KeepLargest(pca)
        slice_list_pca = GetROISlice(pca)
        slice_list_pro = GetROISlice(prostate)
        slice_list = [
            slice for slice in slice_list_pca if slice in slice_list_pro
        ]

        # for slice in slice_list:
        #     center, _ = GetRoiCenter(pca[slice, ...])
        #     t2_slice_3d = Process(t2, slice, center)
        #     adc_slice_3d = Process(adc, slice, center)
        #     dwi_slice_3d = Process(dwi, slice, center)
        #     pro_slice_3d = Process(prostate, slice, center, is_roi=True)
        #     pca_slice_3d = Process(pca, slice, center, is_roi=True)
        #     # data_slice_list.append(np.array(feature_list))

        # get npy slice
        npy_slice = int(case[case.index('_slice') + 6:case.index('.npy')])
        t2_slice = np.load(os.path.join(t2_folder, case))
        adc_slice = np.load(os.path.join(adc_folder, case))
        dwi_slice = np.load(os.path.join(dwi_folder, case))
        pro_slice = np.load(os.path.join(pro_folder, case))
        pca_slice = np.load(os.path.join(pca_folder, case))

        center = GetRoiCenterBefore(pca[npy_slice, ...])
        t2_slice_3d = Process(t2, npy_slice, center)
        adc_slice_3d = Process(adc, npy_slice, center)
        dwi_slice_3d = Process(dwi, npy_slice, center)
        pro_slice_3d = Process(prostate, npy_slice, center, is_roi=True)
        pca_slice_3d = Process(pca, npy_slice, center, is_roi=True)

        plt.subplot(131)
        plt.imshow(np.squeeze(t2[npy_slice, ...]), cmap='gray')
        plt.contour(np.squeeze(pca[npy_slice, ...]), colors='r')
        plt.scatter(center[1], center[0], marker='o')
        plt.subplot(132)
        plt.imshow(np.squeeze(t2_slice), cmap='gray')
        plt.scatter(140, 140, marker='o')
        plt.subplot(133)
        plt.imshow(np.squeeze(t2_slice_3d), cmap='gray')
        plt.scatter(140, 140, marker='o')
        plt.show()
Ejemplo n.º 3
0
def CheckROINum(data_folder):
    roi_folder = os.path.join(data_folder, 'cancer_slice')
    ct_folder = os.path.join(data_folder, 'ct_slice')
    gland_folder = os.path.join(data_folder, 'kindey_slice')
    for case in os.listdir(roi_folder):
        roi = np.squeeze(np.load(os.path.join(roi_folder, case)))
        # gland = np.squeeze(np.load(os.path.join(gland_folder, case)))
        # ct = np.squeeze(np.load(os.path.join(ct_folder, case)))
        _, num, new_roi = KeepLargest(roi)
        if num > 1:
            print(case)
Ejemplo n.º 4
0
def WriteH5(data_folder, save_path):
    case_list = os.listdir(data_folder)
    crop_shape = (1, 280, 280)

    for case in case_list:
        # path
        case_path = os.path.join(data_folder, case)
        t2_path = os.path.join(case_path, 't2.nii')
        roi_path = os.path.join(case_path, 'roi.nii')
        dwi_path = os.path.join(case_path, 'dwi_Reg.nii')
        adc_path = os.path.join(case_path, 'adc_Reg.nii')
        ece = info.loc[case, 'pECE']

        if ece == 0:
            ece = np.array([0, 1], dtype=np.uint8)
        elif ece == 1:
            ece = np.array([1, 0], dtype=np.uint8)

        # Load data
        _, t2, _ = LoadNiiData(t2_path, dtype=np.float32)
        _, dwi, _ = LoadNiiData(dwi_path, dtype=np.float32)
        _, adc, _ = LoadNiiData(adc_path, dtype=np.float32)
        _, roi, _ = LoadNiiData(roi_path, dtype=np.uint8)

        _, _, new_roi = KeepLargest(roi)

        slice = SelectMaxRoiSlice(new_roi)

        center = GetRoiCenter(new_roi[slice, ...])

        t2_slice = CropT2Data(t2, crop_shape, slice, center=center)
        dwi_slice = CropT2Data(dwi, crop_shape, slice, center=center)
        adc_slice = CropT2Data(adc, crop_shape, slice, center=center)
        roi_slice = CropRoiData(new_roi, crop_shape, slice, center=center)

        t2_slice_3d = t2_slice[np.newaxis, ...]
        dwi_slice_3d = dwi_slice[np.newaxis, ...]
        adc_slice_3d = adc_slice[np.newaxis, ...]
        roi_slice_3d = roi_slice[np.newaxis, ...]

        dataname = case + '_slice' + str(slice) + '.h5'
        datapath = os.path.join(save_path, dataname)

        with h5py.File(datapath, 'w') as f:
            f['input_0'] = t2_slice_3d
            f['input_1'] = dwi_slice_3d
            f['input_2'] = adc_slice_3d
            f['output_0'] = roi_slice_3d
            f['output_1'] = ece
Ejemplo n.º 5
0
def CropKeepLargest():
    data_folder = r'/home/zhangyihong/Documents/Kindey901/Kindey_npy'
    roi_folder = os.path.join(data_folder, 'cancer_slice')
    gland_folder = os.path.join(data_folder, 'kindey_slice')
    ct_folder = os.path.join(data_folder, 'ct_slice')
    shape = (300, 300)
    for case in os.listdir(roi_folder):
        case = '601548_-_slice8.npy'
        ct = np.squeeze(np.load(os.path.join(ct_folder, case)))
        roi = np.squeeze(np.load(os.path.join(roi_folder, case)))
        gland = np.squeeze(np.load(os.path.join(gland_folder, case)))

        center, _ = GetRoiCenter(roi)

        roi_new, _ = ExtractPatch(roi, patch_size=shape, center_point=center)
        gland_new, _ = ExtractPatch(gland,
                                    patch_size=shape,
                                    center_point=center)
        ct_new, _ = ExtractPatch(ct, patch_size=shape, center_point=center)

        _, _, gland_new = KeepLargest(gland_new)

        ct_slice_3d = ct_new[np.newaxis, ...]
        gland_slice_3d = gland_new[np.newaxis, ...]
        roi_slice_3d = roi_new[np.newaxis, ...]

        plt.subplot(121)
        plt.imshow(ct, cmap='gray')
        plt.contour(gland, colors='r')
        plt.contour(roi, colors='y')
        plt.scatter(x=center[1], y=center[0])
        plt.subplot(122)
        plt.imshow(ct_new, cmap='gray')
        plt.contour(gland_new, colors='r')
        plt.contour(roi_new, colors='y')
        plt.scatter(x=150, y=150)
        plt.show()

        np.save(os.path.join(ct_folder, case), ct_slice_3d)
        np.save(os.path.join(roi_folder, case), roi_slice_3d)
        np.save(os.path.join(gland_folder, case), gland_slice_3d)
        break
Ejemplo n.º 6
0
    # slice_pred = r'/home/zhangyihong/Documents/ProstateECE/Result/PAGNet_test.csv'
    slice_df = pd.read_csv(csv_path, index_col='case')
    pred_2d = slice_df.loc[case]['Pred']
    label_2d = slice_df.loc[case]['Label']
    return pred_2d, label_2d


def GetSliceList(case, folder, is_show=False):
    t2, _, _, prostate, pca = LoadData(os.path.join(folder, case))
    if is_show:
        Imshow3DArray(Normalize01(t2.transpose(1, 2, 0)),
                      roi=[
                          Normalize01(prostate.transpose(1, 2, 0)),
                          Normalize01(pca.transpose(1, 2, 0))
                      ])
    _, _, pca = KeepLargest(pca)
    slice_list_pca = GetROISlice(pca)
    slice_list_pro = GetROISlice(prostate)
    slice_list = [slice for slice in slice_list_pca if slice in slice_list_pro]
    return slice_list


def Compare(case):
    # get 2d
    slice_pred = r'/home/zhangyihong/Documents/ProstateECE/Result/PAGNet_suh.csv'
    pred_2d, label_2d = Get2DPred(case, slice_pred)

    # get 3d
    preds, label_3d = Get3DPred(case, H5_path, if_negative=True)
    slice_list = GetSliceList(case, data_root)
Ejemplo n.º 7
0
        distance_save_path = os.path.join(save_folder, 'DistanceMap')

        # Load data
        _, t2, _ = LoadImage(t2_path, dtype=np.float32)
        _, dwi, _ = LoadImage(dwi_path, dtype=np.float32)
        _, adc, _ = LoadImage(adc_path, dtype=np.float32)
        _, pca, _ = LoadImage(roi_path, dtype=np.uint8)
        _, prostate, _ = LoadImage(prostate_path, dtype=np.uint8)

        t2 = t2.transpose((2, 0, 1))
        dwi = dwi.transpose((2, 0, 1))
        adc = adc.transpose((2, 0, 1))
        pca = pca.transpose((2, 0, 1))
        prostate = prostate.transpose((2, 0, 1))

        _, _, new_roi = KeepLargest(pca)

        slice_list_pca = GetROISlice(pca)
        slice_list_pro = GetROISlice(prostate)
        slice_list = [slice for slice in slice_list_pca if slice in slice_list_pro]
        slice_preds, label = Get3DPred(case, pred_path, if_negative=True)
        slice = slice_list[slice_preds.index(max(slice_preds))]

        center = GetRoiCenterBefore(new_roi[slice, ...])

        t2_slice = CropT2Data(t2, crop_shape, slice, center=center)
        dwi_slice = CropT2Data(dwi, crop_shape, slice, center=center)
        adc_slice = CropT2Data(adc, crop_shape, slice, center=center)
        roi_slice = CropRoiData(new_roi, crop_shape, slice, center=center)
        prostate_slice = CropRoiData(prostate, crop_shape, slice, center=center)
        distance_map = FindRegion(prostate_slice, roi_slice)