fast-mri/scripts/17.plot_paper_adc_diff.py

92 lines
3.2 KiB
Python
Executable File

import os
from os import path
import SimpleITK as sitk
from sfransen.DWI_exp import preprocess
import numpy as np
import matplotlib.pyplot as plt
SERIES = ['adccalc2','adccalc','adccalc3']
TARGET_SPACING = (0.5, 0.5, 3)
INPUT_SHAPE = (192, 192, 24, len(SERIES))
IMAGE_SHAPE = INPUT_SHAPE[:3]
DATA_DIR = "./../data/Nijmegen paths/"
########## test with old method #############
image_paths = {}
for s in SERIES:
with open(path.join(DATA_DIR, f"{s}.txt"), 'r') as f:
image_paths[s] = [l.strip() for l in f.readlines()]
with open(path.join(DATA_DIR, f"seg.txt"), 'r') as f:
seg_paths = [l.strip() for l in f.readlines()]
num_images = len(seg_paths)
img_idx = 371
images = []
images_list = []
segmentations = []
# Read and preprocess each of the paths for each series, and the segmentations.
# print('images number',[TEST_INDEX[img_idx]])
img_s = {f'{s}': sitk.ReadImage(image_paths[s][img_idx], sitk.sitkFloat32) for s in SERIES}
seg_s = sitk.ReadImage(seg_paths[img_idx], sitk.sitkFloat32)
img_n, seg_n = preprocess(img_s, seg_s,
shape=IMAGE_SHAPE, spacing=TARGET_SPACING)
for seq in img_n:
images.append(img_n[f'{seq}'])
images_list.append(images)
images = []
segmentations.append(seg_n)
images_list = np.squeeze(np.transpose(images_list, (0, 2, 3, 4, 1)))
print(np.shape(images_list))
SLIDE = 10
diff1 = images_list[:,:,SLIDE,0]-images_list[:,:,SLIDE,1]
diff2 = images_list[:,:,SLIDE,0]-images_list[:,:,SLIDE,2]
diff3 = images_list[:,:,SLIDE,1]-images_list[:,:,SLIDE,2]
fig, axes = plt.subplots(2,len(SERIES))
fig.suptitle('ADC map differences', fontsize=16)
maxx_2 = np.amax(images_list[:,:,SLIDE,:])
minn_2 = np.amin(images_list[:,:,SLIDE,:])
TITLES = ['$1) ADC_{b50-b400}$','$2) ADC_{b50-b800}$','$3) ADC_{b50-b400-b800}$']
for indx in range(len(SERIES)):
print(indx)
im = axes[0,indx].imshow(np.transpose(images_list[:,:,SLIDE,indx]),cmap='gray',vmin=minn_2,vmax=maxx_2)
axes[0,indx].set_title(TITLES[indx])
axes[0,indx].set_axis_off()
axes[0,indx].set_axis_off()
maxx_2 = np.amax(images_list[:,:,SLIDE,:])
minn_2 = np.amin(images_list[:,:,SLIDE,:])
# print('>>>>>>',minn_2)
cbar_ax = fig.add_axes([0.85, 0.57, 0.02, 0.25])
cbar2 = fig.colorbar(im, cax=cbar_ax, ticks=[minn_2+0.001, maxx_2-0.001])
cbar2.ax.set_yticklabels([f'0', f'{1.3}'])
maxx = np.amax([np.amax(diff1), np.amax(diff2), np.amax(diff3)]) *0.99
minn = np.amin([np.amin(diff1), np.amin(diff2), np.amin(diff3)])
im = axes[1,0].imshow(np.transpose(diff1),cmap='gray',vmax = maxx,vmin=minn)
axes[1,0].set_axis_off()
axes[1,0].set_axis_off()
axes[1,0].set_title('Protocol 1-2')
im = axes[1,1].imshow(np.transpose(diff2),cmap='gray',vmax = maxx,vmin=minn)
axes[1,1].set_axis_off()
axes[1,1].set_axis_off()
axes[1,1].set_title('Protocol 1-3')
im = axes[1,2].imshow(np.transpose(diff3),cmap='gray',vmax = maxx,vmin=minn)
axes[1,2].set_axis_off()
axes[1,2].set_axis_off()
axes[1,2].set_title('Protocol 2-3')
fig.subplots_adjust(right=0.8)
cbar_ax = fig.add_axes([0.85, 0.15, 0.02, 0.25])
cbar = fig.colorbar(im, cax=cbar_ax, ticks=[minn, 0, maxx])
cbar.ax.set_yticklabels([f'{round(minn,1)}','0', f'{round(maxx,1)}'])
plt.savefig(f'./../train_output/adc_diff.png', dpi=300)