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
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()
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)
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
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
# 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)
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)